\documentclass{beamer}
\usepackage{ngerman}
\usepackage{wasysym}
\usepackage[utf8]{inputenc}
\usetheme{IEEE}
%\usefonttheme{structurebold}
%\usecolortheme{whale}
\setbeamercovered{dynamic}

\usepackage{skak}
\usepackage{listings}
\lstloadlanguages{Java,TeX}
\usepackage{bytefield}
\usepackage[boxed]{algorithm2e}
\usepackage{printsudoku}
\usepackage{hyperref}
\usepackage{clock}
\usepackage{lipsum}
\usepackage{qtree}
\usepackage{verse}

\hypersetup{colorlinks=false, linkcolor=black, urlcolor=blue}

\AtBeginSection[]{

\frame{
	\frametitle{Inhalt}
	\tableofcontents[currentsection, subsectionstyle=show/show/hide, sectionstyle=show/hide]
}

}
\begin{document}

\title{Der \LaTeX-Klassen-Zoo}
\author{Severin Neumann}
\institute[IEEE]{Uni Passau, IEEE Student Branch}
\date{\today}

\frame{\titlepage}

\begin{frame}{Vorwort}
	Im folgenden möchte ich euch eine Auswahl von \LaTeX{}-Klassen (oder Paketen, wie man es nennen mag)
	vorstellen. Diese ist jedoch bei weitem nicht vollständig, jedoch habe ich versucht vor allem ein paar
	wichtige und ein paar interessante Möglichkeiten hier aufzunehmen.

	Die vorgenommene Gliederung ist ebenfalls von mir gestaltet und basiert nicht auf irgendeiner vorgegebenen
	Struktur.

	Und jetzt geht's los!
\end{frame}

\begin{frame}{Inhalt}
\tableofcontents[subsectionstyle=hide]
\end{frame}

\section{Nützliches}
\subsection{Hyperref}
\begin{frame}{hyperref}
	Mit Hyperref kann man (insbesondere in PDF-Dokumenten) Verweise erzeugen. Zum einen kann man Verweise auf
	andere Inhalte im Text machen, man kann aber auch Verweise auf eine beliebige andere URL machen.

	\begin{example}
		\textbackslash{}href\{http://ieee.students.uni-passau.de\}\{Homepage der IEEE Student Branch Passau\}: \\
		\href{http://ieee.students.uni-passau.de}{Homepage der IEEE Student Branch Passau} \\
		\textbackslash{}href\{nextPage\}\{Klick mich!\} \\
		\hyperlink{nextPage}{Klick mich!} \\
	\end{example}

\end{frame}

\begin{frame}{hyperref}
	\alert{\hypertarget{nextPage}{\textbackslash{}hypertarget\{nextPage\}\{Hier ging unser Verweis hin\}}} \\
	\vspace{0.3cm}
	Wichtig ist auch der Befehl \textbackslash{}hypersetup\{\ldots\}. Diesen Befehl fügt man am Besten
	vor dem Dokumentbeginn ein und setzt folgende Optionen:
	\begin{itemize}
		\item colorlinks = true $\|$ false
		\item linkcolor = black $\|$ red $\|$ green $\|$ \ldots
		\item urlcolor = black $\|$ red $\|$ green $\|$ \ldots
		\item ...
	\end{itemize}
\end{frame}

\subsection{Clock}
\begin{frame}{clock}
	Wenn ihr gerne Zeitpläne erstellt und wollt, dass diese eine analoge Uhr tragen, dann ist \textbf{clock} genau
	das richtige Paket für euch:

	\begin{example}
		\clocktime -- \textbackslash{}clocktime : Die Uhrzeit zu der das Dokument erstellt wurde
		\clock{13}{37} -- \textbackslash{}clock\{13\}\{37\} : Eine beliebige andere Zeit
	\end{example}
\end{frame}

\subsection{Lipsum}
\begin{frame}{lipsum}
	\lipsum[23]
	\vspace{0.3cm}
	\alert{Hups! Da ist ein Testtext stehen geblieben -- \textbackslash{}lipsum[23]}
\end{frame}

\subsection{Weitere}
\begin{frame}{Weitere}

Weitere nützliche Pakete sind \textbf{BiBTeX} oder \textbf{GlossTex}, diese Pakete werden aber nächste Woche
seperat angesprochen.

\end{frame}

\section{Informatik}
\subsection{Bytefield}
\begin{frame}[fragile]{Bytefield}

Das Package \textbf{bytefield} ermöglicht es Bytefeldbeschreibungen zu erzeugen:

\begin{center}
\begin{bytefield}{16}
  \bitheader{0,7,8,15} \\
  \wordgroupr{Header}
    \bitbox{4}{Tag} & \bitbox{12}{Mask} \\
    \bitbox{8}{Source} & \bitbox{8}{Destination}
  \endwordgroupr \\
  \wordgroupr{Data}
  \wordbox{3}{Data}\\
  \wordbox{1}{End}
  \endwordgroupr
\end{bytefield}
\end{center}

\end{frame}

\begin{frame}{Bytefield}

Aufbau des Bytefields:

\begin{itemize}
\item \textbackslash{}begin\{bytefield\}\{n\} - erzeugt ein \textit{n} Byte breites Bytefield
\item \textbackslash{}bitheader{\ldots} - erzeugt die Werte, die im Bitheader angezeigt werden
\item \textbackslash{}wordgroupr\{Name\} - öffnet eine Neue \textit{word}-Gruppe
\item \textbackslash{}endwordgroupr - schließt die \textit{word}-Gruppe
\item \textbackslash{}bitbox\{n\}\{Text\} - erzeugt ein \textit{n} Bit breites Feld
\item \textbackslash{}wordbox\{n\}\{Text\} - erzeugt ein \textit{n} Wörter hohes Feld
\item \textbackslash{}end\{bytefield\} - schließt das Bytefield
\end{itemize}

\end{frame}

\subsection{Pseudocode}
\begin{frame}[fragile]{Pseudocode}
	Es gibt eine ganze Menge von Paketen, die es ermöglichen Pseudocode zu setzen. An dieser Stelle
	stelle ich das Paket \textbf{algorithm2e} (mit der Option \textit{boxed}) vor.
	\vspace{0.3cm}
		\begin{algorithm}[H]
			\printsemicolon
			\KwData{$X:=0; Y:=100;$}
			\KwResult{$X:=100; Y:=0;$}
			\For{$a \in \{ 0,1,\ldots,100 \}$}{
				$X--$\;
				$Y++$\;
				\SetVline
				\uIf{$\Omega \cap \Delta = \emptyset$}
				{ $runXYZ(A,X,Y);$ }
				\Else{ \Return \textit{false}; }
			}
		\end{algorithm}
\end{frame}

\begin{frame}{Pseudocode}
	Aufbau des Algorithmus:
	\begin{itemize}
		\item \textbackslash{}begin\{algorithm\} - öffnet die Box für den Algorithmus
		\item \textbackslash{}KwData\{\ldots\} und \textbackslash{}KwResult\{\ldots\} erzeugen die Kurzbeschreibung
		\item Es gibt \textbackslash{}For, \textbackslash{}If, \ldots als Befehle in mehreren Ausführungen
		\item \textbackslash{}end\{algorithm\} - schließt die Box für den Algorithmus
	\end{itemize}
	\vspace{0.3cm}
	Algorithm2e ist ein sehr umfangreiches Paket, hat dafür aber auch eine gute Anleitung, mit der man sich schnell
	den Aufbau von Pseudocode erzeugen kann, den man bevorzugt.

\end{frame}

\begin{frame}{Listings}

Das Paket \textbf{listings} ermöglicht es Code direkt oder aus einer Datei einzubinden.
Mit \textbackslash{}lstset\{language=\textit{Sprache}\} kann man festlegen, um welche
Sprache es sich handelt, z.B. Java, C/C++, Python, TeX, XML, \ldots

\begin{example}
	\textbackslash{}begin\{lstlisting\} \\
		\vspace{0.3cm}
		\qquad{} /* Code */ \\
		\qquad{} \ldots \\
		\vspace{0.3cm}
	\textbackslash{}end\{lstlisting\} \\
\end{example}

\vspace{0.3cm}

\begin{example}
\textbackslash{}lstinputlisting[firstline=a,lastline=b]\{dateiname\}
\end{example}

\end{frame}

\begin{frame}[fragile]{Listings}

\begin{example}
\lstset{language=Java}
\begin{lstlisting}
System.out.println("Das ist ein ganz 
einfaches Beispiel");
\end{lstlisting}
\end{example}

\lstset{language=TeX}

\begin{example}
\lstinputlisting[lastline=3,firstnumber=0]{./praesentation.tex}
\end{example}

\end{frame}

\subsection{Bäume}

\begin{frame}[fragile]{synttree}

Mit dem Paket \textbf{qtree} lassen sich einfach Bäume erzeugen:

\begin{example}
	\textbackslash{}Tree [.Root A [.B [.C D ] \textbackslash{}qroof\{foo bar\}.E ] ]
	\[ \Tree [.Root A [.B [.C D ] \qroof{foo bar}.E ] ] \]
\end{example}

\end{frame}

\subsection{Weitere}
\begin{frame}{Da wären noch...}
	\begin{itemize}
		\item UML bzw. ER
		\item Karnaugh-Diagramme
		\item Komplexitätstheorie
		\item Petri-Netze
		\item Sequenzdiagramme
		\item ...
	\end{itemize}
\end{frame}


\section{Spiele}

\subsection{Schach}
\begin{frame}{Schach}

Für Schachspieler gibt es auch wieder mehrere Pakete. Ich möchte hier kurz \textbf{skak} vorstellen:

	\begin{example}
		\newgame \textbackslash{}newgame\\
		\textbackslash{}showboard
		\tinyboard \[\showboard \] 
	\end{example}

\end{frame}

\begin{frame}{Schach}

	\begin{example}
		\textbackslash{}mainline\{1. e4 e5\} \\
		\mainline{1. e4 e5} \\
		\textbackslash{}mainline\{2. Nf3 Bc5\} \\
		\mainline{2. Nf3 Bc5} \\
		\textbackslash{}showboard \\
		\tinyboard \[ \showboard \] \\
	\end{example}

\end{frame}

\subsection{Sudoku}

\begin{frame}{Sudoku}

Man kann mit \LaTeX auch Sudokus erstellen. Die Sammlung \textbf{sudokubundle}
stellt das Paket \textbf{printsudoku} zur Verfügung:

\begin{example}
\textbackslash{}sudoku\{\textit{dateiname}\}\\

	\begin{figure}
	\centering
	\cluefont{\normalsize}
	\cellsize{1\baselineskip}
	\sudoku{./test.sud}
	\end{figure}

\end{example}

\end{frame}

\begin{frame}{Sudoku}
	\textbf{sudokubundle} stellt auch eine Klasse \textbf{solvesudoku} zur Verfügung,
	mit der man Sudokus lösen kann und eine Klasse \textbf{createsudoku} mit der man
	Sudokus erzeugen lassen kann.
\end{frame}

\subsection{Weitere}

\begin{frame}{Weitere}

Es gibt noch für eine Vielzahl von Spielen \LaTeX-Pakete, z.B.:

\begin{itemize}
\item Kartenspiele
\item Go
\item Backgammon
\item Othello
\end{itemize}

\end{frame}

\section{Kultur}

\subsection{Gedichte}
\begin{frame}{verse}

Mit dem Paket \textbf{verse} kann man Gedichte setzen:


\poemtitle*{Der Taucher}
\poemlines{3}

\begin{verse}
\ldots
\end{verse}
\begin{verse}
Der König sprach es, und wirft von der Höh\\
Der Klippe, die schroff und steil\\
Hinaus hängt in die unendliche See,\\
Den Becher in der Charybde Geheul.\\
Wer ist der Beherzte, ich frage wieder,\\
Zu tauchen in diese Tiefe nieder?\\
\end{verse}
\begin{verse}
\ldots
\end{verse}


\end{frame}

\begin{frame}{verse}


\begin{block}{Quellcode}
\textbackslash{}poemtitle\{Der Taucher\} \\
\textbackslash{}poemlines\{3\} \\
\textbackslash{}begin\{verse\} \\
Der König sprach es, und wirft von der Höh\textbackslash{}\textbackslash{} \\
Der Klippe, die schroff und steil\textbackslash{}\textbackslash{} \\
Hinaus hängt in die unendliche See,\textbackslash{}\textbackslash{} \\
Den Becher in der Charybde Geheul.\textbackslash{}\textbackslash{} \\
Wer ist der Beherzte, ich frage wieder,\textbackslash{}\textbackslash{} \\
Zu tauchen in diese Tiefe nieder?\textbackslash{}\textbackslash{} \\
\textbackslash{}end\{verse\} \\
\end{block}

\end{frame}

\subsection{Cd Hülle}
\begin{frame}{CD Hülle}
Mit der \textit{documentclass} cd aus dem gleichnamigen Paket, könnt ihr mit wenigen Handgriffen eine CD-Hülle gestalten:

\begin{example}
	\textbackslash{}documentclass\{cd\} \\
	\textbackslash{}begin\{document\} \\
	\textbackslash{}covertext\{The Artist -- The Title\} \\
	\textbackslash{}leftspin\{The Artist\} \\
	\textbackslash{}centerspin\{The Title\} \\
	\ldots \\
	\textbackslash{}makecover\textbackslash{}par \\
	\textbackslash{}makeback\textbackslash{}par \\
	\ldots
\end{example}

\end{frame}

\subsection{MusiXTex}
\begin{frame}{MusiXTeX}

Es ist auch möglich mit \LaTeX einen Notensatz zu gestalten. Das Standardtool hierzu ist MusiXTeX.
An dieser Stelle nur ein Verweis auf eine \textit{Kurzanleitung} zu diesem Tools, da es zu umfangreich ist, um hier
nur kurz angesprochen zu werden. Es gibt dazu noch die Pakete \textbf{guitartex}, \textbf{MusixLyr}
und \textbf{TabDefs}.

\vspace{0.6cm}

\href{http://guitartex.sourceforge.net/de/guitartex/x750.html}{guitartex.sourceforge.net/de/guitartex/x750.html}

\end{frame}

\section{Weitere}
\begin{frame}
	Wie bereits merwähnt, gibt es eine Vielzahl von \LaTeX-Paketen.
	An dieser Stelle nur noch ein paar Weitere, die sich hier nicht demonstrieren lassen
	jedoch von Interesse sein könnten:
	\vspace{0.3cm}
	\begin{itemize}
		\item \textbf{fancyhdr} ermöglicht die freie Gestaltung der Seite
		\item Mit \textbf{pstricks} kann man in \LaTeX{} \textit{frei} zeichnen
		\item \textbf{IEEEconf}, \textbf{maple}, \textbf{acmconf} sind Dokumentvorlagen für z.B. Proceedings
		\item \textbf{vita} gibt Dokumentvorlagen für Lebensläufe vor 
		\item \textbf{movie15} ermöglicht das einbinden von Videos, dies erfordert aber den Adobe Reader (unter Windows?)
	\end{itemize}
\end{frame}

\section{Ende}
\begin{frame}{Ende}
Abschließend möchte ich euch noch auf zwei Dokumente hinweisen, die man beim arbeiten mit \LaTeX{} immer parat haben sollte:

\begin{itemize}
\item \href{http://www.dante.de/CTAN/info/lshort/german/l2kurz.pdf}{\LaTeX Kurzbeschreibung}
\item \href{http://www.ctan.org/tex-archive/info/symbols/comprehensive/symbols-a4.pdf}{Liste von \LaTeX-Symbolen}
\end{itemize}

\end{frame}

\end{document}
