Tutorial für Fortgeschrittene

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{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
 
\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 KOMA-Dokumentation auf Seite 111 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.

newcommand: 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. Es gibt unterschiedliche Programme, mit denen es recht einfach ist, Literaturdatenbanken zu verwalten. Dafür sollten Sie auf jeden Fall einen Blick in unsere Softwaresammlung werfen. Dort sind abhängig vom Betriebssystem unterschiedliche Hilfsprogramme erläutert.

  @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 muss 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:

  • pdflatex hauptdatei.tex
  • bibtex hauptdatei (ohne .tex!)
  • pdflatex hauptdatei.tex
  • pdflatex hauptdatei.tex

Diese Befehle müssen nicht bei jedem Mal kompilieren angewendet werden, sondern theoretisch nur nachdem Anpassungen in der “.bib“ Datei gemacht wurden (und natürlich beim Ersten Mal), 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{*}

Hompage URL im Literaturverzeichnis

Der folgende Eintrag in der BibTeX-Datei erzielt die gewünschte Wirkung (mit geladenem Paket „hyperref“).

@Misc{latextug,
  author =       {{Hammer} and {Prokop} and {Voit} and {Quaritsch}},
  title =        {LaTeX@TUG},
  howpublished = "\url{http://latex.tugraz.at}",
}

Anpassen des Zitierens

Wer mit dem Ergebnis von BibTeX noch nicht ganz zufrieden ist und eigene Anpassungen vornehmen will, der soll sich mal mit biblatex beschäftigen.

Mit BibLaTeX kann man zum Beispiel erreichen, dass nur beim ersten Vorkommen eines Zitates in einer Fußnote mehr Infos zur Quelle stehen.

Eine kleine Anleitung befindet sich hier.

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.

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 heißt multline/multline* (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ößerer Abstand, um mehrere gruppierte Formeln nebeneinander schreiben zu können.

Allgemeines zur mathematischen Umgebung

Klammern

Klammergrößen werden automatisch mit einem der folgenden Konstruktionen angepasst:

     \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, muss 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 werden:

\sigma_{\text{statisch}}

\underbrace stört die Formatierung durch Überbreite

\underbrace erzeugt eine geschwungene Klammer, unter diese kann noch Text gegeben werden. Dabei tauchen hie und da Darstellungsprobleme auf:

  • Ist der Text, der unter \underbrace angegeben wird, zu breit oder zu hoch, wird die gesamte mathematische Umgebung daran angepasst (Klammern werden so groß dargestellt, daß auch die Beschreibung unter \underbrace erfaßt wird, Symbole werden an die Breite des Textes angepaßt,..). Manchmal will man das, manchmal jedoch nicht. Für letzteren Fall gibt es Lösungen:
    • Die Klammerhöhe soll nicht an den \underbrace-Text angepaßt werden: dazu wird zuerst die Höhe des gesamten \underbrace-Ausdrucks „zerstört“
\smash{\underbrace{oberer
 Formelausdruck}_{unterer Formelausdruck}}
  • Manchmal reicht dies schon aus - allerdings weiß ja TeX jetzt nicht mehr, daß in dieser Formel ein Ausdruck unten etwas mehr Platz braucht. Wird der Text der darauffolgenden Zeile über {unterer Formelausdruck} geschrieben, muß man TeX beibringen, diese Höhe einzukalkulieren. Dazu gibt man am Ende der Formel eine „vertikale Phantomhöhe“ an:
\vphantom{\underbrace{}_{unterer Formelausdruck}}
  • Der Formeltext soll nicht an die Breite des Textes unter \underbrace angepaßt werden: hier wird der lange Text in eine Box der Breite 0 und linksbündiger Ausrichtung geschrieben:
\underbrace{oberer Formelausdruck}_
 {\makebox[0mm][l]{$unterer Formelausdruck$}
  • Wem die Klammer von \underbrace zu sehr an der Formel klebt, kann sie durch Einfügen eines unsichtbaren Rechtecks (Höhe und Breite 0) verschieben:
\underbrace{\rule[-1ex]{0pt}{0pt}
 oberer Formelausdruck}_{unterer Formelausdruck}

{0pt} gibt Höhe und Breite an, der Ausdruck in eckiger Klammer ist der „Offset“ nach oben - in diesem Fall wird \rule um die Höhe des Buchstabens „x“ (1ex) nach unten verschoben.

Grafiken

Gleitumgebungen

Wie Bilder in das Dokument eingebunden werden können, wurde bereits unter “Einfaches Einfügen von Bildern“ 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}
   \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:

  • [h] versucht, das Bild [h]ier zu platzieren, wenn dies nicht mehr möglich ist, geht es zur nächsten Option weiter:
  • [t] platziert das Bild immer am Seitenkopf ([t]op)
  • [b] ist ähnlich wie [t], verschiebt das Bild immer an das Seitenende ([b]ottom)
  • [p] sammelt mehrere Bilder zusammen und platziert diese auf einer Seite (diese [p]age enthält dann nur Bilder, keinen Text)

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.

Gleitumgebungen unter Fußnoten

Gleitumbegungen, die mit [b] (bottom) gesetzt werden, können durchaus unterhalb von Fußnoten landen. Das Problem wird im KOMA Forum näher beschrieben. Abhilfe schafft hier ein Vezicht auf die Platzierung mit [b] oder das Einbinden eines Paketes in der Präambel:

\usepackage[bottom]{footmisc} %% verhindert Gleitobjekte unterhalb von Fußnoten

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{Titel}
 \label{fig:bla}
 \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 subfigure verdeutlichen. Im ersten Fall (minipage) wird jedes Bild separat behandelt, hat also eine Beschriftung „Abbildung 1“ und „Abbildung 2“. subfigure 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.

subfigure

Hier sieht der Code folgendermaßen aus:

  \usepackage{subfigure}
 
  \begin{figure}[htbp]
   \centering
    \subfigure[Bild links]
    {\includegraphics[width=0.4\textwidth]{./TUG-logo}}\hfill
     \subfigure[Bild rechts]
    {\includegraphics[width=0.4\textwidth]{./TUG-logo}}
     \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:

  • Nach \begin{tabular} folgt die Angabe der horizontalen Ausrichtung der einzelnen Zelleninhalte: hier wird die erste Spalte linksbündig (l), die mittlere Spalte zentriert © und die rechte Spalte rechtsbündig ® ausgerichtet.
  • Das Zeichen & kennzeichnet den Beginn einer neuen Spalte, \\ führt zu einem Zeilenumbruch
  • \hline erzeugt eine horizontale Linie

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}
  • Die vertikalen Striche (|) zwischen den Positionierungsangaben geben an, zwischen welchen Spalten eine Trennlinie gesetzt werden soll
  • p{4cm} legt die Spaltenbreite der zweiten Spalte auf 4cm fest, längerer Text wird hier gebrochen

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.

Horizontale Linien

Achtung: Um in einem normalen Fließtext (also nicht in einer 'table' Umgebung) eine horizontale Linie zu erzeugen ist nicht '\hline' das Mittel der Wahl sondern einer der beiden folgenden Varianten

\hrule
\rule{0.3\textwidth}{0.4pt}

da mit '\hline' alignment Fehler auftreten.

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.

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. Bei Verwendung von pdflatex kann der optische Randausgleich mit folgender Zeile aktiviert werden:

  \usepackage[activate]{pdfcprot}

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: 10.03.2012 13:18 von Karl Voit
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki