Fortgeschrittene

Überblick:

KOMA-Skript

Worum handelt es sich bei den KOMA-Skripts? Das sollte der folgende Absatz erklären, entnommen aus der Dokumentation:

KOMA-Script ist ein sehr komplexes Paket (engl. bundle). dies ist schon allein darin begründet, dass es nicht nur aus einer einzigen Klasse (engl. class) oder einem einzigen Paket (engl. package), sondern einer Vielzahl derer besteht. Zwar sind die Klassen als Gegenstücke zu den Standardklassen konzipiert [..], das heißt jedoch insbesondere nicht, dass sie nur über die Befehle, Umgebungen und Einstellmöglichkeiten der Standardklassen verfügen oder deren Aussehen als Standardeinstellung übernehmen. 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.

Oft lautet die Antwort auf die Frage "was machen die KOMA-Skripts?" einfach nur "die passen das Layout (Typographie) an die europäische Norm an". Dies ist zwar richtig, die KOMA-Skripts sind jedoch viel mächtiger. Allein ein Blick in die KOMA-Dokumentation verdeutlicht, dass durch Angabe einfacher Optionen beim Laden einer Klasse recht einfach das Layout angepasst werden kann. Die Doku ist sehr umfangreich, sie ist auch mehr als "Nachschlagewerk" gedacht.

Es gibt Klassen, die den Standardklassen entsprechen: "scrartcl" ("article"), "scrreprt" ("report"), "scrbook" ("book"):

\documentclass[12pt,a4paper]{scrartcl}

\usepackage[latin1]{inputenc}
\usepackage{ngerman}

\begin{document}

...

\end{document}
wäre ein Grundgerüst. Das Paket "vmargin" (das zur Vergrösserung der Seitenränder verwendet wird) kann weggelassen werden, die KOMA-Skripts haben eine sehr gute Anpassung der Seitenränder.

Noch ein Tip zu den KOMA-Skripts: es gibt einen Befehl für einen "Miniabschnitt": \minisec{kleine Überschrift}. Dabei handelt es sich um eine kleine, nicht numerierte Überschrift (Beispiele dafür sind in der Dokumentation auf Seite 77 zu finden ("Bauteile" und "Montage").

Es wird jedem, der sich für LaTeX interessiert, nahegelegt, sich einmal mit den KOMA-Skripts zu beschäftigen - erst beim Anwenden erkennt man die vielen Vorteile.

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, daß \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, daß 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, daß 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.

Dokumente aufteilen

Gerade längere Dokumente wie eine Diplomarbeit können zu einer recht großen LaTeX-Datei führen. Es gibt, um solchen großen Dateien entgegenzuwirken, die Möglichkeit, ein LaTeX-Dokument aufzuteilen:
\documentclass{...}
...

\begin{document}

\include{einleitung}
\include{versuchsanordnung}
\include{messdaten}
\include{auswertung}
\include{zusammenfassung}

\end{document}
Diese Anweisungen ersetzen beispielsweise \include{einleitung} mit dem Code, der in einer Datei "einleitung.tex" steht. einleitung.tex muß also kein \begin{document} mehr enthalten, sondern kann beispielsweise sofort mit \section{Einleitung} beginnen. Zu beachten ist, dass \include eine neue Seite beginnt.

Dieses "Ersetzen" kann beispielsweise auch dazu verwendet werden, um in einer externen Datei (mycommands.tex) gesammelte neue Befehle (erstellt mit \newcommand) einzubinden - in diesem Fall kommt in die Präambel vor \begin{document} der include-Eintrag:

...
\include{mycommands}

\begin{document}
...

Arbeiten mit dem Literaturverzeichnis

BibTeX erleichtert das Hinzufügen von Referenzen zu einer Arbeit. Bei den meisten Dokumenten (Berichte, Diplomarbeiten,..) ist zum Schluß ein Literaturverzeichnis anzugeben - dies wollen wir nun anhand eines Beispiels versuchen:

Erstellen der Literaturangaben

Zuerst legen wir eine Datei literatur.bib an - auch hier ist der LaTeX-Editor behilflich und erleichtert das Formatieren einer solchen Datei. Beginnen wir mit einer Veröffentlichung in einer Zeitschrift (engl: article). Die Editoren bieten Hilfestellungen an, solche "Umgebungen" einzufügen:
@Article{Prager1961,
author = 	 {W. Prager},
title = 	 {An Elementary Discussion of Definitions of Stress Rate},
journal = 	 {Division of Applied Mathematics},
year = 	 {1961},
}
"Prager1961" ist die Bezeichnung des Eintrages - vergleichbar mit dem \label-Befehl. Der Name muß eindeutig sein, das heißt, er darf in der gesamten Bibliography nur einmal verwendet werden; die restlichen Einträge dürften selbsterklärend sein.

Einfügen der Literaturdatei in das Dokument

Nachdem die Datei gespeichert ist (in dem Verzeichnis, in dem sich schon die .tex-Hauptdatei befindet), können wir die Bibliographie in die Hauptdatei einfügen: üblicherweise wird die Referenzliste am Ende eines Dokumentes platziert (jedoch noch vor \end{document}):
\bibliographystyle{plain}
\bibliography{literatur}
"plain" gibt an, wie die Liste zu formatieren ist (z.B. Layout, Sortierung der Einträge,..). Nicht alle der im Vergleich angegebenen Styles sind bereits vorinstalliert. "literatur" ist der Name der BibTeX-Datei, ohne die Endung .bib. Nun können wir Bezug nehmen auf die eingetragene Literatur:
Die exakte Herleitung kann in \cite{Prager1961} nachgelesen werden.

Kompilieren mit bibTeX

Um alle angegebenen Referenzen richtig zu erfassen, muß folgende Befehlsreihenfolge durchlaufen werden: Natürlich hilft auch hier der Editor mit: Diese Befehle müssen nicht bei jedem Mal kompilieren angewendet werden, sondern theoretisch nur einmal (beim Fertigstellen des Dokumentes), um alle Referenzen anzupassen. Natürlich kann man hie und da (zum Kontrollieren) diese 4 Befehle durchgehen.

Wenn alles geklappt hat, sollte im Dokument nun zu lesen sein

Die exakte Herleitung kann in [1] nachgelesen werden.
sowie ein Literaturabschnitt vorhanden sein.

Einfügen von Literatur ohne Zitieren

Manchmal will man einen Eintrag der .bib-Datei in das Literaturverzeichnis einbringen, ohne ihn im Dokument mit \cite{name} zu erwähnen. Dies ist möglich, indem irgendwo im Dokument (am Besten gesammelt kurz vor \bibliography{..}) \nocite{name} untergebracht wird.

Will man alle Einträge aus .bib einfügen, hilft \nocite{*}

Code einbinden

Beim Einbinden von Code ist das Paket listings behilflich. Schon mit einfacher Konfiguration kann Code bekannter Programmiersprachen formatiert in das Dokument eingebunden werden:
\usepackage{listings}
und nach \begin{document}:
\lstset{language=Pascal}

\begin{lstlisting}[caption=Beschriftung, label=lst:Sprungmarke]
Pascal-Code
\end{lstlisting}
In \lstset werden die Optionen zur Formatierung des Codes festgelegt - im obigen Beispiel wurde nur die zu verwendende Programmiersprache angegeben. Es gibt eine Unmenge an Optionen (bestimmte Keywords farbig einbinden, Angabe einer Zeilennummerierung beim Code,..), die man der Dokumentation entnehmen kann.

Weiters erhält obiges Beispiel eine Beschriftung sowie ein Label, wodurch man mit \ref{lst:Sprungmarke} auf den Codeschnippsel verweisen kann.

Natürlich wird nicht nur Pascal als Input verstanden: eine Liste (entnommen aus der listings-Dokumentation) enthält die möglichen language Optionen. Sind bei einer Programmiersprache mehrere Formatierungen möglich (in der Liste stehen diese in geschwungener Klammer), kann die gewünschte Formatierung in eckige Klammer gegeben werden, z.B.:

language=[LaTeX]TeX
Will man zuguterletzt ein Listings-Verzeichnis erstellen, reicht ein Befehl:
\lstlistoflistings

Einheiten setzen

"Was kann man bei Einheiten schon groß falsch machen?", wird man sich fragen. Mathematische Symbole werden bei genauem Hinsehen kursiv geschrieben - Einheiten hingegen sind, um sie von Variablen unterscheiden zu können, in gerader Schrift gesetzt. Weiters macht sich ein kleiner Abstand zwischen dem Zahlenwert und der Einheit ganz gut (Beispiel: links immer ohne units, rechts mit dem units-Paket).

Verwendung des Paketes:

\usepackage{units}
\unit[Wert]{Einheit}
\unitfrac[Wert]{Zähler}{Nenner}
"Wert" ist optional, "Einheit" bzw. "Zähler" und "Nenner" sind zwingend. Die Anwendung ist also recht einfach, in der Dokumentation (DVI) ist noch ein wenig mehr Information zu finden.

Kleiner Tip am Rande: man kann sich neue Kommandos definieren, die die Einheiten mit etwas Abstand und in eckigen Klammern vom Zahlenwert einsetzen:

\newcommand{\myunit}[1]{\;\left[ \unit{#1} \right]}
\newcommand{\myunitfrac}[2]{\;\left[ \unitfrac{#1}{#2} \right]}
Mit
U = 2.459\, 123 \myunit{V}
\sigma = \frac{F}{A} = 133.432\, 192\, 233 \myunitfrac{N}{mm^{2}}
erhält man somit folgendes Ergebnis.

Text in Grafiken ersetzen

Es gibt die Möglichkeit, Text in einer EPS-Grafik durch LaTeX-Text zu ersetzen. Zum besseren Verständnis ein Beispiel. Die obere Grafik stellt das EPS dar, wie es das Vektorgrafikprogramm xfig exportiert (siehe dazu auch LaTeX und xfig). Die in xfig eingegebenen Zeichen "a", "b" und "c" können nun beim Einbinden in LaTeX durch beliebige Zeichenfolgen ersetzt werden. Dazu müssen die Zeichen jedoch vom Grafikprogramm auch wirklich als Zeichen und nicht als Bitmap exportiert werden: Programme, die korrekt exportieren: Programme, die nicht korrekt exportieren: Zusätzlich zum graphicx-Paket muß das psfrag-Paket geladen werden:
\usepackage{psfrag,graphicx}
Das obige Beispiel mit ersetztem Text wurde nun folgendermaßen erstellt:
\begin{figure}[htbp]
  \centering
    \psfrag{a}[c][c]{$a=6\unit{m}$}
    \psfrag{b}[b][l]{$b=4\unit{m}$}
    \psfrag{c}[b][r]{$c=\sqrt{a^2 + b^2}$}
    \includegraphics[width=0.5\textwidth]{./pyt.eps}
    \caption{mit ersetztem Text}
\end{figure}
\psfrag muß vor dem Einfügen der Grafik eingebunden werden. Da das Ganze in einer abgegrenzten Umgebung geschieht (hier "figure", könnte jedoch auch \begin{center} ... \end{center} o.ä. sein), wirkt sich das Ersetzen nicht global aus, jedoch auf alle eingefügten Grafiken innerhalb der figure-Umgebung.

Der erste Parameter {a} gibt an, welche Zeichenkette zu ersetzen ist. Prinzipiell können bei \psfrag bis zu 4 Optionen angegeben werden (bzgl. Positionierung und Rotation). Die angegebenen [c],[l],[b] und [r] geben an, wie der Ersatztext horizontal und vertikal auszurichten ist: die Hypothenuse c wird durch einen etwas längeren Text ersetzt, der eventuell die Gerade überschreiben würde - deshalb wird der Ersatztext von c rechtsbündig ausgerichtet. Da sich "a" in der Mitte der unteren Kante befindet, wird der Ersatztext zentriert.

Der nun schon oft angesprochene Ersatztext folgt zum Schluß, z.B. {$c=\sqrt{a^2 + b^2}$}. Handelt es sich beim Ersatztext um eine mathematische Formel, muß diese natürlich durch $ .... $ begrenzt werden.

LaTeX und xfig

Das Grafikprogramm xfig bietet neben der oben beschriebenen Textersetzung eine weitere, sehr bequeme Möglichkeit zum Erstellen von LaTeX-Text in Grafiken. Der Text wird dabei beim Erstellen der Grafik direkt in LaTeX-Schreibweise eingegeben. Also zum Beispiel bei mathematischem Text mit den umgebenden Dollarsymbolen $ ... $. Diese Vorgehensweise erlaubt es, eine Grafik in mehreren Dokumenten zu verwenden, ohne daß der zu ersetzende Text in jedem Dokument separat angegeben werden muß.

Mit der Exportoption "Combined PS/LaTeX" von xfig lassen sich aus einer Grafik zwei Dateien erzeugen, zum einen eine TEX-Datei, welche den LaTeX-Text enthält, und zum anderen eine EPS-Datei mit den graphischen Elementen. In der TEX-Datei wird automatisch ein \includegraphics fü die EPS-Datei eingefügt. Somit genügt es, im Dokument mit \input die TEX-Datei einzubinden.

Voreinstellungen für xfig

xfig bietet die Möglichkeit, nur Teile des Textes in die TEX-Datei zu exportieren, und den restlichen Text als Grafik in den EPS-Teil zu geben. Die Auswahl des Textes, welcher in die TEX-Datei geschrieben werden soll, erfolgt über die Eigenschaften der Textobjekte. Da es aber sinnvoll ist, den gesamten Text in die TEX-Datei zu exportiern, sollte man das gleich als Voreinstellung festlegen. Dies geschieht mit folgenden Kommandozeilenoptionen: Weiters empfiehlt sich folgende Angabe:

Grafik Exportieren und Einbinden

Aus einer mit diesen Einstellungen erzeugten Grafik (xfig.fig) können nun über den Menüpunkt "File > Export..." die beiden Dateien erzeugt werden. Dazu muß lediglich "Combined PS/LaTeX (both parts)" als Sprache (Language) ausgewählt werden. Die dabei erstellten Dateien sind xfig.pstex_t für den TEX-Teil und xfig.pstex für den EPS-Teil.

Das folgende Fragment eines LaTeX-Dokuments zeigt die Verwendung der exportierten Grafik. Der wesentliche Unterschied zu EPS-Grafiken besteht darin, daß anstelle von \includegraphics der Befehl \input verwendet wird, und daß die Endung der TEX-Datei (pstex_t) mit angegeben werden muß.

\documentclass{article}
\usepackage{graphicx,color}

\begin{document}
  \input{xfig.pstex_t}
\end{document}
Mit latex und dvips kann anschließend eine Postscript-Datei erstellt werden (xfig.ps).

xfig und PDF

Ein weiterer Vorteil dieser Methode gegenüber dem psfrag-Paket ist der, daß PDFs mit pdflatex direkt aus LaTeX-Dokumenten erstellt werden können. xfig bietet ab Version 3.2 patchlevel 4 auch den Export von "Combined PDF/LaTeX (both parts)" an. Genau so wie beim Postscript-Export werden zwei Dateien erstellt, eine TEX-Datei mit dem Text (xfig.pdftex_t) und eine PDF-Datei mit der Grafik (xfig.pdftex). Das einfügen der Grafik in ein Dokument erfolgt gleich wie beim Erstellen einer Postscript-Datei. Allerdings erkennt LaTeX das Format einer pdftex-Datei nicht von selbst, daher ist es notwendig, dies separat zu definieren mit einer DeclareGraphicsRule-Anweisung.
\documentclass{article}
\usepackage{graphicx,color}
\DeclareGraphicsRule{.pdftex}{pdf}{.pdftex}{}

\begin{document}
  \input{xfig.pdftex_t}
\end{document}
Mit pdflatex kann anschließend eine PDF-Datei erstellt werden (xfig.pdf).

(Hinweis zum PDF-Export gibt es in den FAQ)

Postscript und PDF

In manchen Fällen ist es wünschenswert, aus einem Dokument Postscript und PDF zu erstellen. Das würde bedeuten, daß zwei verschiedene Versionen des Dokumentes notwendig sind. Um dies zu umgehen, führen wir einen neuen Befehl ein, der abhängig vom Ausgabeformat entweder die PS- oder die PDF-Version der Grafik lädt:
\documentclass{article}
\usepackage{graphicx,color}

\ifx\undefined\pdfoutput
  \newcommand{\inputfig}[1]{\input{#1.pstex_t}}
\else
  \newcommand{\inputfig}[1]{\input{#1.pdftex_t}}
  \DeclareGraphicsRule{.pdftex}{pdf}{.pdftex}{}
\fi

\begin{document}
  \inputfig{xfig}
\end{document}

Erweiterte Mathematik

LaTeX selbst beherrscht schon recht viel Mathematik, durch das zusätzliche Laden von AMSmath bekommt man jedoch noch zusätzliche Umgebungen zum Notieren von Formeln:
   \usepackage{amsmath,amssymb,amstext}
   
Die Dokumentation von AMSmath ist recht gut geschrieben - im Folgenden wird eine Übersicht gegeben und dabei immer wieder auf die jeweilige Seite in der Doku verwiesen.

Umgebungen

Formeln können unterschiedlich ausgerichtet werden - 1 Formel pro Zeile, mehrere Formeln an dem '='-Zeichen ausrichten, Formeln nebeneinander angeben, usw. Auf der Seite 4 in der Dokumentation ist eine Übersicht von Code und zugehörigem Ergebnis.

Eine Formel pro Zeile

Mit der Umgebung equation/equation* wird eine beschriftete/unbeschriftete einzeilige Formel angegeben.

Mehrere Formelzeilen zusammenfassen

In einer Umgebung gather/gather* können Formelgruppen angegeben werden. Dabei handelt es sich um eine beschriftete/unbeschriftete Formel pro Zeile. Prinzipiell erzielt man mit mehreren equation-Umgebungen dasselbe Ergebnis, die Gruppierung der Formel wäre jedoch nicht so deutlich, da die Zeilenabstände bei gather geringer gehalten werden. Den Zeilenumbruch erreicht man mit '\\'.

Formelzeilen unterbrechen

Ist eine Formel zu lang für die aktuelle Textbreite, kann man sie an einer beliebigen stelle brechen: die zugehörige Umgebung heisst multiline/multiline* (beschriftet/unbeschriftet), der gewünschte Zeilenumbruch wird mit '\\' markiert.

Ausgerichtete Formeln

align/align* - Umgebungen sind für ausgerichtete beschriftete/unbeschriftete Formeln zuständig. Am Besten sieht man sich die zugehörigen Beispiele auf Seite 4 und das Kapitel 3.6 ab Seite 6 der Dokumentation an. Grundsätzlich werden immer die Zeichen nach dem &-Symbol ausgerichtet. Nach jedem zweiten '&' erfolgt ein grösserer Abstand, um mehrere gruppierte Formeln nebeneinander schreiben zu können.

Allgemeines zur mathematischen Umgebung

Klammern

Klammergrößen werden automatisch mit einem der folgenden Konstruktionen angepaßt:
   \left(    \right)
   \left[    \right]
   \left\{   \right\}
   
Da die geschwungene Klammer einen fixen LaTeX-Befehl darstellt, muß er mit einem '\' versehen werden. Mehr zum Thema "automatisches Anpassen der Klammern" gibt es in der Dokumentation auf Seite 15.

Matrizen

AMSmath bietet einfache Möglichkeiten an, Matrizen mit unterschiedlichem Layout zu erzeugen. Die folgenden Umgebungen erstellen nach Einbinden in \begin{} \end{} Matrizen mit entsprechenden Klammern:
   matrix      keine Klammern
   pmatrix     (  )
   bmatrix     [  ]
   Bmatrix     {  }
   vmatrix     |  |
   Vmatrix     || ||
   
Bei Matrizen werden Spalten mit & getrennt, neue Zeilen werden mit \\ gekennzeichnet. Die Einheitsmatrix wird demnach folgendermassen codiert:
   \begin{bmatrix}
   1 & 0 & 0 \\
   0 & 1 & 0 \\
   0 & 0 & 1
   \end{bmatrix}
   
Mehr zum Thema Matrizen: Dokumentation, Seite 10.

Gerahmte Formeln

Unter AMSmath steht der Befehl \boxed zur Verfügung. Damit kann eine einzeilige Formel gerahmt werden:
   \begin{equation*}
   \boxed{a^2 + b^2 = c^2
   \end{equation*}
   
Um mehrzeilige Formeln zu rahmen, muß man diese zu einer Formelgruppe zusammenfassen:
   \begin{equation*}
     \boxed{\begin{gathered}
        a^2 + b^2 = c^2 \\
        \sigma + \alpha = \beta
     \end{gathered}}
   \end{equation*}
   
"gathered" kann, je nach Bedürfnis, auch durch "aligned" ersetzt werden.

Text in Formeln

Wird im Vorspann das Paket "amstext" geladen, so kann auch Text in Formeln untergebracht werdern:
   \sigma_{\text{statisch}}
   

Grafiken

Gleitumgebungen

Wie Bilder in das Dokument eingebunden werden können, wurde bereits im Tutorial erwähnt. Dort wurde mit einem einfachen \includegraphics die Grafik eingebunden. Das angewandte \includegraphics war dabei für LaTeX nichts weiter als ein "großer" Buchstabe. Bei größeren Bildern können diese den Textfluß jedoch stören - man stelle sich ein Bild vor, das aufgrund seiner Größe auf die nächste Seite verschoben werden muß; auf der vorigen Seite bleibt ein großer, weißer Fleck zurück. Eine Stärke von LaTeX ist es nun, Bilder als "Gleitobjekte" zu behandeln: man bindet das Bild ein und überläßt LaTeX die Positionierung. Eine solche Gleitumgebung könnte folgendermaßen aussehen:
   \begin{figure}[htbp]
     \centering
      \includegraphics[width=0.35\textwidth]{./bild.eps}
      \caption{Das ist mein Bild}
      \label{fig:mein-bild}
   \end{figure}
   
\begin{figure} und \end{figure} markieren Beginn und Ende des Gleitobjektes. Die Optionen [htbp] bestimmen, wo das Bild platziert werden soll: Will man also beispielsweise alle seine Bilder am Seitenbeginn platzieren, gibt man als Option nur [t] an. Werden alle 4 Optionen angegeben, probiert LaTeX das Bild zuerst [h]ere zu platzieren, dann "[t]op of the page", wenn hier auch kein Platz ist [b]ottom - falls auch dies scheitert, kommt das Bild auf eine eigene Abbildungsseite.

Wir haben jedoch auch einen neuen Befehl: \caption beschriftet das Bild mit dem angegebenen Text. Da Bilder oft in ein Abbildungsverzeichnis aufgenommen werden, kann man zwei Beschriftungen eines Bildes angeben (eine optionale und eine verpflichtende):

\caption[Dieser Text steht im Abbildungsverzeichnis]
        {Dieser Text steht unterhalb des Bildes}
   
Ein solches Abbildungsverzeichnis kann mit
   \listoffigures
   
erzeugt werden. Weiters können wir eine figure-Umgebung mit \label beschriften und Bezug darauf nehmen: "In Abbildung \ref{fig:mein-bild} ist zu sehen, daß..".

Der Vollständigkeit halber wird am Schluß noch eine weiter Option von \begin{figure} erwähnt: [h!] ermöglicht es, das Bild zwingend [h]ere zu positionieren. Welchen Nutzen hat dies, wo man dasselbe doch mit einem einfachen \includegraphics ohne figure-Umgebung erzielen kann? Nun, eine Beschriftung \caption kann nur bei einer figure-Umgebung angegeben werden - mit [h!] kann man also ein beschriftetes Bild genau an die Stelle setzen, an der es auch im Code vorkommt. Es wird jedoch geraten, auf diese Option zu verzichten - Gleitobjekte können (mit Optionen [t] oder [b]) ein wirklich schönes Gesamtlayout ergeben.

Textumflossene Grafik

Pakete, um ein Bild von Text umfließen zu lassen, gibt es recht viele - alle sollen nicht vorgestellt werden.

floatflt

   \usepackage{floatflt}
   
   \begin{floatingfigure}[r]{0.4\textwidth}
     \centering
      \includegraphics[width=0.35\textwidth]{./bild.eps}
      \caption{Das ist mein Bild}
      \label{fig:mein-bild}
   \end{floatingfigure}

   Dieser Text umfließt das eingebundene Bild, ...
   
Als Option kann bei floatflt 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össern wir den Abstand, den die Abbildung zum Fließtext hat. In der Dokumentation findet man mehrere Optionen, sowie bekannte Fehler und Möglichkeiten, diese zu beheben.

picins

floatflt kann Probleme bereiten, wenn es in Aufzählungen angewandt wird. Picins hat den Ruf, recht robust zu arbeiten. Ein Anwendungsbeispiel:
   \usepackage{picins}

   ...

   \piccaption{Graz bei Nacht\label{graz-bei-nacht}}
   \parpic[r]{\includegraphics[width=0.4\textwidth]{./graznacht.eps}}
   
würde das Bild graznacht.eps auf der Seite rechts [r] abbilden und mit der angegebenen Caption versehen. Picins kann auch Grafiken mit Boxen umrahmen - dies und mehr zu den möglichen Optionen steht in der Dokumentation mpic.

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 subfigure verdeutlichen. Im ersten Fall (minipage) wird jedes Bild separat behandelt, hat also eine Beschriftung "Abbildung 1" und "Abbildung 2". subfigure faßt 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 folgendermassen:
   \begin{figure}[htbp]
     \begin{minipage}{0.4\textwidth}
      \centering
       \includegraphics[width=0.8\textwidth]{./murauer.eps}
       \caption{Bild links}
     \end{minipage}\hfill
     \begin{minipage}{0.4\textwidth}
      \centering
       \includegraphics[width=0.8\textwidth]{./murauer.eps}
       \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, daß die hier angegebene Textbreite sich auf die Textbreite der Minipage bezieht - das Bild füllt also 80% der Minipagebreite aus.

subfigure

Hier sieht der Code folgendermassen aus:
   \usepackage{subfigure}
   
   \begin{figure}[htbp]
    \centering
     \subfigure[Bild links]
     {\includegraphics[width=0.4\textwidth]{./murauer.eps}}\hfill
      \subfigure[Bild rechts]
     {\includegraphics[width=0.4\textwidth]{./murauer.eps}}
      \caption{subfigure}
   \end{figure}
   
Auch hier benötigen wir eine figure-Umgebung. Diese enthält neben einem \centering die "globale" Beschriftung (hier \caption{subfigure}). Die Abbildungen (a) und (b) werden mit \subfigure[caption]{\includegraphics{bild} eingebunden. Wie die Beschriftung der einzelnen "Unterabbildungen" aussieht, kann mit Optionen festgelegt werden - mehr dazu in der Dokumentation.

Tabellen

Gleich zu Beginn soll gesagt sein, daß es sich bei Tabellen in LaTeX nicht um Tabellenkalkulation handelt, sondern um "statische" Tabellen. Deren Aufbau soll anhand von ein paar Beispielen erklärt werden (die Ergebnisse):

Beispiel 1

   \begin{tabular}{lcr}
     Pkt. & Artikel & Stück \\
     \hline
     1    & Lenkrad & 1     \\
     2    & Reifen  & 4     \\
     3    & Motor   & 1
   \end{tabular}
   
Was liefert obiger Code:

Beispiel 2

   \begin{tabular}{|l|p{4cm}|r|}
     \hline
     Pkt. & Artikel & Stück \\
     \hline
     1    & Lenkrad & 1     \\
     2    & Reifen  & 4     \\
     3    & Motor   & 1     \\
     4    & ein mehrzeiliger Text, der nach 4cm gebrochen wird & 2 \\
     \hline
   \end{tabular}
   
Tabellen sind bei LaTeX ein recht umfangreiches Thema. Gerade beim Erstellen größerer Tabellen existieren Hilfsmittel: Kile beispielsweise hat einen eingebauten Tabelleneditor, nicht zu verachten ist auch das Windows-Programm LaTable (Freeware). Wer seine Exceltabelle ins LaTeX-Format konvertieren will, sollte einen Blick auf excel2latex werfen. Hilfreich beim Erstellen großer Tabellen ist u.a. das Buch "Kopka: LaTeX - Eine Einführung", in der recht detailliert auf Feinheiten eingegangen wird.

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: 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.

Links in Dokumenten

Aus vielen PDF-Dokumenten kennt man es sicher - die Einträge der Inhaltsangabe verlinken auf die einzelnen Kapitel, es gibt eine "Strukturübersicht" im Acrobat Reader mit allen Abschnitten, und ein Klick auf Internetadressen öffnen diese im Browser. Die Erstellung solcher Links ist mit dem Paket "hyperref" möglich:
\usepackage{hyperref}
Dieses Paket sollte als letztes aller Pakete geladen werden!

Das sollte reichen, um per Mausklick im PDF zu Kapiteln springen zu können. Wie solche Links gekennzeichnet sind, hängt u.a. vom verwendeten PDF-Viewer ab. Man kann jedoch auch bei der Formatierung selbst Hand anlegen - die nötigen Optionen sind der Dokumentation zu entnehmen.

Einen Internetlink anzugeben erreicht man (natürlich bei geladenem hyperref-Paket) mit

\href{http://www.google.com}{Google}
also dem Link (www.google.com) und der Beschreibung (Google). Da es oft erforderlich ist, als Beschreibung ebenfalls den Link zu verwenden, bietet sich als Alternative zu
\href{http://www.google.com}{http://www.google.com}
die etwas kürzere Variante mit \url{Link} an:
\url{http://www.google.com}
Damit wird ein Link auf http://www.google.com erzeugt, derselbe Schriftzug wird auch im Dokument verwendet. Ein Vorteil hier ist weiters die etwas andere Formatierung des Links.

Optischer Randausgleich

Ermöglicht (u.a.) optischen Randausgleich. Dabei werden Zeichen, die "wenig" Platz beanspruchen (z.B.: - . , ! ) ein wenig über den rechten Textrand hinausgeschoben -- dadurch wirkt der rechte Rand einheitlicher. Zum Vergleich: ohneausgleich.pdf und randausgleich.pdf.

Installation unter Linux:

   \usepackage[activate=normal]{pdfcprot}
   
Dies funktioniert nur mit pdflatex. Mit
   pdflatex '\pdfoutput=0 \input datei.tex'
   
kann gearbeitet werden wie mit dem 'latex'-Befehl (eps-Grafiken können eingebunden werden, das Outputformat ist DVI).

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:

Erstellen von Präsentationen

Beamer ist eine Dokumentklasse zum erzeugen von pdf-Präsentationen. Somit muss mittels pdflatex gearbeitet werden. Um sofort in einer Umgebung die folgenden Befehle ausprobieren zu können, gibt es ein kleines Beispielprojekt. Je nach verwendeter LaTeX-Distribution muß die Beamer-Klasse eventuell noch installiert werden.

Nach erfolgreicher Installation kann begonnen werden -- das Grundgerüst sieht folgendermaßen aus:

\documentclass{beamer}
...
\begin{document}
...
\end{document}
Das Aussehen wird über vordefinierte Styles in der Preamble definiert. zb:
\usepackage{beamerthemeshadow}
Einzelne Folien werden mittels \frame definiert, und mittels \frametitle beschriftet.
\frame{
  \frametitle{Titel der Folie}
  
  ...
}
Struktur in die Präsentation bringt man, indem man mittels \section und \subsection Folien zusammenfasst. Dies sollte man am besten jeweils außerhalb der frames machen
\section{Einleitung}
\subsection{Theorie}

\frame{...}

\subsection{Beispiel}

\frame{...}
...
Die zeitliche Abfolge von zb Aufzählungen wird mittel <> oder \pause gesteuert.
\begin{enumerate}
  \item <1-> erster Eintag
  \item <2-> zweiter Eintrag
\end{enumerate}
oder
\begin{enumerate}
  \item erster Eintag \pause
  \item zweiter Eintrag \pause
\end{enumerate}
<2-4> sagt zb, dass in den Schritten 2-4 das Element \item zu sehen sein soll.

<-3> = beginn-3

<2-> = 2-ende

<-2, 4-6, 8->

Mittels \visible <> kann ein Teil nur in den entsprechenden Stufen dargestellt werden, in den übrigen verschwinden sie. \only <> ist ähnlich, jedoch mit dem Unterschied, dass es die entstehende Lücke schließt, indem es nachfolgenden Text nach vor schiebt. Blöcke werden folgendermaßen gesetzt:

\begin{block}{Beschriftung}
  Inhalt des Blocks
\end{block}
man unterscheidet: Audio und Video Material kann mit dem multimedia-Packet eingebunden werden. Dazu in der Preamble:
\usepackage{multimedia}
\usepackage{hyperref}
und an gewünschter Stelle:
\movie[height=3.5cm, width=4.8cm]{movie-label}{moviefile.avi}
in den Optionen können divere Einstellungen (zb: Höhe, Breite) getroffen werden. Ähnliches gilt für Sounds.
\sound[height=3.5cm, width=4.8cm]{sound-label}{soundfile.wav}
Details zur beamer Klasse findet man im beameruserguide, bzw. wenn man "latex beamer" googlet.