Version 4 Mein Zeichen

Chrissyx
Homepage


LaTeX-Tutorial

In diesem Tutorial erkläre ich die Installation, Einrichtung und Nutzung von LaTeX unter Windows mittels MiKTeX und TeXnicCenter in zwei Teilen. Der erste Teil ist besonders für Neulinge geeignet, die mit LaTeX erstmalig zu tun haben und von der Installation bis zu den grundlegensten Befehlen geführt werden. Im zweiten Teil kommen Fortgeschrittene auf ihre Kosten in dem eine umfassende wissenschaftliche Arbeit mit Quellenverwaltung in BibTeX erstellt wird. Aber auch Anfänger können den einen oder anderen interessanten Kniff dabei lernen.

Inhaltsverzeichnis

  1. LaTeX-Tutorial
    1. Inhaltsverzeichnis
    2. Benötigte Software
    3. Installation
    4. TeXnicCenter einrichten
    5. Dokumente und Projekte
    6. Erste Schritte
    7. Dokmentenklasse und Packages
    8. Dokumentenbereich und Kapitelstruktur
    9. Häufig verwendete Befehle
  2. Wissenschaftliche Arbeit mit LaTeX
    1. Standards
    2. Metadaten und verlinkte Referenzen
    3. Layout
      1. Andere Abstände
      2. Kapitelnummerierung
      3. (Sub-)Paragraphen mit Umbruch
      4. Eigene Kopf- und Fußzeilen
    4. Titelseite
    5. Dateiorganisation
    6. Literaturliste(n)
      1. Lokalisierte Bibliographie
      2. Mehrere Bibliographien
      3. Neue Bibliographien verwenden
    7. Weitere Verzeichnisse und Anhänge
    8. Texte schreiben
      1. Anker setzen
      2. Quellenangaben
      3. Bilder einfügen
      4. Graphen, Netze und Automaten
        1. Beispiel für eine Turingmaschine
        2. Beispiel für ein Kellerautomat
      5. Graphenbau für Fortgeschrittene
        1. Beispiel für ein Petrinetz
        2. Beispiel für einen Graphen
      6. Erweiterte Tabellen
        1. tabularx
        2. longtable
        3. LTXtable

Benötigte Software

Als erstes braucht ihr diese Programme:

Installation

Installiert die Programme in der Reihenfolge, wie sie im letzten Kapitel aufgeführt sind. MiKTeX komplett dauert etwas länger, holt euch einen Kaffee oder so. ;) Im Gegensatz zur Basic-Version, die bereits ein sogenanntes Repository von Paketen mitbringt, müsst ihr bei der Net-Variante vor der Installation erstmal alles runterladen. Wählt dazu im Schritt "Task" die Option "Download MiKTeX" und im Schritt "Download Source" am besten einen deutschen Mirror aus. Sollte der Download durch einen Prüfsummenfehler o.ä. mal abbrechen, könnt ihr den Installer neustarten und den Download mit einem anderen Mirror fortsetzen. Fehlerhafte Pakete werden dabei ersetzt und korrekte Pakete übersprungen. Sobald alles runtergeladen wurde den Net-Installer nochmals ausführen, aber diesmal mit der "Install MiKTeX"-Option. Unter Angabe eures zuvor erstellten lokalen Repositorys bei "Distribution Directory" geht die eigentliche Installation erst richtig los. Die Voreinstellungen brauchen dabei eigentlich nicht geändert zu werden.

Bei der Installation von GSview sollte das Programm mit PostScript-Dateien verknüpft werden, nicht aber unbedingt mit PDF-Dokumenten. Für PDFs könnt ihr weiterhin den Betrachter eurer Wahl nutzen, wie z.B. Adobe Reader XI. Während der Installation von TeXnicCenter rate ich euch auf jeden Fall noch die "Help Files" auszuwählen; gerade die LaTeX-Referenz ist eine wertvolle Ressource zum Nachschlagen von Befehlen, Symbolen und Konstrukten.

TeXnicCenter einrichten

Gleich beim ersten Start von TeXnicCenter begrüßt euch der Konfigurations-Assistent. Klickt auf "Weiter >" und wählt im nächsten Schritt den "\mikex\bin"-Unterordner von MiKTeX aus. Habt ihr die Distribution nach "C:\Programme\MiKTeX" installiert, lautet der Pfad "C:\Programme\MiKTeX\mikex\bin". Den Rest richtet der Assistent automatisch ein; bei früheren Versionen hatte man noch Angaben zum Installationsort von Ghostscript machen müssen.

Als nächstes wird TeXnicCenter unter "Extras → Optionen..." weiter eingerichtet. Hier bieten sich folgene Einstellungen an:

Als letztes überprüfen wir die Ausgabeprofile via "Ausgabe → Ausgabeprofile definieren...". Vergewissert euch, dass für die beiden PDF-Profile im Tab "Viewer" euer bevorzugtes Anzeigeprogramm eingetragen ist (z.B. C:\Programme\Adobe\Reader 10.0\Reader\AcroRd32.exe). Solltet ihr mit Adobe beim Öffnen eines PDFs von TeXnicCenter aus eine Fehlermeldung bekommen, tragt an dieser Stelle unter "Server:" folgende Angabe ein:

Dokumente und Projekte

TeXnicCenter unterscheidet zwischen einzelnen Dokumenten und ganzen Projekten. Die aktuell geöffnete TEX-Datei lässt sich jederzeit über "Aktives Dokument erstellen" erzeugen. Bei kleineren Vorhaben ist das völlig ausreichend (z.B. Briefe oder Übungszettel), aber bei größeren Arbeiten die sich über mehrere Dateien erstrecken eher kontraproduktiv. Denn zur Kompilierung müsste man immer erst zur Hauptseite wechseln und den Build-Vorgang von da aus anstoßen, da eine Unterseite nur einen Teilausschnitt repräsentiert und sich gar nicht kompilieren lässt. Dafür gibt es Projekte die nicht nur alle Unterseiten übersichtlich in einem Navigator bündeln, sondern auch eine zentrale Funktion "Ausgabe erstellen" anbieten. Damit kann man egal von wo aus jederzeit das Projekt korrekt bauen und das PDF erstellen.

Erste Schritte

Die Syntax von LaTeX ist anfangs etwas ungewohnt, besteht im Wesentlichen aber aus einem \ gefolgt von dem Befehl. Argumente werden mittels {} übergeben und optionale Parameter noch davor mit []. Einen Zeilenumbruch (keinen Absatz) erzwingt man mit \\ und Kommentare, die nicht im finalen Dokument auftauchen, beginnen mit %. Pseudocode-Beispiele dafür:

Weiterhin gibt es sogenannte Umgebungen (Environments) die mit \begin{} und \end{} definiert werden, in denen Zeichen andere Bedeutungen bekommen (können) als außerhalb oder weitere spezielle Befehle beinhalten. Hier lauern durchaus die Eigenheiten von LaTeX. Generell hilft euch TeXnicCenter aber mit einer Befehlserkennung (vorgeschlagene Befehle können mittels STRG+Leertaste eingefügt werden) und bietet die gängigsten Konstrukte direkt über Toolbars ähnlich einem Textverarbeitungsprogramm wie Word an. Umgebungen kommen hauptsächlich für mehrzeilige Texte zum Einsatz; nicht selten existiert davon auch ein einzeiliges Gegenstück.

Dokmentenklasse und Packages

Zu den ersten Anweisungen gehört die Angabe der Dokumentenklasse. Für die meisten Zwecke reicht hier article aus, so dass wir folgendes schreiben:

\documentclass{article}

An dieser Stelle können weitere Optionen zum Dokumentenformat oder der allgemeinen Schriftgröße übergegeben werden:

\documentclass[12pt,a4paper,oneside]{article}

Damit wird die Schriftgröße 12, A4-Seitenformat und einseitiger Druck definiert.

Ebenfalls ganz am Anfang werden Pakete eingebunden, um die Funktionalität von LaTeX mit neuen Befehlen oder Umgebungen zu erweitern. Dazu zählt essentielles wie UTF-8 Kodierung und Sprache, über simple Dinge wie farbige Schrift oder Bilder bis hin zu exotischen Funktionen für einen sehr speziellen Anwendungszweck. Manche Pakete setzen andere Pakete voraus oder müssen in einer bestimmten Reihenfolge eingebunden bzw. konfiguriert werden, was die eine oder andere Stolperfalle beherbergen kann. Das ganze lässt sich noch toppen, in dem man eigene Befehle aus anderen Befehlen zusammensetzen kann und sogar die originalen LaTeX-Befehle überschreiben kann.

Im Folgenden richten wir die Eingabekodierung, Sprache und Bildernutzung ein:

\usepackage[latin1]{inputenc}      %Verwendung von Latin1; TeXnicCenter unterstützt (noch) kein UTF-8
\usepackage[ngerman]{babel}        %Unterstützung der neuen deutschen Rechtschreibung (Trennung etc.)
\usepackage{graphicx}              %Einbinden von Grafiken mit \inlcudegraphics

Dokumentenbereich und Kapitelstruktur

Der eigentliche Text wird in der Umgebung document gesetzt:

\begin{document}
Hallo, Welt!
\end{document}

Zusammen mit der Dokumentenklasse und den Packages lässt sich daraus schon ein PDF bauen. Bevor wir aber großartig Text schreiben, kümmern wir uns zunächst um die Gliederung. Kapitel und -überschriften werden mit \section{} definiert:

\section{Mein erstes Kapitel}

Unterkapitel lassen sich bis zur fünften Ebene anlegen:

\section{Kapitel 1}
\subsection{Unterkapitel 1.1}
\subsubsection{Unterkapitel 1.1.1}
\paragraph{Unterkapitel 1.1.1.1}
\subparagraph{Unterkapitel 1.1.1.1.1}

Dieser Text steht in Kapitel 1.1.1.1.1…

Eine Kapitelnummerierung wird übrigens automatisch vorgenommen.

Häufig verwendete Befehle

Spätestens jetzt wird es schwierig, ein genaues Vorgehen zu beschreiben. Ich stelle daher die am meisten benutzten Anweisungen mit einem Beispiel vor und gehe bewusst weiterhin nicht auf Details, Varianten oder Alternativen ein:

BefehlBeschreibungBeispiel
\textbf{}Fetter TextHier steht ein \textbf{fettes} Wort.
\textit{}Kursiver Text\textit{Der ganze Satz ist kursiv.}
\underline{}Unterstrichengzip steht für \underline{G}NU \underline{zip}.
\texttt{}Quelltext / CodeTextausgabe in PHP geht mit \texttt{echo();}.
\begin{center}
\end{center}
Zentriert\begin{center}
Ein zentrierter Absatz.
\end{center}
\parNeuer AbsatzHier endet ein Absatz.\par
Hier beginnt ein neuer Absatz.

Eine Leerzeile hat den selben Effekt.
\begin{itemize}
\item
\end{itemize}
Auflistung\begin{itemize}
\item Punkt 1 mit • davor
\item[Punkt 2] ersetzt den •
\end{itemize}
\begin{enumerate}
\item
\end{enumerate}
Aufzählung\begin{enumerate}
\item Schritt X
\item Schritt Y
\end{enumerate}
\begin{description}
\item
\end{description}
Definitionsliste\begin{description}
\item[Abk] Definition der Abkürzung
\end{description}
\footnote{}FußnoteEine Fußnote\footnote{Fußnoten funktionieren nicht in Tabellen!} steht am Ende der Seite.
\begin{tabular}{ll}
&\\
\end{tabular}
Einfache Tabelle
(linksbündige Spalten)
\begin{tabular}{ll}
Zeile 1 Spalte 1 & Zeile 1 Spalte 2\\
Zeile 2 Spalte 1 & Zeile 2 Spalte 2
\end{tabular}
\includegraphics{}Bild einfügen\includegraphics{images/picture.jpg}
\newpageNeue SeiteEnde der alten Seite.
\newpage
Anfang einer neuen Seite.
\begin{quote}
\end{quote}
Zitat\begin{quote}
"`\textit{Dies ist ein zitierter Text.}"'
\end{quote}
\begin{verbatim}
\end{verbatim}
Wortgetreue Darstellung\begin{verbatim}
Ignoriert \textbf{jede} Syntax von \LaTeX.
\end{verbatim}
\verb||Kurzform von verbatim\verb#Bei \verb gibt man das einzeilige Argument statt in {} mit zwei gleichen Zeichen an.#

Die Liste lässt sich beliebig fortführen und trotzdem kratzen wir bis jetzt nicht mal an der Oberfläche. ;) Von dem $Mathemodus$ ganz zu schweigen! Aber es sollte eine einigermaßen solide Ausgangsbasis bieten zur weiteren Vertiefung in der LaTeX-Materie. Denkt dran: TeXnicCenter bietet eine durchsuchbare Hilfe für Befehle sowie deren Beschreibung.

Wissenschaftliche Arbeit mit LaTeX

Im zweiten Teil des LaTeX-Tutorials erkläre ich Vorgehensweisen und Konzepte zur Erstellung einer größeren wissenschaftlichen Arbeit anhand meiner eigenen Diplomarbeit. Dies beinhaltet Nutzung des umfangreichen hyperref-Packages zur Erstellung von Metadaten und Verlinkung von URLs sowie Quellenverwaltung mit BibTeX in Form von mehreren Literaturlisten, die im Text verlinkt referenziert werden.

Standards

Ein paar Worte vorweg: Es gibt wissenschaftliche Standards, die euch bekannt sein sollten und auf jeden Fall beachten müsst. Zur Sicherheit liste ich sie nochmal ohne Anspruch auf Vollständigkeit auf, da auch LaTeX auf diese Maximen ausgerichtet ist:

Metadaten und verlinkte Referenzen

Suchmaschinen lieben sie, aber auch der gewöhnliche Leser kann davon profitieren: Metadaten geben unmissverständlich Auskunft über Titel, Untertitel, Autor und mehr. Diese Angaben werden mit dem hyperref-Package gesetzt. Darüber hinaus aktiviert es verlinkte Referenzen, d.h. mit einem Klick auf die Quellenangabe springt man direkt zum dazugehörigen Eintrag in der Literaturliste. Oder vom Inhaltsverzeichnis direkt zur ausgewählten Seite oder vom Abbildungsverzeichnis direkt zur eingebundenen Grafik im Text oder von anklickbarer URL zur Webseite. Einbindung und Konfiguration wie folgt:

%Aktivieren von Hyperlinks (Referenzen, Sektionen, Bilder, Tabellen, URLs, Zitate, ...) und Metadaten
\usepackage[pdftex]{hyperref}
\hypersetup{pdftitle      = {Meine Titel},
            pdfauthor     = {Vorname Nachname},
            pdfsubject    = {Ein beschreibender Untertitel der Arbeit sonst löschen},
            pdfkeywords   = {Stichwörter,mit,Komma,trennen},
            bookmarksopen = true,
            colorlinks    = true,
            linkcolor     = blue, %black für finalen Ausdruck!
            citecolor     = blue,
            filecolor     = red,
            urlcolor      = blue}

Die Metaangaben sollten selbsterklärend sein. Über bookmarksopen kann man bestimmen, ob die Lesezeichenleiste mit einer Kapitelübersicht direkt geöffnet werden soll, was sich durchaus anbietet. Die restlichen Werte betreffen Einstellungen zur Einfärbung von verwendbaren Links. Die würde ich zur Feature-Verdeutlichung im PDF nutzen und nur für einen finalen Ausdruck deaktivieren – Papier ist ja nicht anklickbar. ;)

Wichtig: Das Package immer als letztes Package einbinden! Achtet darauf, wenn ihr im Verlauf des Tutorials weitere Packages nachtragt. hyperref ersetzt zudem das url-Package und bringt seinen eigenen \url{}-Befehl mit.

Layout

Nicht nur bei der Textauszeichnung, sondern auch beim Layout allgemein geben sich wissenschaftliche Arbeiten und daher auch LaTeX recht minimalistisch. Eine größere Schrift als 12 Punkt wird nicht unterstützt und lässt sich selbst über Hacks (z.B. mit der Dokumentenklasse extarticle) mehr schlecht als recht emulieren. Schon eher möglich sind z.B. Zierlinien zur Absetzung von Seitenkopf und -fuß, andere Abstände und Einzüge von Absätzen, Anzeigeoptionen für das Inhaltsverzeichnis oder abweichende Kapitelnummerierung. Diese und weitere Gestaltungsmöglichkeiten stelle ich im Folgenden kurz vor; alle Anweisungen müssen dabei vor \begin{document} und nach \hypersetup{…} stehen.

Andere Abstände

(Neue) Absätze starten die erste Zeile standardmäßig mit einen kleinen Abstand zum linken Rand, dem sogenannte Einzug. Dieses Verhalten lässt sich ganz abschalten, in dem die Länge auf 0 gesetzt wird:

\setlength{\parindent}{0ex} %Kein Einzug bei neuen Absätzen

Andersrum kann man dem Einzug ein beliebiges anderes Maß zuweisen. Die Einheit ex steht dabei für die Höhe des Buchstabens x der aktuellen Schriftart, ist also eine variable Größe.

Der Abstand zwischen den Absätzen lässt sich natürlich auch verändern. Dies kann z.B. so aussehen:

\setlength{\parskip}{1.6ex plus 0.2ex minus 0.2ex} %Abstand zwischen Absätzen

Hier habe ich den Abstand auf 1,6ex gesetzt, aber LaTeX zusätzlichen Spielraum gewährt. Je nach Situation im Text kann LaTeX dadurch den Abstand auf bis zu 1,8ex erweitern oder sogar auf 1,4ex verkürzen. Dadurch kann der Text viel besser mit anderen (starren) Elementen interagieren und eine Seite optimal aus- bzw befüllen.

Etwas seltener dürfte der Wunsch nach einem anderen Zeilenabstand anzutreffen sein, möchte es aber nicht unerklärt lassen und stelle eine Möglichkeit vor. Dazu ergänzen wir die Packageliste mit dem setspace-Paket und richten es auch gleich ein:

\usepackage{setspace}              %Anpassung des Zeilenabstandes mit \onehalfspacing oder \setstretch{}
\setstretch{1.2}

Über \setstretch{} kann man nun einen neuen Abstand definieren (im Beispiel das 1,2fache), es gibt aber auch fest vordefinierte Einstellmöglichkeiten wie \onehalfspacing oder \doublespacing.

Kapitelnummerierung

Ab einer gewissen Verschachtelungstiefe stellt LaTeX die automatische Kapitelnummerierung ein. Wer trotzdem eine Nummerierung tieferer Gliederungen sehen möchte, setzt den dafür zuständigen Zähler auf das gewünschte Limit:

\setcounter{secnumdepth}{5} %Alle Sektionen bis \subparagraph nummerieren

Analog dazu nimmt LaTeX ab einer bestimmten Tiefe keine Kapitel mehr im Inhaltsverzeichnis auf. Mit dem Zähler tocdepth kann man auch dieses Verhalten ändern:

\setcounter{tocdepth}{4} %Im ToC alle Sektionen bis \paragraph anzeigen

Ein weiterer Zähler ist für die bereits erwähnte automatische Kapitelnummerierung zuständig. Wer z.B. mit einem 0. Kapitel anfangen möchte, muss den Startwert dafür auf -1 setzen:

\setcounter{section}{-1} %Kapitelnummerierung bei 0 starten lassen

(Sub-)Paragraphen mit Umbruch

Ein für mein Empfinden recht überraschendes Verhalten zeigt sich bei Kapiteln ab der vierten Ebene. LaTeX fügt dort kein Umbruch ein, sondern führt den Text in der selben Zeile wie die Überschrift fort. Um dieses Verhalten den höheren Ebenen anzupassen, ist schon ein etwas tieferer Griff in die Trickkiste nötig: Selbst Angabe von \\, \par oder \newline hat keine Auswirkung, denn LaTeX erwartet an dieser Stelle erstmal irgendeinen Text, bevor es diesen in eine neue Zeile umbrechen kann. Genau diesen Text gebe ich in Form eines geschützten Leerzeichens durch die Tilde ~ an. Jetzt kann man auch ganz normal mit den bekannten Möglichkeiten einen Umbruch einfügen.

Zwar kann man das nun hinter jedem Paragraphen per Hand einfügen; viel geschickter ist aber eine Automatisierung. Dazu schreibe ich den originalen \paragraph-Befehl um und ergänzen ihn mit genau der Tilde-Umbruch-Kombination. Allerdings funktioniert es aus rekursiven Gründen nicht so ohne weiteres, einen Befehl zu überschreiben und ihn zeitglich bei der Neudefinition zu verwenden. Es würde eine Endlosschleife entstehen bis der Compiler mit einem TeX capacity exceeded, sorry [input stack=5000] Fehler abbricht. Es sind also zwei Schritte notwendig: Zuerst lasse ich die originale Definition von \paragraph in einen anderen Befehl meiner Wahl mittels \let sichern:

\let\paragraphOld\paragraph %Paragraphen mit Umbruch

\paragraphOld hat nun den Stand von \paragraph gesichert und lässt sich bei der anschließenden Neudefinition verwenden:

\renewcommand{\paragraph}[1]{\paragraphOld{#1}~\par}

Im Wesentlichen erzeugt \paragraph von nun an wie gewohnt ein Kapitel der vierten Ebene und fügt automatisch das geschützte Leerzeichen sowie einen neuen Absatz ein. Den Parameter zur Kapitelüberschrift habe ich unverändert zum eigentlichen \paragraph-Befehl durchgeschleift. Für eine Anpassung von \subparagraph gilt das Vorgehen entsprechend.

Eigene Kopf- und Fußzeilen

Von Haus aus bietet LaTeX vier Modi für \pagestyle{} zur Ausgestaltung von Seitenköpfen und Fußzeilen an:

plain
Nur die Seitennummerierung zentriert in der Fußzeile
empty
Weder Kopf noch Fuß; auch keine Seitennummer
headings
Leere Fußzeile und Kapitelname mit Seitennummer im Kopf
myheadings
Seitennummer oben rechts, Rest wird mit \markboth oder \markright angegeben

Für weitergehende Gestaltungsmöglichkeiten bietet sich das Package fancyhdr an. Damit lassen sich gezielt die Informationsbereiche Links, Rechts und Mitte in Kopf und Fuß ansteuern. In dem folgenden Beispiel (einfügen über hyperref!) setze ich den aktuellen Kapitelnamen der jeweils ersten Ebene mit Nummer links in den Kopf; der Bereich rechts soll hingegen frei bleiben. Die restliche Gestaltung übernehme ich einfach unverändert durch die gewählte Dokumentenklasse, d.h. es kommt eine Zierlinie dazu und die Seitennummer sitzt mittig im Fuß. Ich ändere also nur das, was wirklich notwendig ist:

%Eigene Header / Footer einrichten
\usepackage{fancyhdr}
\pagestyle{fancy}                     %Aktivieren
\lhead{\leftmark}                     %Links oben Kapitelname
\rhead{}                              %Rechts oben nix ausgeben
%\renewcommand{\footrulewidth}{0.4pt}  %Footer mit Linie

In der letzten Zeile steht noch auskommentiert die Anweisung für eine Zierlinie über der Fußzeile. Ich würde sie nicht verwenden wollen, da sie sich im Falle einer Fußnote mit dessen Abgrenzungslinie beißt. Die komplette Anleitung zu fancyhdr findet sich wie gewohnt im CTAN.

Titelseite

Für den Aufbau der Titelseite gibt es keine Vorschriften, es macht aber Sinn mindestens folgende Elemente aufzunehmen:

Darüber hinaus bieten sich noch relevante Logos oder andere Titelbilder zum Einbau an. Da die Titelseite keine normale Textseite ist, sind Dinge wie Seitennummern, Kopfzeilen & Co. unerwünscht und müssen in LaTeX durch Nutzung des Seitenstils empty vorübergehend deaktiviert werden:

%Titelseite einrichten
\thispagestyle{empty}

Es wird also direkt unter \begin{document} nur für die aktuelle Seite der passende Stil gesetzt, so dass automatisch ab der nächsten Seite der voreingestellte Stil wieder zum Tragen kommt. Als nächstes folgt die Einrichtung der Titelseite, wie ich sie für meine Diplomarbeit verwendet habe:

\begin{center}
\begin{figure}[h]
 \centering
 \includegraphics[width=0.7\textwidth]{images/logo.jpg}\\
 \normalsize Fachbereich X -- Richtung 1 / Richtung 2
\end{figure}

\vfill

\bf
\LARGE Titel\\
\smallskip
\normalsize Untertitel

\vfill

\large Art der Arbeit\\
\small von\\
\normalsize Autor(en)

\vfill

\begin{tabular}{ll}
Gutachter:  & Betreuer 1\\
            & Betreuer 2
\end{tabular}

\vfill

Ort, Datum
\end{center}
\clearpage

Das gesamte Titelblatt habe ich erstmal zentriert. Ganz oben steht das Logo der Hochschule mit dem relevanten Fachbereich als Bildunterschrift. Danach folgen Titel mit Untertitel, Art der Arbeit mit dem Autor und den Betreuern in Tabellenform formatiert / rechtsbündig ausgerichtet. Ganz unten steht noch Ort und Abgabedatum. Beachtet, dass alle Elemente durch \vfill vertikal positioniert werden. Dies fügt eine automatisch berechnete Länge auf Basis der vorhandenen Seiteninhalte ein und sorgt für gleichverteilte Abstände.

Dateiorganisation

Aufmerksame Leser haben es im Beispiel mit der Titelseite schon geahnt: Alle Bilder kommen in den Ordner "images" und ich empfehle euch selbiges zu tun. Weitere Unterordner zu Bildern für einen speziellen Anwendungskontext (z.B. UML-Diagramme oder Screenshots) bieten sich an der Stelle auch an. Die erste Ebene sollte nur für LaTeX-Dateien genutzt werden, über dessen Organisation man sich spätestens jetzt Gedanken machen sollte. Von der Dokumentenklasse über die Einstellungen bis zur Titelseite passte bis jetzt alles in die Hauptdatei. Die nun folgenden Kapitel sollten zur besseren Übersicht in einzelne TEX-Dateien ausgelagert werden und dann kapitelweise inkludiert werden:

\include{kap0}   %Danksagung
\tableofcontents %Inhaltsverzeichnis
\clearpage
\include{kap1}   %Einleitung
\include{kap2}   %Kapitel 2
\include{kap3}   %Kapitel 3
\include{kap4}   %Kapitel 4 usw.
\include{kap5}   %Fazit

Unmittelbar nach der Titelseite habe ich eine Danksagung eingeschoben, die auch nicht im anschließenden Inhaltsverzeichnis auftauchen soll. Dazu habe ich in der kap0.tex das Kapitel mittels \section*{Danksagung} angelegt – man beachte den * dabei! Am Ende einer jeden inkludierten TEX-Datei erfolgt ein \clearpage, so dass hier wirklich nur die Kapitel eingebunden werden müssen und lediglich nach dem Inhaltsverzeichnis explizit eine neue Seite angefangen werden muss. Selbstverständlich lässt sich die Titelseite nach dem gleichen Muster ebenfalls auslagern.

Literaturliste(n)

Wie bereits angekündigt, soll BibTeX als Quellenverwaltung zum Einsatz kommen. Im Gegensatz zur thebibliography-Umgebung werden die einzelnen Quellen in speziellen BIB-Dateien ausgelagert, nach Literaturtyp klassifiziert und mit Metadaten versehen eingetragen. Je nach Typ kommen dabei verschiedene Pflichtfelder zum Tragen sowie weitere optionale Angaben. Sollte ein benötigtes Feld mal nicht existieren, kann man es trotzdem aufnehmen, da BibTeX alle unbekannten Felder ignoriert. Auch wenn die Angabe zunächst nicht im Literaturverzeichnis auftaucht, können andere Stile oder zukünftige Versionen diese später doch noch auslesen und verarbeiten. Daher sollte man stets alle bekannten Metadaten einer Quelle aufnehmen. Es gibt folgende Typen und deren Felder:

TypBeschreibungPflichtfelderOptionale Felder
articleArtikel aus Zeitschrift oder Magazinauthor, title, journal, yearvolume, number, pages, month, note
bookBuch mit Verlagauthor oder editor, title, publisher, yearvolume oder number, series, address, edition, month, note
bookletGebundenes Druckwerk ohne Verlagtitleauthor, howpublished, address, month, year, note
conferenceAlias für inproceedings
inbookTeil eines Buches, Kapitel oder sonstige Seitenauthor oder editor, title, chapter und/oder pages, publisher, yearvolume oder number, series, type, address, edition, month, note
incollectionTeil eines Buches / Sammelbandes mit eigenen Titelauthor, title, booktitle, publisher, yeareditor, volume oder number, series, type, chapter, pages, address, edition, month, note
inproceedingsArtikel aus Tagungsbandauthor, title, booktitle, yeareditor, volume oder number, series, pages, address, month, organization, publisher, note
manualHandbuch / technische Dokumentationtitleauthor, organization, address, edition, month, year, note
mastersthesisDiplom-, Master- oder sonstige Abschlussarbeitauthor, title, school, yeartype, address, month, note
miscSonstigesKeineauthor, title, howpublished, month, year, note
phdthesisDoktorarbeit / Dissertationauthor, title, school, yeartype, address, month, note
proceedingsKonferenzbericht / Tagungsbandtitle, yeareditor, volume oder number, series, address, month, organization, publisher, note
techreport(Nummerierter) Bericht einer Hochschule / Institutionauthor, title, institution, yeartype, number, address, month, note
unpublishedNicht formell veröffentlichtes Dokumentauthor, title, notemonth, year

Wie ihr seht, gibt es keinen Typen für Webseiten – dies ist historisch bedingt, denn als BibTeX 1985 erschien gab es das Internet noch nicht wirklich. Online-Quellen müssen daher über misc eingebunden werden; am besten mit dem howpublished-Feld. Ein Beispiel für dieses Tutorial:

@MISC{chrissyx-latex,
    author = "Chrissyx",
    title = "{Chrissyx Homepage » LaTeX-Tutorial}",
    month = jun,
    year = 2011,
    howpublished = "Webseite",
    note = "\url{http://)"
}

Jeder neuer Eintrag beginnt mit einem @ gefolgt vom dem Typ und geschweiften Klammern, die die Felder beinhalten. Als erste Angabe in den Klammern folgt ein selbstgewählter Referenzschlüssel, mit dem ihr später im Text per \cite{} arbeitet. Generell werden Zeichenketten in " angegeben, Zahlen als solche (Integer statt Strings wenn man so will) und Monate quasi als Konstanten, d.h. die ersten drei Buchstaben des Monatsnamen auf Englisch (z.B. dec für Dezember). Dadurch wird auch die Lokalisierbarkeit gewahrt.

Eine weitere Besonderheit von BibTeX ist der ausgefeilte Umgang mit Autorennamen. Es werden automatisch Vornamen erkannt, von Nachnamen inkl. Adelsprädikate getrennt und Stil-abhängig angezeigt. Mehrere Autoren müssen dabei durch and getrennt angegeben werden; eine Angabe wie "et al." wird durch and others ausgewiesen. Namen können unterschiedlich notiert werden, egal ob als "Max Mustermann", "Mustermann, Max" oder "M. Mustermann". Firmennamen hingegen fallen nicht unter das Vorname-Nachname-Muster und müssen daher in geschweiften Klammern gesetzt werden. Das gleiche Prinzip greift auch bei Titeln, wenn die ursprüngliche Groß-/Kleinschreibung beibehalten werden soll.

Speziell für Internetquellen gebe ich neben der howpublished-Angabe unter note den Link mit dem letzten Zugriffsdatum an. Tipp: Falls der Link unglücklich umgebrochen wird, setze ich ihn gerne mal in eine \mbox{} rein. Für alles weitere verweise ich auf die offizielle Dokumentation im CTAN.

Lokalisierte Bibliographie

Um eine Literaturliste einzudeutschen, ist erfreulich wenig Aufwand notwendig. In den Package-Importen muss (am besten vor fancyhdr) folgendes hinzugefügt werden:

\usepackage[fixlanguage]{babelbib} %Lokalisierte Bibliographie
\selectbiblanguage{ngerman}        %Sprache für Bibliographie

Mehrere Bibliographien

Mehrfache Literaturlisten müssen ermöglicht, definiert und später an entsprechender Stelle verwendet werden. Die ersten beiden Schritte erfolgen in den Packages; eine Liste nur für Online-Quellen habe ich so angelegt:

\usepackage[numbers]{natbib}       %Wird NUR eingebunden damit die Referenzen per multibib gehen
\usepackage{multibib}              %Mehrere Bibliographien in einem Dokument
\newcites{WEB}{Online-Literatur}   %Die zweite Bibliographie, welche ohne natbib keine Hyperrefs mehr hätte

Entscheidend ist hier der neue Befehl \newcites. Der erste Parameter (WEB) ist ein eindeutiger Bezeichner der neuen Bibliographie, der auch als Teil für neue Befehle agiert – mehr dazu im nächsten Kapitel. Das zweite Argument ist der Name und damit die Kapitelüberschrift der Literaturliste. Weitere Bibliograhpien können dann sukzessive an dieser Stelle angelegt werden.

Unerwartet dürfte das Paket natbib auftauchen, welches zum Zeitpunkt meiner Diplomarbeit aber notwendig war um verlinkte Referenzen auch in der zweiten Bibliographie zu erhalten. Offenbar ist dies ein Bug oder zumindest eine Schwachstelle des multibib-Pakets.

Neue Bibliographien verwenden

Ist das letzte Kapitel wie weiter oben beschrieben inkludiert, folgen die Quellenangaben. Vorweg aber sollen wirklich alle hinterlegten Datensätze aus der BIB-Datei im Literaturverzeichnis aufgenommen werden – selbst dann, wenn sie im Text nicht explizit referenziert worden sind. Um das zu erreichen, rufe ich für jede Bibliographie den \nocite-Befehl mit * auf:

%Alle Quellen aufnehmen
\nocite{*}
\nociteWEB{*}

An dieser Stelle werden auch die Auswirkungen der eindeutigen ID von \newcites sichtbar: Jeder native BibTeX-Befehl wurde für die jeweils angelegte Bibliographie mit dem Bezeichner als Suffix repliziert und gilt entsprechend.

Ein traditionelles Manko von LaTeX ist die fehlende Aufnahme der Literatur in das Inhaltsverzeichnis. Dies kann man noch recht einfach per \addcontentsline nachtragen, aber zu früh gefreut: Dieser Eintrag wird nicht von Hyperref erfasst und verlinkt. Lösung hier ist die Phantom-Sektion:

\phantomsection %Hyperref fix
\addcontentsline{toc}{section}{Literatur}
\bibliographystyle{babalpha}
\bibliography{nameDerBibDatei}
\clearpage

Die Kombination aus \phantomsection und \addcontentsline{toc}{section}{} erzeugt für einen perfekten und anklickbaren Verzeichniseintrag auf Kapitelebene. Die Literatur selber wird gewohnt mit den Standardbefehlen von LaTeX generiert. Wichtig ist die Wahl des Stils: Dieser muss Babel-fähig, d.h. lokalisierbar, sein. Von den Standardstilen (plain, unsrt, alpha, abbrv) stellt das babelbib-Paket entsprechende Gegenstücke mit dem Präfix bab bereit: babplain, babunsrt, bababbrv und babalpha.

Nach fast dem gleichen Muster wird auch jede weitere zuvor angelegte Bibliographie erzeugt, denn zusätzlich sollte der Titel von "Literatur" auf etwas passenderes abgeändert werden. Dazu überschreibe ich den dafür zuständigen Befehl \refname mit einem neuen Argument synchron zur Kapitelüberschrift / Angabe im Inhaltsverzeichnis und es ergibt sich:

\phantomsection %Hyperref fix
\addcontentsline{toc}{section}{Online-Literatur}
\renewcommand\refname{Online-Literatur}
\bibliographystyleWEB{babalpha}
\bibliographyWEB{nameDerBibDateiWEB}
\clearpage

Parallel zu \nocite / \nociteWEB kommt für die Online-Literatur das jeweilige WEB-Pendant zum Einsaz.

Weitere Verzeichnisse und Anhänge

Neben der Literatur gibt es noch weitere Verzeichnisse z.B. für Tabellen und Abbildungen. Diese werden nicht viel anders angelegt und konkret für Bilder sieht das ganze so aus:

\phantomsection %Hyperref fix
\addcontentsline{toc}{section}{Abbildungsverzeichnis}
\listoffigures
\clearpage

Ebenfalls recht unspektakulär gestalten sich die Anhänge. Hier bietet sich wieder die Verwendung von \include{} an:

\appendix        %Anhänge ab hier
\include{kap6}   %Anhang 1
\include{kap7}   %Anhang 2
\include{kap8}   %Erklärung

Durch \appendix schaltet die Kapitelnummerierung auf eine alphabetische Sortierung um. Und damit wäre die Infrastruktur einer wissenschaftlichen Arbeit fertig eingerichtet und das eigentliche Schreiben kann beginnen. :) Im letzten Kapitel folgen dazu noch ein paar Ausführungen.

Texte schreiben

Anker setzen

Querverweise auf andere Textstellen, Bilder oder Tabellen sind ein häufig eingesetztes Mittel zur weiteren Texterschließung. Ich kann euch nur empfehlen, reflexartig unter jeden section-Befehl ein \label{} zu setzen um bei Bedarf darauf verweisen zu können. Setzt als Labelname dabei z.B. auf eine Mischung aus Präfix und Kapitelname, in etwa so:

\subsection{Aufbau der Arbeit}
\label{subsec_aufbau}
Abschließend enthält Kapitel \ref{sec_fazit} das Fazit zur Arbeit...

\ref{sec_fazit} würde durch die passende Kapitelnummer 5 ersetzt werden und mit \ref{subsec_aufbau} würde man genau so das aktuelle Unterkapitel 1.3 referenzieren (und verlinken) können.

Quellenangaben

Einträge aus der Bibliographie gebt ihr nach dem (wortgetreuen oder sinngemäßen) Zitieren anhand des Referenzschlüssels mit \cite{} an. Auf das Beispiel für dieses Tutorial würde man also mit \cite{chrissyx-latex} Bezug nehmen und eine Angabe ähnlich wie "[Chrissyx 2011]" im Text erzeugen. Um die Zitatherkunft bestimmten Seiten z.B. aus einem Buch (nicht zu verwechseln mit bereits gemachten Seitenangaben via pages-Feld aus inbook o.ä.!) zuzuordnen, gibt man diese als Option an: \cite[S. 1337]{chrissyx-latex} für eine Seite oder etwa \cite[S. 13-37]{chrissyx-latex} für mehrere Seiten. Die Angabe ist jedoch nicht auf Seitenverweise limitiert, sondern bietet allgemein Raum für relevante Bemerkungen. Unabhängig davon können auch verschiedene Quellen gleichzeitig referenziert werden, in dem die Referenzschlüssel durch Komma getrennt angegeben werden.

Bilder einfügen

Zur Bilderbehandlung in LaTeX lassen sich komplett eigene Anleitungen verfassen, aber zum Glück gibt es bereits ein wirklich exzellentes Tutorial, so dass ich an dieser Stelle nicht weiter auf das Thema eingehen muss: Das Bilder-How-To (l2picfaq) von Dominik Bischoff erklärt wirklich jeden Anwendungsfall zur Einbindung von Grafiken und war auch mir eine große Hilfe. Die aktuelle Fassung findet ihr stets im CTAN. Sehr empfehlenswert!

Graphen, Netze und Automaten

Für diesen nicht alltäglichen Anwendungsfall bietet LaTeX selbstverständlich auch eine Lösung an. Allerdings ist es mal wieder nicht ganz einfach, einen Graphen zu bauen – ohne ihn als Bild einzubinden, das kann ja jeder. ;) Am offensichtlichsten bietet sich hier GasTeX an. Den eigentlichen Graphen bauen wir aber mit JasTeX in der Applet-Version. Mittels der GUI klicken wir den Graphen zusammen und kopieren am Ende nur den relevanten LaTeX-Code mit der generierten picture-Umgebung raus. Das ganze formatiere ich der Lesbarkeit wegen etwas besser und gruppiere die Befehle thematisch dazu (z.B. erst alle Linien von Knoten A, dann alle Pfeile von Knoten B, dann Beschriftungen für Kante C usw.). Leider ist JasTeX etwas buggy (spielt also vorher etwas rum, bevor ein mühsam gezeichneter Graph verloren geht!) und veraltet, d.h. neue Features wie Makros ab GasTeX V2.4 werden nicht unterstützt. Trotzdem bleibt es eine nette Hilfe gerade für "Graphneulinge", die man so schnell nicht missen will.

Ganz wichtig bei der Kompilierung des Dokuments mit Graphen ist die Verwendung des Profils LaTeX => PS => PDF! Graphen werden nicht richtig angezeigt, wenn ihr direkt nach PDF kompiliert!

Beispiel für eine Turing-Maschine

\begin{picture}(100,80)(0,-80)
 %Die Knoten
 \node[Nmarks=i](n0)(32,-28){$s_0$}
 \node(n1)(60,-28){$s_1$}
 \node(n2)(84,-28){$s_2$}
 \node[Nmarks=f](n3)(88,-56){$T$}
 \node(n4)(48,-56){$F$}
 %Die Kanten
 \drawedge(n0,n1){a $\rightarrow$ a, r}
 \drawedge(n1,n2){b $\rightarrow$ b, r}
 \drawedge(n2,n3){$\fbox{}$ $\rightarrow$ $\fbox{}$, n}
 \drawedge[ELside=r,curvedepth=-5](n0,n4){b $\rightarrow$ b, n; $\fbox{}$ $\rightarrow$ $\fbox{}$, n}
 \drawedge[ELside=r,curvedepth=4](n1,n4){$\fbox{}$ $\rightarrow$ $\fbox{}$, n}
 \drawedge[curvedepth=5](n2,n4){a $\rightarrow$ a, n}
 \drawloop(n1){a $\rightarrow$ a, r}
 \drawloop(n2){b $\rightarrow$ b, r}
 \drawloop[loopangle=270](n4){x $\rightarrow$ x, r}
\end{picture}

Beispiel für ein Kellerautomat

\begin{picture}(80,25)(0,-25)
 %Die Knoten
 \node[Nmarks=i](s0)(12.0,-16.0){s$_0$}
 \node(s1)(40.0,-16.0){s$_1$}
 \node[Nmarks=f](s2)(68.0,-16.0){s$_2$}
 %Die Pfeile
 \drawedge(s0,s1){b; x $\rightarrow$ x}
 \drawedge(s1,s2){-; c$_{OK}$ $\rightarrow$ $\lambda$}
 \drawloop(s0){a; x $\rightarrow$ ax}
 \drawloop(s1){b; a $\rightarrow$ $\lambda$}
 \drawloop[loopangle=270](s1){b; x $\rightarrow$ x}
\end{picture}

Graphenbau für Fortgeschrittene

Hier stelle ich noch eine interessante Alternative vor: Grundlage dieser Graphengeneration soll das graphs-Package von Frank Drewes sein. Denkt auch hier an die Verwendung des richtigen TeXnicCenter-Profils mit Zwischenkompilierung nach PS! Die einzelnen Befehle tippe ich in der Tat von Hand ein und am Ende können solche schicken Konstrukte entstehen:

Beispiel für ein Petrinetz

\begin{graph}(4, 4)(-2, -1)
 %Allgemeine Einstellungen
 \graphnodesize{0.4}
 \graphnodecolour{1}
 %Knoten
 \squarenode{t1}(0, -0.5)
 \roundnode{s1}(-1, 0)
 \roundnode{s1p}(-1, 0)[\graphnodesize{0.15}\graphnodecolour{0}]
 \roundnode{s2}(1, 0)
 \roundnode{s2p}(1, 0)[\graphnodesize{0.15}\graphnodecolour{0}]
 \squarenode{t2}(0, 0.5)
 \roundnode{s3}(0, 1.5)
 \squarenode{t3}(0, 2.5)
 %Kanten
 \diredge{s1}{t1}
 \diredge{s1}{t2}
 \diredge{s2}{t1}
 \diredge{s2}{t2}
 \diredge{t2}{s3}
 \dirbow{s3}{t3}{0.3}
 \dirbow{t3}{s3}{0.3}
 \bowtext{t3}{s3}{0.5}{2}
\end{graph}

Beispiel für einen Graphen

\begin{graph}(4.5, 4.5)(-2.25, -2.25)
 \graphnodesize{0.6}
 \graphnodecolour(255, 255, 255)
 %Die Knoten
 \roundnode{r1}(-1.5, 1.5)
 \autonodetext{r1}{$A$}
 \roundnode{r2}(-1.5, -1.5)
 \autonodetext{r2}{$B$}
 \roundnode{r3}(1.5, -1.5)
 \autonodetext{r3}{$C$}
 \roundnode{r4}(1.5, 1.5)
 \autonodetext{r4}{$D$}
 %Die Kanten
 %Von A
 \dirbow{r1}{r4}{0.1}
 \bowtext{r1}{r4}{0.17}{7}
 %Von B
 \dirbow{r2}{r4}{0.05}
 \freetext(-1, -0.43){9}
 \dirbow{r2}{r3}{0.1}
 \bowtext{r2}{r3}{0.17}{6}
 \diredge{r2}{r1}[\graphlinecolour(120, 0, 0)]
 \bowtext{r2}{r1}{0.07}{\textcolor{red}{7}}
 %Von C
 \dirbow{r3}{r2}{0.1}
 \bowtext{r3}{r2}{0.17}{3}
 \diredge{r3}{r1}
 \freetext(1, -0.5){1}
 \dirbow{r3}{r4}{-0.1}
 \bowtext{r3}{r4}{-0.17}{8}
 %Von D
 \dirbow{r4}{r1}{0.1}
 \bowtext{r4}{r1}{0.17}{2}
 \dirbow{r4}{r3}{-0.1}
 \bowtext{r4}{r3}{-0.04}{5}
 \dirbow{r4}{r2}{0.05}[\graphlinecolour(120, 0, 0)]
 \freetext(1, 0.43){\textcolor{red}{8}}
\end{graph}

Erweiterte Tabellen

Ähnlich umfangreich wie zu Bildern kann man sich über Tabellen auslassen. Nur ist mir dazu kein gutes Tutorial bekannt, auf das ich an dieser Stelle verweisen könnte, so dass ich selber ein paar Tabellentypen vorstelle.

tabularx

Das tabularx-Package erweitert die normale LaTeX-tabular-Tabellenumgebung um Spalten des Typs X. Damit sind dynamische Breiten möglich, d.h. anders als Spalten mit l, c oder r nutzen X-Spalten die maximal zur Verfügung stehende Breite variabel aus. Ist die gesamte Tabellenweite auf die Seitenbreite festgelegt, so füllen die einzelnen X-Spalten auch die ganze Seite aus. Beispiel:

\begin{table}
\caption{Spaltenbreite}
\label{table_tbx_spaltenbreite}
\begin{tabularx}{\textwidth}{c|X}
\textbf{ohne X}          & \textbf{mit X}\\ \hline
Statisch                 & Dynamisch\\
Spalte so breit wie Text & Spalte so breit wie noch Platz verfügbar ist
\end{tabularx}
\end{table}

Analog zur Einbindung von Bildern sollten diese Tabellen in die table-Umgebung eingesetzt werden, so dass sie mit Labels, Positionsangaben und Beschriftung versehen werden können.

longtable

Mit dem Package longtable wird ebenfalls die tabular-Umgebung erweitert, so dass mehrseitige Tabellen möglich sind. Lange Tabellen werden bei Seitenumbrüchen automatisch unterbrochen und auf der nächsten Seite fortgeführt. Die Syntax ist quasi identisch mit der von tabular; \multicolumn wird auch unterstützt.

LTXtable

Das Nonplusultra ist die Kombination aus tabularx und longtable: Die sogenannte LTXtable ermöglicht komplexe Tabellenkonstrukte mit eigens definierten Tabellenköpfen für die fortlaufenden Seiten zur Inkludierung. Ich empfehle daher einen eigenen Unterordner "ltx" für die Tabellen, die z.B. mit \LTXtable{\textwidth}{./ltx/myTable} über die gesamte Textbreite der Seite eingebunden werden kann. Die "myTable.tex" enthält dann die eigentliche Tabelle in einer longtable-Umgebung mit X-Spalten und den Header- & Footer-Definitionen. Beispiel für einen solchen Aufbau:

\begin{longtable}{|X|X|}
\caption{Beispiel für LTXtable}
\label{table_ltx_beispiel}\\ \hline
\textbf{Attribute/Operationen()} & \textbf{Beschreibung}\\ \hline
\endfirsthead

\multicolumn{2}{c}{\tablename \thetable{} - Fortsetzung}\\ \hline
\textbf{Attribute/Operationen()} & \textbf{Beschreibung}\\ \hline
\endhead

\hline \multicolumn{2}{|r|}{Fortsetzung auf der nächsten Seite}\\ \hline
\endfoot

\hline \hline
\endlastfoot

coreManager                 & Instanz des \emph{CoreManager}.\\ \hline
leet                        & Flag für Leetness.\\ \hline
w00tFactor                  & Beinhaltet das Level zur Ausführung des w00tens.\\ \hline
coreManager(leet, w00t)     & Konstruktor, erstellt eine Instanz von \emph{CoreManager}, setzt das Flag für Leetness und startet ggf. direkt im w00t-Modus.\\ \hline
execute()                   & Führt die Core-Struktur aus mit den gesetzten Parametern.\\ \hline
exit()                      & Beendet die Core-Struktur. Je höher die W00tness, desto länger dauert das Freigeben der Ressourcen.\\ \hline
isLeet()                    & Gibt vorhandene Leetness zurück.\\ \hline
setW00tage(w00tFactor)      & Erhöht das w00ten um den angegeben Faktor. Das Minimum ist 2, sonst wird eine \emph{LowW00tageLevelException} geworfen.

\end{longtable}

Definiert sind hier zwei X-spalten, gefolgt von der Tabellenüberschrift und einem Verweisanker. Danach sind Angaben notiert, deren Geltungsbereich erst rückwirkend zugeordnet werden: Als erstes der Tabellenkopf nur für die erste Seite via \endfirsthead, danach alle weiteren Tabellenanfänge pro erfolgtem Seitenumbruch durch \endhead. Hier wird die Tabellenüberschrift durch Name und Nummer über eine ganze Zeile zentriert wiederholt, gefolgt von den ursprünglichen Spaltenüberschriften. \endfoot fügt analog dazu vor jedem Seitenumbruch am aktuellen Tabellenende eine rechtsbündige Hinweiszeile ein und \endlastfoot am "echten" Ende eine doppelte Trennlinie. Der Rest ist gewohnter Tabelleninhalt mit Spalten- und Zeilenformatierungen und Gitternetzlinien.