latex:fortgeschrittene

Anwendung für Fortgeschrittene

Die Anwendungsbeispiele in diesem Bereich sind für all jene gedacht, die ihre ersten Schritte hinter sich und unter Umständen schon ein wenig Erfahrung mit kleinen Dokumenten gesammelt haben. Unsere Zusammenstellung soll Ihnen Pakete und Mechanismen vorstellen, die Sie kennen und im Bedarfsfall nutzen sollten.

Manche Themen der fortgeschrittenen Anwendung, wie z.B. Literaturverwaltung, sind derart zentral, dass sie gesondert im Bereich Spezialgebiete angeführt werden.

Dokumentklasse (und KOMA-Skript)

Die Auswahl der richtigen Dokumentklasse ist eine Ihrer ersten Fragen im Umgang mit LaTeX. Die Standardklassen von sind: article, report und book. Wir empfehlen Ihnen, die Dokumentklassen und Erweiterungspakete des KOMA-Skripts zu verwenden. Aus der KOMA-Dokumentation:

Die Fähigkeiten von KOMA-Script reichen teilweise weit über die Fähigkeiten der Standardklassen hinaus. Manche davon sind auch als Ergänzung zu den Grundfähigkeiten des LaTeX-Kerns zu betrachten.

Neben der Anpassung von Layouts und Typographie an europäische Normen und Stile, beinhalten die KOMA-Skripts eine Vielzahl an vereinfachten Schnittstellen, die mehr Kontrolle über das Dokument bieten. Alleine die Mächtigkeit der Dokumentation verdeutlicht die Vielzahl der enthaltenen Optionen und Möglichkeiten.

Das KOMA-Skript stellt folgende alternative Klassen bereit: : scrartcl (article), scrreprt (report), scrbook („book“). Das Grundgerüst Ihrer minimalen Eingabedatei für deutsche Dokumente sieht dann in etwa so aus:

\documentclass[12pt]{scrartcl}
 
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
 
\begin{document}
 
...
 
\end{document}

Die Seitenränder und allgemeine Satzspiegel-Konstruktion wird dem integrierten Mechanismus von typearea überlassen. Dabei wird auf Basis von Papier- und Schriftgröße ein Seitenlayout berechnet, das typographischen Qualitätskriterien entspricht.

Oft bieten die KOMA-Skripts jene Options-Vielfalt, die vielen neuen und fortgeschrittenen Benutzern von LaTeX fehlt oder sehr kompliziert realisiert wird. Beliebt ist beispielsweise der verfügbare „Miniabschnitt“ \minisec{kleine Überschrift}, den man in Standardklassen misst. Dabei handelt es sich um eine kleine, nicht numerierte Überschrift (Beispiele dafür sind in der KOMA-Dokumentation auf Seite 101f zu finden.

Kopf- und Fußzeilen gestalten

In Textdokumenten sind Kopf- und Fußzeilen zur Darstellung generischer Inhalte wie der aktuellen Seite oder des aktuellen Kapitels üblich. Im Regelfall berechnet LaTeX für Ihr Dokument einen Satzspiegel, der Seitenbereiche für diese Elemente vorsieht. In diesem Abschnitt beschreiben wir, wie Sie Kopf- und Fußzeilen Ihren Wünschen mit Hilfe der KOMA-Erweiterung scrpage2 anpassen können. Dies ist ein Auszug aus der KOMA-Dokumentation ab Seite 214. Wir starten mit:

\usepackage[automark]{scrpage2}

Innerhalb Ihrer Arbeit kann es unterschiedlich konfigurierte Kopf- und Fußzeilen geben. Bei LaTeX nennt man so eine Konfigurationen Seitenstil, die mit dem Befehl \pagestyle{…} aktiviert wird. Wenn Sie das scrpage2-Paket geladen haben, stehen Ihnen zwei neue Seitenstile zur Verfügung. Sie verwenden insgesamt drei Stile:

  • empty: leere Konfiguration
  • scrplain: Konfiguration für Seiten die z.B. Teil von Inhalts- und Tabellenverzeichnis sind
  • scrheadings: reguläre Konfiguration

Diese Stile werden automatisch bei den jeweiligen Seiten aktiviert. So sind die Stile vordefiniert:

  • scrplain:
    • Einseitige Dokumente: Seitennummer unten (zentriert)
    • Zweiseitige Dokumente: Seitennummer unten (außen)
  • scrheadings:
    • Einseitige Dokumente: Kolumnentitel oben (zentriert), Seitennummer unten (zentriert)
    • Zweiseitige Dokumente: Kolumnentitel oben (außen, links Hierarchie 1, rechts Hierarchie 2), Seitennummer unten (außen)

Wollen Sie Ihren eigenen Stil entwerfen, beginnen Sie damit, die bestehenden Stile zu leeren:

\pagestyle{scrheadings}
\clearscrheadfoot

Nun sind alle Ihre Seitenstile leer. Wir stellen Ihnen jetzt einen Teil der Befehle vor, mit denen Sie neue Komponenten eingliedern können. In vielen Fällen sind die hier vorgestellten ausreichend. Alle übrigen entnehmen Sie bitte der KOMA-Dokumentation:

  \ihead[...]{...}
  \chead[...]{...}
  \ohead[...]{...}

Mit diesen Befehlen können Sie die Kopfzeile befüllen. Der optionale Parameter in eckigen Klammern definiert den Inhalt für scrplain, der in den geschwungenen für scrheadings. \ihead befüllt die Innenseite: links oben auf rechten Seiten und rechts oben auf linken Seiten ;-). \chead befüllt die Kopfzeile zentriert. \ohead befüllt die Außenseite. Bei einseitigen Dokumenten ist jede Seite eine rechte Seite. Die gleichen Befehle gibt es für die Fußzeile: \ifoot, \cfoot, \ofoot. Auch hier gilt: innen (inner), zentriert (center), außen (outer).

Als Beispiel befüllen wir die Kopfzeile jeweils auf der Außenseite mit der Seitennummer für beide Seitenstile. Weiters befüllen wir die Innenseite der Kopfzeile mit einem Kolumnentitel – allerdings nur im regulären Seitenstil scrheadings:

\ohead[\pagemark]{\pagemark}
\ihead[]{\headmark}

Der Kolumnentitel verhält sich vorerst wie voreingestellt. In der Klasse scrbook wird links das aktuelle Kapitel und rechts der aktuelle Abschnitt angezeigt. Angenommen Sie wollen den Kolumnentitel eine Ebene tiefer angeben, können Sie dies mit \automark{links}{rechts} angeben. Zur Illustration die Voreinstellung und die Anpassung:

\automark[chapter]{section}        % Voreinstellung
\automark{section}{subsection}     % Anpassung

Falls Sie es wünschen, können Sie auch Trennlinien zwischen Kopfzeile und Text erstellen:

\setheadsepline[\textwidth]{1pt}

Änderungen am Schriftsatz führen Sie am Besten mit \setkomafont durch. Wir wechseln als Beispiel in eine serifenlose Schrift und stellen die Seitennummer im Fettdruck dar:

\setkomafont{pageheadfoot}{\sffamily}
\setkomafont{pagenumber}{\bfseries}

Für weitere Möglichkeiten konsultieren Sie bitte die Dokumentation von scrpage2.

Abbildungen und Gleitobjekte

Die Positionierung von Abbildungen mit LaTeX frustriert viele Anfänger. Das liegt oft am Missverständnis von Gleitobjekten. Abbildungen (figures) und Tabellen (tables) werden üblicherweise in sogenannte Gleitobjekte (floats, auch Gleitumgebung) eingeschlossen. Das bedeutet konkret:

  • In der Eingabedatei positionieren Sie eine Abbildung dort, wo sie semantisch hingehört.
  • LaTeX übernimmt für Sie die Suche nach einer passenden Stelle zur Darstellung.

Anfangs kann man dies als Kontrollverlust werten. Dies ist auch der Fall. Viele Benutzer stellen aber im Laufe der Zeit fest, dass LaTeX ihre Abbildungen genau so positioniert, wie es zu erwarten ist. Das besprechen wir aber gleich im Detail.

Gleitobjekte

Grafiken an sich können wie im Tutorial beschrieben eingebunden werden. LaTeX behandelt Grafiken wie große Buchstaben, die ohne weitere Behandlung Textfluss und Zeilengefüge stören. Daher wird ein Gleitobjekt (für Abbildungen figure) erstellt:

\begin{figure}
  \centering
   \includegraphics[width=0.8\textwidth]{grafik}
   \caption{Meine Abbildung}
   \label{fig:mein-bild}
\end{figure}

Mit \caption und \label fügen Sie nummerierte, referenzierbare Beschriftungen hinzu. \centering zentriert die Grafik. Ein Abbildungsverzeichnis kann mit \listoffigures ausgegeben werden. Der \caption Befehl verfügt über die gleiche Funktion wie Abschnitts-Befehle:

\caption[Text für Verzeichnis]{Text für Beschriftung der Abbildung}

Wenn Sie Quellenangaben in der Beschriftung verwenden, so können Sie diese damit im Abbildungsverzeichnis unterdrücken:

\caption[BHKW-Transferverluste]{BHKW-Transferverluste \cite{Roger_2011}}

Wichtig ist \caption immer vor \label zu verwenden. Andernfalls bezieht sich ein Label immer auf die zuletzt im Dokument ausgegebene Nummerierung – das kann beispielsweise die letzte Überschrift vor der Abbildung sein.

Automatische Positionierung

Bei der automatischen Positionierung von Gleitobjekten ist LaTeX gewissen Rahmenbedingungen unterworfen. Ihr Seitenlayout beinhaltet üblicherweise Kopfzeile, Fußzeile, Marginalien und den Textbereich. Gleitobjekte werden ausschließlich innerhalb des Textbereichs positioniert. Diese Grenze wird nicht überschritten:

Rahmenbedingungen für Gleitobjekte

Um im Fließtextmodus ein schönes Seitenlayout zu wahren analysiert LaTeX das Gleitobjekt und nahegelegene Absätze. Daraus wird eine optimierte Positionierung berechnet. Verunstaltete Absätze und halb-leere Seiten werden so vermieden. Das Gleitobjekt kann beispielsweise an den unteren Textrand verschoben werden, während der Folgeabsatz vorgezogen wird. Dabei wird ein Respektabstand zwischen Gleitobjekt und Text eingesetzt. Diese Automatik kann aus verschiedenen Gründen zu unerwünschten Ergebnissen führen:

  • Ihre Abbildungen sind zu groß für die Darstellung innerhalb des Textbereichs.
  • Ihre Abbildungen haben ein entartetes Seitenverhältnis.
  • Ihre Abbildungen haben nicht benötigte Ränder.
  • Das Verhältnis von Text zu Abbildungen fällt stark zu Gunsten der Abbildungen aus.

Auch wenn Sie der Meinung sind, eine Abbildung würde noch an eine bestimmte Stelle passen (z.B. nach einem Absatz bevor die Seite zu Ende ist) – wenn Sie Respektabstände und Beschriftung mit einberechnen ist es vielleicht doch nicht so. Respektieren Sie diese Gesetzmäßigkeiten, denen Sie nur schwer entfliehen können.

Positionierung mit Empfehlung

Ist es dennoch so, dass eine Ihrer Abbildungen in eine für Sie unmögliche Position verschoben wird, so kann Einfluss geübt werden. Wir raten aber davon ab, daraus eine Regelmäßigkeit entstehen zu lassen.

Dem Beginn der Gleitumgebung \begin{figure} kann ein gereihter Positionierungs-Wunsch angestellt werden. Das sieht so aus:

\begin{figure}[hbtp]
  ...
\end{figure}

Dieser Parameter gibt dem Platzierungsalgorithmus eine individuelle Empfehlung für die Positionierung des Gleitobjekts:

  • [h]: an der Stelle, an der es in der Eingabedatei angegeben ist (here)
  • [t]: am oberen Ende der aktuellen oder Folgeseite (top)
  • [b]: am unteren Ende der aktuellen Seite (bottom)
  • [p]: auf einer eigenen Seite für ein oder mehrere Gleitobjekte (page)

Sie können eine oder alle Optionen angeben. Es gibt keinerlei Garantie, dass Ihr Vorschlag akzeptiert wird. Angenommen Sie fügen nach einem Absatz, der sich am unteren Seitenende befindet, eine Abbildung ein. Dazu geben Sie den Vorschlag [hb] an. Die Abbildung kann aber weder am unteren Rand, noch direkt nach dem Absatz positioniert werden. Sie wird auf die nächste Seite verschoben.

Fügen sie dem Empfehlungsparameter ein ! an ([hb!]), so verhindern Sie, dass LaTeX weitere Optionen evaluiert. Das Gleitobjekt wird so positioniert, selbst wenn dabei ein unschönes Seitenlayout entsteht. Kann das Gleitobjekt technisch unmöglich auf die angegebene Weise positioniert werden, wird es (und alle folgenden) aufgeschoben und am Ende des Abschnitts oder Kapitels angehängt. Dies ist ein Effekt, den man in den seltensten Fällen will.

Wenn Sie bedenken, dass sich Ihre Textpassagen im Laufe der Arbeit ändern und damit das nachfolgende Seitenlayout beeinflusst wird, so sollte Ihnen klar werden, dass Positions-Empfehlungen nur am Ende Ihrer Arbeit sinnvoll sind. Sonst öffnen Sie das Tor für den beschriebenen Effekt. Besser aber verwenden Sie keine Positions-Empfehlungen.

Gleitobjekte und Fußnoten

Gleitobjekte die am unteren Seitenrand positioniert werden, können durchaus unterhalb von Fußnoten erscheinen. Das Problem wird im KOMA-Forum näher beschrieben. Abhilfe schafft das Paket footmisc:

\usepackage[bottom]{footmisc}

Textumflossene Grafik

Pakete, um ein Bild von Text umfließen zu lassen, gibt es recht viele - hier sollen nur zwei davon vorgestellt werden. Leider haben auch diese Pakete oft Probleme in Kombination mit normalen Gleitumgebungen, Aufzählungen oder produzieren Ergebnisse mit unschönen Abständen. Auch sollte man immer darauf achten, dass die einfache Lesbarkeit des Textes erhalten bleibt.

wrapfig

\usepackage{wrapfig}    % vor der Zeile \begin{document} einfügen
 
\begin{wrapfigure}{r}{0.4\textwidth}
 \vspace{-16pt}
 \centering 
 \includegraphics[width=0.35\textwidth]{meine-Grafik}
 \caption{Bildunterschrift der Grafik.}
 \label{fig:meine-Grafik}
 \vspace{-10pt}
\end{wrapfigure}
Hier kommt der Text der um das Bild fließt \ldots

Als Option kann bei wrapfig angegeben werden, ob das Bild rechts (wie hier, [r]) oder links [l] positioniert werden soll. Anschließend wird die Breite angegeben, die insgesamt reserviert werden soll (hier 0.4\textwidth, also 40% der Textbreite). Natürlich müssen nicht die kompletten 40% mit dem Bild ausgefüllt werden, in unserem Beispiel hat das Bild nur eine Breite von 35% der Gesamttextbreite. Dadurch vergrößern wir den Abstand, den die Abbildung zum Fließtext hat. Die beiden vspace-Befehle können verwendet werden um die Abstände nach oben bzw. unten zu korrigieren.

picinpar

Bei picinpar muss der Text, der um die Grafik fließen soll, in eine window Umgebung geschrieben werden. Um eine Grafik mit Beschriftung einzufügen, verwendet man z.B. figwindow:

\usepackage{picinpar}     % vor der Zeile \begin{document} einfügen
 
\begin{figwindow}[3, r, \includegraphics[width=0.35\textwidth]{meine-Grafik}, {Titel \label{fig:bla}}]
Hier kommt der Text der um das Bild fließt \ldots
\end{figwindow}

Die Optionen sind hier die Anzahl der Zeilen oberhalb der Grafik (3), die Ausrichtung (r für rechts), dann der Befehl um die Grafik einzufügen, und zuletzt die Beschriftung.

Weitere Beispiele zu diesen Paketen findet man in Grafikeinbindung in LaTeX mittels graphic[sx], wrapfig, picinpar und Beispiele zu picinpar.sty.

Mehrere beschriftete Bilder nebeneinander

Es werden 2 Möglichkeiten beschrieben, mehrere Bilder nebeneinander anzuordnen: ein Beispiel soll den Vergleich zwischen der Verwendung von minipage und subcaption verdeutlichen. Im ersten Fall (minipage) wird jedes Bild separat behandelt, hat also eine Beschriftung „Abbildung 1“ und „Abbildung 2“. Die zweite Möglichkeit mittels subcaption und caption fasst die Bilder zu einer einzigen „Abbildung 3“ zusammen, enthält aber eine „Abbildung 3a“ und eine „Abbildung 3b“.

minipage

Der Code für das dargestellte obige Beispiel lautet folgendermaßen:

  \begin{figure}[htbp]
    \begin{minipage}{0.4\textwidth}
     \centering
      \includegraphics[width=0.8\textwidth]{./TUG-logo}
      \caption{Bild links}
    \end{minipage}\hfill
    \begin{minipage}{0.4\textwidth}
     \centering
      \includegraphics[width=0.8\textwidth]{./TUG-logo}
      \caption{Bild rechts}
    \end{minipage}
  \end{figure}

Wir starten eine Gleitumgebung mit \begin{figure} und \end{figure}. Darin werden 2 Minipages eingebettet, getrennt durch ein \hfill (dieses füllt den Freiraum zwischen den Minipages auf). Die Minipages sollen je 40% der Textbreite ausmachen (0.4\textwidth). In jede Minipage kommt nun ein \centering, \includegraphics sowie die Bildbeschriftung. Bei den Optionen von \includegraphics muß darauf geachtet werden, dass die hier angegebene Textbreite sich auf die Textbreite der Minipage bezieht - das Bild füllt also 80% der Minipagebreite aus.

subcaption

Das Erweiterungspaket subcaption ist dafür geschaffen worden, eine Gleitumgebung aus mehreren Teilen zu erstellen. In diesem Fall geht es darum, zwei Grafiken zu einer Abbildung zusammenzufügen. Hier sieht der Code folgendermaßen aus:

## in der Präambel:
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
 
[...]
 
  \begin{figure}
        \centering
        \begin{subfigure}[b]{0.4\textwidth}
                \centering
                \includegraphics[width=0.4\textwidth]{./TUG-logo}
                \caption{Das linke Bild.}\label{fig:bild-links}
        \end{subfigure}%
        ~ % An dieser Stelle kann ein zusätzlicher Zwischenraum eingebunden werden: ~, \quad, \qquad, \hfill usw.
          % Eine leere Zeile erzwingt, dass die zweite Grafik darunter erscheint.
        \begin{subfigure}[b]{0.4\textwidth}
                \centering
                \includegraphics[width=0.4\textwidth]{./TUG-logo}
                \caption{Das rechte Bild.}\label{fig:bild-rechts}
        \end{subfigure}
        \caption{Das ist die Beschreibung für beide Bilder.}\label{fig:beide-Bilder}
  \end{figure}

Auch hier benötigen wir eine figure-Umgebung. Diese enthält neben einem \centering die „globale“ Beschriftung (hier \caption{Das ist die Beschreibung für beide Bilder.}). Die Abbildungen (a) und (b) werden mit subfigure und includegraphics eingebunden.

An dieser Stelle sollte erwähnt werden, dass das Paket subfig (ebenso wie subfigure) eine überholte Variante darstellt. Da es unter anderem im Zusammenspiel mit dem Paket hyperref zu Problemen kommt, ist die oben präsentierte Lösung mittels der Pakete caption und subcaption die wesentlich bessere.

Best Practice:

  • Abbildungen immer in Gleitobjekte einschließen und mit \caption versehen
  • Gleitobjekte ohne Empfehlungs-Parameter von LaTeX positionieren lassen
  • Grafiken verwenden, die sich für den Einsatz im Textbereich eignen

Wir haben im Tutorial schon kurz auf Querverweise im Dokument hingewiesen. Wir haben gezeigt, wie Sie auf Ihre Labels mit den Befehlen \ref und \pageref verweisen können. Für die nachfolgenden Beispiele gibt es ein Beispieldokument mit Quellcode. Auf eine Abbildung verweisen Sie so:

Abbildung~\ref{fig:kennzeichnung}

Das ~-Zeichen verwenden Sie anstatt des Leerzeichens. Das verbietet LaTeX, einen Zeilenumbruch zwischen „Abbildung“ und der Nummerierung einzufügen. Die Kennzeichnung im \label{…}-Befehl können Sie frei wählen. Guter Stil ist es, Abbildung mit fig:, Tabellen mit tab:, Gleichungen mit eq:, Kapitel mit chap: und Abschnitte mit sec: einzuleiten. Benutzen Sie für Ihre Labels keine anderen Sonder- oder Leerzeichen.

Hyperref und automatische Betitelung

In weiterer Folge zeigen wir, wie Sie Quer- und andere Verweise besser gestalten können. Dazu verwenden wir das Zusatzpaket hyperref, vorerst ohne Optionen. Das hyperref-Paket wird üblicherweise als letztes Paket in der Präambel geladen, da es sich so auf alle zuvor geladenen Pakete einstellen kann:

\usepackage{hyperref}

hyperref baut nun, gemäß den Standardeinstellungen Sprungmarken und Meta-Informationen in Ihr Ausgabedokument ein. So können Sie durch Klick auf Querverweise direkt zum Ziel springen. Ebenso können PDF-Anzeigeprogramme wie Acrobat Reader die Inhaltsstruktur anzeigen und die Seitennummerierung erkennen. Damit stimmen die Seitennummern im PDF-Anzeigeprogramm mit denen in Ihrer Kopf- oder Fußzeile überein, auch wenn Sie unterschiedliche Typen (römisch, arabisch, alphanumerisch) mischen.

hyperref stellt auch neue Befehle für eine bessere Referenzierung zur Verfügung:

  • \autoref: gibt nicht nur Nummerierung sondern auch Typ des referenzierten Objektes wieder (z.B. Abbildung)
  • \nameref: gibt nicht die Nummerierung sondern den Namen des referenzierten Objektes wieder (z.B. die Abschnittsüberschrift).

So verwenden Sie statt Bezeichnung~\ref{} einfach:

Der Energieverlust liegt dabei in den in
\autoref{fig:verlust} dargestellten Bereichen.

So können Sie sich ein wenig Schreibarbeit ersparen. Nebenbei besteht so jeder Link aus Bezeichnung und Nummer anstatt der Nummer alleine. Die Standardnamen für den \autoref-Befehl lassen sich natürlich anpassen:

\renewcommand{\sectionautorefname}{Abschnitt}
\renewcommand{\subsectionautorefname}{Abschnitt}
\renewcommand{\subsubsectionautorefname}{Abschnitt}
\renewcommand{\figureautorefname}{Abb.}
\renewcommand{\tableautorefname}{Tab.}

Das hyperref-Paket hat viele Optionen: Sie können die Art der Meta-Informationen, PDF-Anzeigeeinstellungen, Auswahl und Kennzeichnungen von Links und andere Features anpassen. Eine Einstellung, die viele Benutzer ändern wollen ist die Farbdarstellung der Links. Rahmen um Links werden in Form von PDF-Kommentaren erstellt und können so ausgeblendet und vom Druck ausgenommen werden. Änderungen an der Schriftfarbe dagegen wirken sich auch auf die Druckversion aus. Änderungen führen Sie mit dem Befehl \hypersetup durch. Hellblaue Rahmen um alle Links:

\usepackage{xcolor}
\definecolor{lightblue}{cmyk}{0.346, 0.114, 0, 0.106}
 
\usepackage{hyperref}
\hypersetup{
  colorlinks=false,
  allbordercolors={lightblue}
}

Nicht jedes PDf-Anzeigeprogramm stellt die Rahmen dar - bei manchen muss dies erst aktiviert werden. Acrobat Reader aber tut dies standardmäßig. Beliebt ist auch die Option linktocpage=true, die statt den Texten nur die Seiten im Inhaltsverzeichnis verlinkt. Wollen Sie hyperref verwenden, aber die Links nicht hervorheben, genügt colorlinks=false,allbordercolors=white. Weitere Einstellungsmöglichkeiten können Sie der Dokumentation entnehmen.

hyperref stellt wie das Paket url den Befehl \url{…} für die Darstellung von URLs zur Verfügung. Innerhalb des Befehls müssen Sie sich nicht um die von LaTeX unterdrückten Sonderzeichen kümmern. Um die Darstellung von URLs zu ändern, müssen Sie den Befehl \UrlFont neu definieren. Als Beispiel verwenden wir Courier als Schrift und eine etwas andere Darstellung:

\usepackage{courier}
...
\renewcommand\UrlFont{\ttfamily\bfseries\small}
...
Besuchen Sie \url{http://latex.tugraz.at}...

URLs sind oft sehr lang und können manchmal schwer umgebrochen werden - auch hier versucht LaTeX, gewisse Regeln einzuhalten. Haben Sie mit dem Standardverhalten Probleme, konsultieren Sie ebenfalls die hyperref Dokumentation. Wollen Sie statt der gesamten URL einen Link-Namen angeben, benutzen Sie \href{ziel}{name}:

\href{http://latex.tugraz.at}{{\LaTeX}@TU Graz}

Best Practice:

  • Gestalten Sie Ihre Labels sinnvoll und verwenden Sie die Präfixe sec:, fig:, tab:, …
  • Verweisen Sie auf alle Ihre Abbildungen und Tabellen im Text
  • Verwenden Sie hyperref, wenn Sie Dokumente digital verbreiten
  • Verwenden Sie für Querverweise einheitliche Bezeichnungen – am Besten verwenden Sie das Paket hyperref und den Befehl \autoref.

Eigene Kommandos

In einer Arbeit werden bestimmte Befehlskonstruktionen oft mehrmals gebraucht. Solche Konstruktionen können recht einfach zu neuen Befehlen zusammengefaßt werden.

\newcommand{\meinbefehl}{Definition}

Nehmen wir als Beispiel ein Zeichen F mit einem 'Dacherl'. Mathematisch würde man dies in LaTeX (in mathematischer Umgebung) kodieren mit

\hat{F}

Diese Konstruktion können wir einem neuen Kommando \Fhat zuteilen:

\newcommand{\Fhat}{\hat{F}}

Das erste Argument {\Fhat} gibt an, wie der neue Befehl heissen soll. Im zweiten Argument {\hat{F}} wird die Syntax des neuen Befehls definiert - \Fhat wird folglich im Code durch \hat{F} ersetzt.

\newcommand gehört in die Präambel (also vor \begin{document}). Dabei dürfen nur neue Befehle definiert werden – existierende Befehle können damit nicht ersetzt werden.

Nun kann man \newcommand noch um Parameter erweitern:

\newcommand{\Fhat}[2]{\hat{F_{#1}} = #2}

gibt an, dass \Fhat 2 Parameter aufnehmen kann. Verwendet man den neuen Befehl beispielsweise mit

\Fhat{max}{\sigma}

so wird der erste Parameter ('max') zum Index von F hinzugefügt, und auf die rechte Seite des '=' kommt das Zeichen 'sigma'. \Fhat{max}{\sigma} wird also zu \hat{F_{max}} = \sigma Empfehlenswert ist es, spezielle Konstruktionen immer mit \newcommand festzulegen: in den meisten Dokumenten kommen immer wiederkehrende Konstruktionen vor. Einerseits kann man durch Festlegen eines neuen Befehls mathematischen Code übersichtlicher gestalten, und man erspart sich Schreibarbeit.

Oft erkennt man auch erst nach dem Schreiben, dass evt. die Verwendung einer anderen Syntax für ein Zeichen besser wäre. Ein Beispiel: nehmen wir an, in einer Arbeit wird häufig die maximal zulässige (mechanische) Zugspannung \sigma_{max} benötigt. Man kann sich mit \newcommand{\sigm}{\sigma_{max}} ein Kommando \sigm definieren, welches \sigma_{max} einfügt. Nun kommt man am Ende der Arbeit drauf, dass man einen Querbalken über diese maximale Zugspannung geben muß. Hätte man sich keinen eigenen Befehl \sigm definiert, müßte man im gesamten Dokument alle vorkommenden \sigma_{max} ersetzen. Bei Verwendung von \newcommand ändert man einmal die Definition von \sigm, und das Problem ist gelöst.

Best Practice:

  • Häufig wiederkehrende Konstrukte flexibel mit eigenen Befehlen notieren

Dokumente aufteilen

Längere Dokumente können zu einer großen Eingabedatei führen. Es gibt LaTeX-Befehle, die das Laden weiterer Eingabedateien zulassen: \input und \include. Dadurch lässt sich ein Ausgabedokument sozusagen aus einer Summe von Einzeldateien erstellen.

\input ist der einfachere Befehl. Dort wo er verwendet wird, setzt er beim Kompilier-Vorgang den Inhalt einer anderen Datei unverändert ein. Für LaTeX ist das so, als wäre der eingesetzte Inhalt genau an dieser Stelle, zwischen der aktuellen und nächsten Zeile. Beachten Sie also die Abfolge, in der Sie den Befehl aufrufen. Die Inhalte der geladenen Dateien erscheinen in genau dieser Reihenfolge im Ausgabedokument. Das Grundgerüst (Präambel und document-Umgebung) muss nur in der Hauptdatei, aus der die übrigen Eingabedateien geladen werden, vorhanden sein.

\include dagegen ist ein intelligenter Befehl mit erweiterter Funktion. Er führt einen ähnlichen Effekt herbei. Allerdings gibt es dabei zwei Unterschiede:

  • Jeder \include Befehl erzeugt automatisch einen Seitenumbruch vor der eingefügten Datei.
  • Der Befehl \includeonly kann zusätzlich benutzt werden, um manche Dateien vom Kompilier-Vorgang auszuschließen. Dabei werden aber die Meta-Informationen (Labels, Seitenzahlen, …) des ausgeschlossenen Teils behalten. Dies kann dazu benutzt werden, den Kompilier-Vorgang bei großen Dokumenten zu beschleunigen.

In beiden Fällen gilt: der Kompilier-Vorgang wird immer auf die Haupt-Datei bezogen (wir nennen diese Datei auch Master-Datei oder Master-File). Die mit den Befehlen nachgeladenen Eingabedateien sind keine eigenständigen LaTeX-Dateien, da sie das Dokumentgerüst nicht enthalten. Viele Arbeitsumgebungen unterstützen das Festlegen einer Master-Datei. So wird der Kompilier-Vorgang immer auf das richtige Eingabedokument angewendet.

Benutzung von \input:

\documentclass{...}
...
 
\begin{document}
  \input{einleitung.tex}
  \input{versuchsanordnung.tex}
  \input{messdaten-gerhard.tex}
  \input{messdaten-robert.tex}
  \input{auswertung}
  \input{zusammenfassung}
\end{document}

Benutzung von \include:

\documentclass{...}
...
 
\includeonly{einleitung.tex,versuchsanordnung.tex,...}
 
\begin{document}
  \include{einleitung}
  \include{versuchsanordnung}
  \include{messdaten}
  \include{auswertung}
  \include{zusammenfassung}
\end{document}

\input und \include können auch dazu benutzt werden, Befehle in einer gesonderten Datei zu definieren:

...
\include{mycommands}
...

In diesem Zusammenhang heben wir hervor, dass sich LaTeX mitunter durch diese Funktion sehr gut für verteilt erstellte Dokumente wie Gruppenarbeiten eignet. Durch gezielte Aufteilung einzelner Passagen in getrennte Eingabedateien, kann das Dokument am Ende und auch während der Arbeit sehr einfach zusammengeführt werden.

Best Practice:

  • Große und verteilte LaTeX-Dokumente in Einzeldateien aufteilen
  • Das Master-Dokument mit \include zusammenführen

Quellcode darstellen

Beim Einbinden von Quell- oder Programmcode ist das Paket listings behilflich:

\usepackage{listings}

Code-Passagen lassen sich dann mit der Umgebung lstlisting einbinden:

\lstset{language=Pascal}
 
\begin{lstlisting}[caption=Pascal Code, label=lst:mycode]
begin
  a := 3;
  b := a * 4;
  c := (b + a)/ 2
end.
\end{lstlisting}

Innerhalb dieser Umgebung gelten Kriterien, die Sie unter Umständen schon von verbatim kennen: die LaTeX-Formatier-Mechanismen werden deaktiviert. Zeichen (inklusive aller Sonder- und Leerzeichen) werden unverändert im Ausgabedokument dargestellt. Daher kann Quellcode einfach kopiert und im Ausgabedokument dargestellt werden.

Mit \lstset werden die Optionen zur Formatierung dieser „Code-Blöcke“ festgelegt. Im obigen Beispiel wurde die zu erwartende Programmiersprache angegeben. Dadurch kann listings Schlüsselwörter der Sprache hervorheben. Welche bekannten Sprachen und zusätzliche Optionen es gibt, können Sie der Dokumentation entnehmen. Sprachen können bei Bedarf auch frei definiert werden.

Weiters sehen Sie im Beispiel eine Beschriftung (caption) mit Label. Das Label kann wie üblich mit \ref{lst:mycode} referenziert werden. Ein Verzeichnis aller Code-Blöcke lässt sich mit \lstlistoflistings ausgeben.

Ähnlich zum Inline-Mathematik-Modus gibt es auch einen Inline-Code-Modus. Statt den $-Markierungen für Start und Ende verwendet man !, da sie in gängigen Programmiersprachen als Zeichen seltener Vorkommen. Jeder Inline-Code-Block wird zusätzlich mit \lstinline eingeleitet:

Mit dem Anchor-Tag (\lstinline!<a href="">...</a>!) lassen...

Umlaute

Standardmäßig kann listings leider nicht mit UTF-8-kodierten Umlauten im Quelltext umgehen, oft kommen diese jedoch in Kommentaren vor. Abhilfe schaffen hier folgende Zeilen in der preamble:

\lstset{literate=%
    {Ö}{{\"O}}1
    {Ä}{{\"A}}1
    {Ü}{{\"U}}1
    {ß}{{\ss}}1
    {ü}{{\"u}}1
    {ä}{{\"a}}1
    {ö}{{\"o}}1
    {~}{{\textasciitilde}}1,} 

Best Practice:

  • Auf passende Zeilenlängen im Quelltext achten

Zahlen und Einheiten (Messgrößen)

Wieso wir uns mit diesem Thema überhaupt befassen: viele Dokumente weisen schlecht formatierte Kombinationen aus mathematischen Ausdrücken, Zahlenwerten und dazugehörigen Einheiten bzw. Messgrößen auf. Daher stellen wir hier das Paket siunitx vor. Es bietet Lösungsansätze für folgende Probleme:

  • Formatierung von Zahlenwerten
  • Formatierung von Messgrößen
  • Kompakte Schreibweise von Messgrößen

siunitx ist das umfassende Endprodukt aus Funktionen, Erfahrungen und Fehlern anderer LaTeX-Pakete wie units oder siunits. Wir weisen daher auch kurz auf Kompatibilität hin. Zur Begleitung gibt es ein fertiges Beispieldokument und den dazugehörigen Quell-Code. Wer das Paket vollends ausschöpfen möchte, konsultiert am Besten zusätzlich die Dokumentation. Zu unserer üblichen Präambel gesellt sich nun:

\usepackage{siunitx}

Wir legen in dieser Anleitung den Fokus auf einfache und kompakte Schreibweisen, die Ihre Ausdrücke, Tabellen oder Texte in der Eingabedatei übersichtlich halten. Messgrößen werden im Gegensatz zu Variablen nicht kursiv und je nach Konvention mit symbolischen oder echten Brüchen formatiert. Zahlenwerte sind mit einheitlichem Komma und in Dreier-Gruppen anzuführen. Ohne Erweiterungen müsste ein Zahlenwert in Mathematik-Notation daher in etwa so angeschrieben werden:

299\,792,458\,\text{km/s}

All dies nimmt uns das siunitx-Paket mit folgenden Befehlen ab:

  • \num{zahl}: Darstellung einer Zahl
  • \si{einheit}: Darstellung einer Einheit
  • \SI{zahl}{einheit}: Darstellung von Zahl und Einheit
  • \sisetup{…}: Anpassung von siunitx
  • \DeclareSIUnit..{..}: Erstellung eigener Einheiten

Nehmen wir an, Sie benötigen in Ihrer Arbeit regelmäßig die Geschwindigkeit (in zwei unterschiedlichen Dimensionen) und die Luftdichte. Also erstellen wir uns genau diese Messgrößen auf Basis der SI-Einheiten und Vorsätze, die siunitx vordefiniert:

\DeclareSIUnit\vl{\kilo\meter\per\second}
\DeclareSIUnit\vw{\kilo\meter\per\hour}
\DeclareSIUnit\ad{\kilogram\per\cubic\meter}

Definierte Messgrößen können beliebig komplex sein. siunitx erlaubt es, diese kompakt zu notieren – ohne dabei die Umwege von \newcommand zu gehen. Nun können wir das vorhergehende Beispiel so eingeben:

\SI{299792.458}{\vl}

Das Ergebnis wird vorerst wie voreingestellt formatiert: bei Zahlen wird als Trennzeichen ein Punkt verwendet, Messgrößen werden anstatt mit Brüchen reziprok dargestellt. Diese Darstellung entspricht aber nicht unseren Vorgaben. Daher setzen wir Anpassungen ein:

\sisetup{
  output-decimal-marker = {,},
  per-mode = symbol}

Als Ergebnis erhalten wir Dezimaltrennung mit Komma und Messgrößen mit Schrägstrich. Mit Hilfe von siunitx können sehr viele Formatier-Optionen während der Arbeit verändert werden, ohne dabei die eigentlichen Zahlen- und Einheiten-Angaben zu modifizieren.

Verwendung im Text

Die Befehle von siunitx können in dieser Form auch im Text verwendet werden. Wir führen dies gleich in erweiterter Form vor und geben Bereiche an:

Die Luftdichte liegt im vorgesehenen Betriebsbereich zwischen
\SIlist{1.4224;1.1455}{\ad}. Tabelle~3.1 zeigt die abhängigen
Leistungspotenziale bei Windgeschwindigkeiten von
\SIlist{30;40;50;60}{\vw}.

Die Sprachvorgaben für Bereiche lassen sich so festlegen:

\sisetup{
  list-final-separator = { und },
  list-pair-separator = { und },
  range-phrase = { bis }
}

Das Ergebnis sind formatierte und ausformulierte Zahlenwert- und Bereichsangaben innerhalb der Textpassagen. Natürlich wirken sich auch hier alle Formatier- und Formulier-Optionen nachträglich einheitlich aus.

Anmerkungen und Kompatibilität

Wer bereits Pakete wie units kennt, wird feststellen, dass der Befehl \SI etwas anders funktioniert als beispielsweise \unit[Zahl]{Einheit}. \SI verwendet einen Number-Processor zur Zahlenformatierung, der ohne Anpassung keine komplexen mathematischen Ausdrücke wie Brüche akzeptiert. Der Fokus liegt hier auf Darstellung von Messdaten, der diesen Anwendungsfall nur am Rande vorsieht.

Wollen Sie dennoch ein derartiges Verhalten erreichen, kann der Number-Processor mit der Option [parse-numbers=false] deaktiviert werden. Sie können sich beispielsweise einen Befehl definieren:

\newcommand{\mSI}[2]{\SI[parse-numbers=false]{#1}{#2}}

Sie können den Befehl \mSI nun beinahe wie \unit verwenden. Theoretisch können Sie den Befehl auch mit optionalem Parameter und Namen \unit definieren. Davon raten wir aber ab.

Best Practice:

  • Zahlen und Einheiten mit \num, \si bzw. \SI darstellen
  • Wiederkehrende Messgrößen mit \DeclareSIUnit definieren

Mathematische Ausdrücke

LaTeX beherrscht auch ohne Erweiterungspakete einige Mathematik-Funktionen. Wir empfehlen aber, durchgängig die AMSmath-Erweiterungen zu benutzen:

\usepackage{amsmath,amssymb,amstext}

Die Dokumentation von AMSmath ist ausführlich. Wir fassen im Folgenden häufig benötigte Konstrukte zusammen. Weiters gibt es eine Übersicht der verfügbaren mathematischen Symbole.

Mathematik-Umgebungen

Die AMS-Erweiterungen bieten viele Umgebungen zur Darstellung mathematischer Ausdrücke. Wir verwenden nachfolgend zur Erläuterung einheitlich den Begriff Formel, wenngleich es sich bei mathematischen Ausdrücken streng genommen nicht um Formeln handeln muss. Eine Übersicht aller Umbegungen können Sie der Dokumentation entnehmen.

Für viele Anwendungsbereiche sind die folgenden Umgebungen ausreichend (je Umgebung ist immer eine nummerierte und eine unnummerierte Variante verfügbar, z.B. equation/equation*):

  • equation: Eine Formel, einzeilig, einfach nummeriert.
  • gather: Mehrere Formeln, eine Formel pro Zeile, mehrfach nummeriert. Der Zeilenumbruch erfolgt mit \\.
  • multline: Eine Formel, verteilt auf mehrere Zeilen, einfach nummeriert. Der Zeilenumbruch erfolgt mit \\.
  • align: - Eine Formel, verteilt auf mehrere Zeilen, nach Spalten ausgerichtet, einfach nummeriert. Der Zeilenumbruch erfolgt mit \\. Spalten werden mit &, ähnlich der tabular-Umgebung notiert.

Klammersetzung

Runde, eckige und geschwungene Klammern werden mit (), [] und \{\} notiert. LaTeX beherrscht keine spezielle Erkennung für Klammer-Konstrukte. Klammern werden unabhängig von der mathematischen Bedeutung so ausgegeben, wie sie in der Eingabe-Datei angeben sind. Sollen sich Klammern der Höhe des eingeschlossenen Ausdrucks anpassen, sind sie mit den Stichworten \left bzw. \right zu versehen:

\left( \frac{...}{...} \right)

\left[ ... \right]
\left\{ ... \right\}

Matrizen

Für Matrizen gibt es spezielle Umgebungen, die innerhalb der regulären Mathematik-Umgebungen verwendet werden:

matrix      keine Klammern
pmatrix     (  )
bmatrix     [  ]
Bmatrix     {  }
vmatrix     |  |
Vmatrix     || ||

Spalten werden mit & getrennt, neue Zeilen mit \\ gekennzeichnet. Eine Einheitsmatrix:

\begin{bmatrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}

Mehr zum Thema Matrizen: Dokumentation, Seite 10.

Eingerahmte Formeln

Der Befehl \boxed erzeugt Rahmen um Ausdrücke:

\begin{equation*}\boxed{
  \begin{gathered}
    a^2 + b^2 = c^2 \\
    \sigma + \alpha = \beta
  \end{gathered}}
\end{equation*}

Da sich Rahmen nicht ohne weiteres um die Umgebungen multline oder gather legen lassen, verwenden wir hier eingebettete Umgebungen für mehrzeilige Ausdrücke. gathered kann bei Bedarf durch aligned ersetzt und wie align benutzt werden.

Text in Formeln

Wird im Vorspann das Paket amstext geladen, so kann auch Text in Formeln untergebracht werden:

\sigma_{\text{statisch}}

Tabellen

LaTeX kann Tabellen darstellen und zeichnen – verwechseln Sie dies aber bitte nicht mit Tabellenkalkulation. Tabellen werden üblicherweise wie Abbildungen mit Gleitobjekten positioniert und beschriftet (statt dem Typ figure verwenden Sie table, die Liste der Tabellen kann mit \listoftables ausgegeben werden).

Tabellen lassen sich auf drei Arten in Ihr Dokument einbinden:

  • Sie benutzen LaTeX-Befehle, um die Tabelle zu zeichnen und geben Zellenweise alle Elemente in der Eingabedatei an. Manche Arbeitsumgebungen bieten dafür Tabellenassistenten an.
  • Sie benutzen ein externes Programm (etwa eine Tabellenkalkulation), exportieren daraus eine Grafik und binden sie mit dem \includegraphics-Befehl ein.
  • Sie benutzen ein externes Programm, das eine Export-Option für mit LaTeX-Befehlen formatierte Tabellen bietet. Diese exportierte Tabelle kopieren Sie direkt in Ihre Eingabedatei oder in eine separate Datei, die Sie mit \input in Ihr Dokument einbinden. Für Microsoft Excel gibt es beispielsweise das freie Programm excel2latex.

Hilfreich ist allgemein ein Blick in das Nachschlagewerk „Kopka: LaTeX - Eine Einführung“, das auch große Tabellen behandelt. In den folgenden Abschnitten zeigen wir, wie Sie mit LaTeX-Befehlen selbst Tabellen entwerfen. Wie immer gibt es das Beispieldokument und den dazugehörigen Quell-Code.

Einfache Tabelle

LaTeX bietet zum Zeichnen von Tabellen die tabular-Umgebung. Als Parameter benötigt sie eine Spaltenformatierung, im einfachen Fall eine Buchstabenkette mit den Zeichen l-, r- und c, die jeweils links, rechts und zentriert ausgerichtete Spalten erzeugen. Wollen Sie beispielsweise drei links und eine zentriert ausgerichtete Spalte erzeugen, so ist der Parameter lllc.

Innerhalb der tabular-Umgebung werden einzelne Zellen mit dem &-Zeichen getrennt. Jede Tabellenzeile wird mit \\ abgeschlossen. Beispiel:

\begin{tabular}{rlr}
  Position & Beschreibung & Anzahl \\
         1 & Lenkrad      &      1 \\
         2 & Reifen       &      4 \\
         3 & Motor        &      1 \\
\end{tabular}

Dieses Beispiel erzeugt eine Tabelle ohne Trennlinien. Wie immer ignoriert LaTeX wiederholte Leerzeichen. Allerdings helfen uns diese Leerzeichen, den Überblick über den Quell-Code von Tabellen zu erhalten. Bei großen Tabellen ist dies unumgänglich.

Tabelle mit Trennlinien

Wollen Sie Ihre Zellen mit Trennlinien versehen, gibt es mehrere Möglichkeiten. Vertikale Linien werden im Spaltenparameter mit dem |-Zeichen erstellt. Wollen Sie also Außenlinien und eine Trennlinie in der Mitte erzeugen, geben Sie den Parameter beispielsweise so an: |lcc|lr|. Horizontale Linien können mit dem Befehl \hline vor oder nach der betreffenden Zeile erreicht werden.

Generell raten wir aber von vertikalen Trennlinien ab. Bei richtig formatierten Tabellen sind die Spalten alleine durch die einheitliche horizontale Ausrichtung der Zellen sichtbar. Daher stellen wir an dieser Stelle das Paket booktabs vor. Es bietet verbesserte horizontale Trennlinien für Tabellen. Vertikale Trennlinien sind nicht vorgesehen. In der Präambel:

\usepackage{booktabs}

Unser einfaches Beispiel erweitern wir nun um horizontale Trennlinien:

\begin{tabular}{rlr}
   \toprule
   Position & Beschreibung & Anzahl \\
   \midrule
          1 & Lenkrad      &      1 \\
          2 & Reifen       &      4 \\
          3 & Motor        &      1 \\
   \bottomrule
\end{tabular}

Verschmolzene Zellen

Benötigen Sie verschmolzene Zellen, so hilft Ihnen der Befehl \multicolumn{Anzahl}{Ausrichtung}{Inhalt}:

\begin{tabular}{rrlr}
  ...
  Vorhergehende Zelle & \multicolumn{3}{r}{Gesamtanzahl: 6} \\
  ...
\end{tabular}

Spalten-Modifier

Spalten können mit sogenannten Modifiers beeinflusst werden. Wollen Sie beispielsweise eine Spalte durchgängig fett auszeichnen, so können Sie dies mit einem Lead-Modifier im Spaltenparameter erreichen:

\begin{tabular}{rrl>{\bfseries}r}
  ...
\end{tabular}

Leider gibt es keine ähnlich einfache Angabe für Zeilen. Modifier sind in Kombination mit dem array-Paket sehr hilfreich. Es erlaubt, eigene Spaltentypen zu definieren:

\usepackage{array}
\newcolumntype{M}{>{$}c<{$}}
\newcolumntype{F}{>{\raggedleft}p{4cm}}

Dadurch sind zwei neue Spaltentypen für tabular verfügbar. In diesem Beispiel ist M eine Spalte mit zentrierten Mathematik-Ausdrücken und F eine rechts-ausgerichteter Paragraph mit fester Breite von 4cm.

Zellen- und Tabellenbreiten beeinflussen

Ohne weiteres Eingreifen ergibt sich die Tabellen- und Spaltenbreite automatisch durch Zelleninhalte. Die Spaltenbreite kann z.B. beim Spaltentyp p{…} festgelegt werden. Beispiel:

\begin{tabular}{rp{4cm}l}
...
\end{tabular}

Eine Tabelle in Textbreite zu generieren, wie man es von Textverarbeitungsprogrammen kennt, ist in LaTeX eine kleine Herausforderung. Das Erweiterungspaket tabularx kann Zellenbreiten zu einer angegebenen Tabellen-Gesamtbreite erweitern. Allerdings verlangsamen schon wenige Tabellen den Kompilier-Prozess derart, dass wir keine allgemeine Empfehlung aussprechen können.

tabulary schrumpft überlange Zellen, um eine definierte Tabellenbreite zu erreichen. Allerdings werden alle Spalten proportional gleich geschrumpft. Sind die Spaltenbreiten innerhalb einer Tabelle sehr unterschiedlich, führt dies zu unschönen Effekten. Auch hier können wir keine allgemeine Empfehlung aussprechen.

Durch die Verwendung von p{…}-Spalten mit Längenangaben können ebenso gewünschte Tabellenbreiten erreicht werden. Dabei ist auch das calc-Paket behilflich. Damit lässt sich eine Tabelle in Textbreite erstellen:

\begin{tabular}{p{1.5cm}p{\textwidth-6\tabcolsep-3cm}p{1.5cm}}
   \toprule
   Position & Beschreibung & Anzahl \\
   \midrule
   ... & ... & ... \\
  \bottomrule
\end{tabular}

Die mittlere Spalte nimmt dabei den restlichen im Textbereich verfügbaren horizontalen Platz ein. Für diesen Ansatz ist die Anatomie von Tabellen zu beachten: tabcolsep ist die horizontale Einheit, die LaTeX zwischen Spalten einsetzt. Am Rand wird links und rechts je eine Einheit eingesetzt. Zwischen Zellen je zwei Einheiten. Im Beispiel ergibt dies sechs Einheiten. 3cm ist die Summe der beiden anderen Spalten.

Best Practice:

  • Zellen richtig und einheitlich ausrichten
  • Auf vertikale Trennlinien verzichten
  • Tabellen immer in Gleitobjekte (table) einschließen und mit \caption versehen
  • „Best Practice“ für Gleitobjekte

Index anlegen

In vielen Büchern befindet sich am Ende des Werks ein Index. Ein solcher Index kann auch mit LaTeX angelegt werden. Die Vorgangsweise ist wie folgt:

1. Einträge in der Präambel

\usepackage{makeidx}
\makeindex

2. Indexeinträge erstellen

\index{Bezeichnung}
\index{Bezeichnung!Unterbezeichnung}
\index{Bezeichnung!Unterbezeichnung!Unterunterbezeichnung}

3. Index ausdrucken

\printindex

\index{Bezeichnung} erzeugt einen Eintrag „Bezeichnung“ im Index, der auf die aktuelle Seite verweist. Mit Unterbezeichnung und Unterunterbezeichnung werden der „Bezeichnung“ untergliederte Einträge erstellt. Ein kurzes Beispiel zur Erklärung:

\documentclass{scrartcl}
 
\usepackage{makeidx}
\makeindex
 
\begin{document}
\section{Graz}
Graz\index{Graz} liegt in der Steiermark. Die Stadt beheimatet nicht
nur mehrere Universitäten\index{Graz!Ausbildung}, sondern ist auch
kulturell\index{Graz!Kultur} weit über die Grenzen hinaus bekannt.
 
\printindex
\end{document}

Das Dokument muss nun in folgender Reihenfolge kompiliert werden:

  • 2x „pdflatex meineDatei.tex“
  • „makeindex meineDatei“
  • „pdflatex meineDatei.tex“

Beim Kompiliervorgang „makeindex“ wird eine externe Datei meineDatei.idx angelegt, die die anzulegenden Indizes enthält. Mit \printindex sollte schlußendlich der Index eingefügt worden sein.

Das Paket glossaries erlaubt ebenfalls das Erstellen eines Indexes. Hier werden auch noch weitere Möglichkeiten geboten wie zum Beispiel die Erstellung eines Abkürzungsverzeichnisses oder eines Symbolverzeichnisses. Die FAQs haben hierzu einen interessanten Link.

Absätze durch eine Leerzeile und nicht durch Einrücken kennzeichnen

Wenn kein KOMA-Skript verwendet wird:

\usepackage{parskip}

Bei Verwendung eines KOMA-Skripts (halfparskip sorgt für einen geringeren Durchschuss):

\documentclass[parskip]{scrartcl}
\documentclass[halfparskip]{scrartcl}

In Newsgroups findet man öfters folgende Lösung:

\setlength{\parindent}{0em}
\setlength{\parskip}{\baselineskip}

Dies sollte vermieden werden, da diese Konstruktionselemente nicht nur Absätze, sondern auch Listen, Verzeichnisse und Überschriften beeinflussen und somit das Gesamtlayout in Mitleidenschaft gezogen wird. Wenn nur einmal eine Leerzeile gebraucht wird, kann einer der folgenden Befehle verwendet werden:

\smallskip
\medskip
\bigskip

Andererseits kann einmaliges Einrücken durch folgenden Befehl vor dem ersten Wort im Absatz verhindert werden:

\noindent

Einbinden von externen PDF Dateien

Will man (z.B. im Anhang) externe PDF Dateien (oder Teile davon) einbinden, bietet das Paket pdfpages eine Lösung:

  \usepackage[final]{pdfpages}
  ...
  \includepdf{externeDatei.pdf}

Durch Angeben von Optionen (z.B. [pages={3,4,6}]) kann das Verhalten des Pakets beeinflußt werden – die genaue Verwendung der Optionen findet man in der Beschreibung

Auflisten von Verzeichnissen in der Inhaltsangabe

Will man die Seiten von Verzeichnissen (Abbildungsverzeichnis, Tabellenverzeichnis, Index, Literaturverzeichnis) in der Inhaltsangabe angeben, gibt es dazu zwei Möglichkeiten:

  • Bei Verwendung von KOMA-Script sind folgende Optionen hinzuzufügen:
  \documentclass[bibtotoc,idxtotoc,liststotoc]{scrbook}
  • Wird kein KOMA-Script verwendet, hilft ein Paket aus:
  \usepackage{tocbibind}
latex/fortgeschrittene.txt · Zuletzt geändert: 08.11.2013 09:09 von Thomas Quaritsch