Das Schriftsatzsystem TeX wurde von Donald E. Knuth primär mit dem Ziel zur Verbesserung des Layouts seiner Bücher entwickelt. Ebenso wie LaTeX dient es in erster Linie der Erzeugung von Textsatz mit bestmöglichem Layout. Dem Einbinden von Graphiken wurde zunächst keine große Beachtung geschenkt. Erst im Laufe der Zeit wurden verschiedene Zusatzpakete entwickelt, mit denen sich Graphiken auf unterschiedliche Weise in LaTeX-Dokumente einbinden lassen. Der folgende Beitrag zeigt einzelne Varianten auf und wie diese angewandt werden können.
Graphiken lassen sich im Grunde genommen relativ einfach einbinden. Hierzu ist zunächst das Paket graphicx im Vorspann zu laden und anschließend an der betreffenden Stelle im Text der Befehl \includegraphics aufzurufen.
\usepackage{graphicx}
.
.
.
\includegraphics[opt]{datei}
Bei der Angabe des Dateinamens (datei) wurde bewußt die Dateiendung weggelassen. Das hat einen einfachen Grund, je nachdem ob das LaTeX-Dokument mit den Programmen latex und/oder pdflatex übersetzt wird, werden unterschiedliche Graphikformate benötigt.
Wenn, wie in dem Beispiel die Dateiendung nicht angegeben wird, sucht das betreffende Programm bei der Übersetzung automatisch nach einer Datei namens datei in einem Format welches von dem betreffenden Programm unterstützt wird. Die LaTeX-Datei kann auf diese Weise von beiden Programmen übersetzt werden. Wobei die Graphikdateien beider Formate den gleichen Namen (die jeweilige Endung ausgenommen) aufweisen und sich in dem gleichen Verzeichnis befinden müssen, das nicht zwingenderweise das aufrufende sein muß.
Über die optionale Angabe opt kann die Größe der Graphik sowie deren Ausrichtung beeinflußt werden. Hierzu stehen unter anderem die folgenden Parameter zur Verfügung:
Diese Angaben lassen sich auch beliebig miteinander kombinieren. Zu beachten ist hier jedoch, daß wenn Höhe und Breite einer Graphik festgesetzt werden, die Angaben relativ zur Originalgröße stehen sollten, andernfalls wird das Bild verzerrt dargestellt.
Die einzubindenden Graphiken müssen entweder direkt in einem von dem Übersetzungsprogramm unterstützten Format erzeugt oder aber in dieses Format konvertiert werden. Der Aufruf
for i in *.png;
do
convert $i `basename $i .png` .eps
done
konvertiert beispielsweise alle PNG-Dateien eines Verzeichnisses nach EPS. Das Programm convert ist Bestandteil von ImageMagick und auf vielen Systemen verfügbar.
Das Integrieren von Graphiken über \includegraphics beinhaltet einen großen Nachteil. Die Bilder werden stets dort eingebunden, wo der Befehl aufgerufen wurde. Insbesondere bei größeren Graphiken kann sich dies schnell störend auswirken. Angenommen ein Bild muß aufgrund seiner Größe auf die folgende Seite verschoben werden, dann bleibt auf der aktuellen Seite ein großer, weißer Fleck zurück.
Diese Problematik kann durch die Positionierung von Graphiken als sogenanntes Gleitobjekt verhindert werden (auf Tabellen kann übrigens der gleiche Mechanismus angewandt werden, die Umgebung ist nur eine andere). Objekte werden innerhalb dieser Umgebung nicht an einem vorgegebenen Platz fest positioniert, sondern sie gleiten auf die nächste, freie Stelle.
\begin{figure}[positi...
\includegraphics[width=0.5\textwidth]{datei}
\end{figure}
Im Grunde genommen wird nur der Befehl zum Einbinden der Graphik innerhalb der figure-Umgebung aufgerufen. Über die optionale Angabe position kann die Positionierung beeinflußt werden. Dabei gibt es folgende Möglichkeiten:
Die einzelnen Parameter können auch miteinander kombiniert werden, erfolgt keine weitere Angabe wird von LaTeX die Einstellung [tbp] verwandt. LaTeX versucht demnach die Graphik zuerst oben auf der Seite unterzubringen, schlägt dies fehl, unten auf der Seite, geht auch dieses Unterfangen erfolglos aus, kommt die Graphik auf eine eigene Seite, auf der sich auch mehrere Bilder befinden können.
Generell wird die Graphik nur dann auf der entsprechenden Seite ausgegeben, wenn diese dadurch nicht zu voll wird. Sie erscheint dort, wo LaTeX Platz dafür finden konnte (genau genommen werden bei der Übersetzung verschiedene Kriterien abgearbeitet, aufgrund derer die Positionierung letztlich vorgenommen wird). Allerdings besteht auch hier die Möglichkeit diese Regel zu umgehen.
Unter Nutzung des Paketes float kann mit der Positionsangabe [H] die Augabe an der Stelle wo der Befehl aufgerufen wurde, erzwungen werden.
Somit stellt sich dem/der aufmerksamen Leser(in) die Frage, warum er/sie nicht auf die figure-Umgebung verzichten und die Graphik wie am Anfang des Artikels beschrieben nur über \includegraphics einbinden kann...
Des Rätsels Lösung liegt darin, daß (bestimmte Formen der) Beschriftung der Graphiken nur in der figure-Umgebung vorgenommen werden kann (ohne dafür weitere Zusatzpakete zu laden).
Eine Beschriftung der Graphiken inklusive fortlaufender Nummerierung wird über den Befehl \caption realisiert. Da oftmals im Laufe des Dokumentes auf einzelne Abbildungen Bezug genommen werden soll, empfiehlt es sich den Aufruf um den Befehl \label zu ergänzen.
Das Zusammenspiel der beiden Befehle sieht beispielsweise wie folgt aus:
\begin{figure}
\includegraphics[width=\textwidth]{madeira_001}
\caption{Beweisfoto\label{beweis}}
\end{figure}
.
.
.
In der Abbildung \ref{beweis} auf Seite \pageref{beweis} ....
Was zu folgender Ausgabe führt
In der Abbildung 4 auf Seite 16 ....
Dabei erscheint die Bildbeschreibung (hier Beweisfoto) je nachdem wo der Befehl angegeben wurde über oder unter dem Bild. Optional kann noch ein weiterer Text angegeben werden, der in das Abbildungsverzeichnis aufgenommen wird, welches über den Aufruf \listoffigures generiert werden kann.
Falls eine Nummerierung der Abbildungen und das Erzeugen eines Abbildungsverzeichnisses nicht erforderlich sind, kann die Überschrift auch durch einfaches Einfügen einer Textzeile oder durch einen selbstdefinierten Befehl erfolgen.
Eine weitere Möglichkeit der Anwendung von Bildbeschreibungen bietet das Zusatzpaket caption. Hierbei wird die Graphik an der Stelle ihres Aufrufes in das LaTeX-Dokument eingefügt und die Abbildung mit einer Unterschrift versehen, die in das Abbildungsverzeichnis aufgenommen wird.
\usepackage{caption}
.
.
.
\includegraphics[width=\textwidth]{datei}
\captionof{figure}[verzeichnis]{text\label{bezug}}
Für die Nutzung des Befehls \captionof ist das Paket caption im Vorspann zu laden. Das Paket kann auch für die table-Umgebung genutzt werden, die dann entsprechend (statt figure) anzugeben ist.
Die Beschreibung der Graphik erscheint entweder über oder unter derselbigen, je nachdem wo der betreffende Befehl aufgeführt wurde.
Bei kleineren Graphiken erscheint es oftmals sinnvoll, Text um diese herumfließen zu lassen. Eins der Pakete, das diesen Zweck erfüllt ist picins, welches zunächst einzubinden ist.
Anschließend kann eine Graphik beispielsweise wie folgt eingebunden werden:
\usepackage{picins}
.
.
.
\piccaption{Ausblick Nonnental\label{ausblick}}
\parpic[ls]{\includegraphics[width=0.5\textwidth]{madeira_001}}
Ausflug mit dem Linienbus nach \textit{Curral das Freiras}.
Die Fahrt dauert ab \textit{Funchal} etwa eine Stunde und
....
Wie ersichtlich ist die Nutzung von picins denkbar einfach. Zunächst wird über \piccaption die Bildbeschriftung gesetzt und anschließend mittels \parpic das Bild linksbündig (l) eingebunden. Der weitere optionale Parameter s generiert einen schattierten Rahmen um das Bild. Alternativ lassen sich unter anderem auch einfache (f) oder gestrichelte Rahmen (d) sowie ovale (o) und 3D-Boxen (x) um die Abbildung zeichnen.
Aussehen und Format der Rahmen bzw. Boxen lassen sich über die Befehle \shadowthickness, \dashlength und \boxlength beeinflussen.
Normalerweise wird die Anzahl der Zeilen, die um die Graphik fliessen bei der Übersetzung der LaTeX-Quellen berechnet. Dieser Wert kann über den Befehl \picskip{..} individuell angepasst werden. Außerdem kann der horizontale Abstand zwischen der Abbildung und dem Text über \pichskip{..} geändert werden.
Verschiedene Effekte lassen sich auch über die jeweilige Umgebung erzielen, hierzu zählen frameenv, shadowenv, ovalenv sowie dashenv.
picins bildet die Nachfolge des Paketes picinpar und sollte statt dessen genutzt werden.
Das Paket wrapfig bietet sich als Alternative zu picins an. Auch wrapfig muß zunächst eingebunden werden, dann kann es wie folgt aufgerufen werden:
\usepackage{wrapfig}
.
.
.
.
\begin{wrapfigure}[14]{l}{6.2cm}
\includegraphics[width=0.5\textwidth]{madeira_001}
\caption{Ausblick auf das Nonnental\label{nonnental}}
\end{wrapfigure}
Ausflug mit dem Linienbus nach \textit{Curral das Freiras}.
Die Fahrt dauert ab \textit{Funchal} etwa eine Stunde und
....
Die Abbildung wird auch hier über eine eigene Umgebung in das Dokument eingebunden. Zunächst wird angegeben, wieviel Zeilen für die Graphik (mit optionaler Unter- oder Überschrift) frei gehalten werden sollen. Es folgen die Ausrichtung (links- oder rechtsbündig, zentriert ist in dieser Umgebung nicht möglich) sowie die Breite des Bildes.
Wie aus dem Beispiel ersichtlich kann auch hier eine Bildbeschreibung über den Befehl \caption auf gewohnte Weise erfolgen. Im Gegensatz zu picins läßt sich wrapfigure auch in zweispaltigen Texten anwenden.
Zwei Graphiken, die mit einer Bildunterschrift versehen sind, lassen sich relativ einfach über eine minipage-Umgebung realisieren.
\begin{figure}[htbp]
\centering
\begin{minipage}[b]{5 cm}
\includegraphics[width=0.8\textwidth]{madeira_001}
\end{minipage}
\begin{minipage}[b]{5 cm}
\includegraphics[width=0.8\textwidth]{madeira_002}
\end{minipage}
\caption{Ausblick auf das Nonnental\label{tal_beweis}}
\end{figure}
Die beiden Minipages werden in einer figure-Umgebung eingebettet, die zur besseren Darstellung zentriert wird. Einer einzelnen Minipage wird eine Breite von 5cm zugewiesen, die Bilder nehmen hiervon 80% ein. Die Breitenangabe bezieht sich hier auf eine Minipage, nicht auf die gesamte Textbreite.
Sollen für beiden Graphiken jeweils eine eigene Bildbeschreibung erfolgen, so muß der Befehl \caption jeweils in der minipage-Umgebung stehen.
\begin{figure}[htbp]
\centering
\begin{minipage}[b]{5 cm}
\includegraphics[width=0.8\textwidth]{madeira_001}
\caption{Nonnental\label{tal}}
\end{minipage}
\begin{minipage}[b]{5 cm}
\includegraphics[width=0.8\textwidth]{madeira_002}
\caption{Beweisfoto\label{beweis}}
\end{minipage}
\end{figure}
Eine weitere Möglichkeit einen ähnlichen Effekt zu erzielen, besteht in der Nutzung der subfigure-Umgebung:
\usepackage{subfigure}
.
.
.
.
\begin{figure}[htbp]
\subfigure[Nonnental]
{\includegraphics[width=0.3\textwidth]{madeira_001}}
\hfill
\subfigure[Beweisfoto]
{\includegraphics[width=0.3\textwidth]{madeira_002}}
\hfill
\subfigure[Ausblick]
{\includegraphics[width=0.3\textwidth]{madeira_003}}
\end{figure}
Auch dieser Befehl wird innerhalb der figure-Umgebung genutzt. Der Aufruf gestaltet sich jedoch übersichtlicher, da hier weniger Umgebungen und Befehle benötigt werden. Die Bilder (a), (b) und (c) werden nebst Beschriftung einfach über den Befehl \subfigure eingebunden.
Der wesentliche Unterschied zwischen den beiden Umgebungen ist, daß bei der Verwendung von minipage jedes Bild separat behandelt wird (Abbildung 1, Abbildung 2, ...). subfigure faßt die Bilder zu einer Abbildung zusammen und bildet Unterabbildungen, (a), (b), ...Hieraus resultiert auch unter anderem, daß eine Bildbeschreibung über \caption für alle Bilder (a), (b) und (c) vorgenommen wird.
....
\subfigure[Ausblick]
{\includegraphics[width=0.3\textwidth]{madeira_003}}
\caption{Curral das Freiras\label{curral_1}}
\end{figure}
Das erste Beispiel wurde hier nur um den Befehl \caption ergänzt. Wie aus dem Beispiel ersichtlich wird die Bezeichnung mit Buchstaben fortlaufend fortgeführt. Diese läßt sich mit dem Befehl
\renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}}
dahingehend ändern, daß die Nummerierung mit Zahlen vorgenommen wird.
Dieses und weitere Beispiele können der ausführlichen Dokumentation zu subfigure entnommen werden.
Die Umgebung floatflt sowie deren Vorgänger floatfig ähnelt der figure-Umgebung, was auch die gleiche Nutzung betrifft. Es werden Gleitobjekte erzeugt, die mit einer Beschriftung versehen werden können. Der wesentliche Unterschied liegt darin, daß bei floatflt (sowie floatfig) die Graphik links- oder rechtsbündig positioniert wird und, sofern Platz vorhanden ist, von Text umflossen werden kann.
\usepackage{floatflt}
.
.
.
....
Die Gegend ist wie gewohnt bergig und landschaftlich sehr
schön.
\begin{floatingfigure}[r]{0.45\textwidth}
\centering
\includegraphics[width=0.4\textwidth]{madeira_003}
\caption{Panoramablick\label{panorama}}
\end{floatingfigure}
Am Aussichtspunkt \textit{Eira do Serrado} sind wir
ausgestiegen. Herrliche Panoramablicke über das gesamte
\textit{Nonnental} und angrenzender Täler.
....
Die Abbildung kann rechts- und linksbündig positioniert werden. Die Ausrichtung kann auch in Abhängigkeit der aktuellen Seitenzahl erfolgen, je nachdem ob es sich um eine geraden oder ungeraden Wert handelt werden die Graphiken links- oder rechtsbündig ausgegeben. Hierzu ist der Positionsparameter auf p bzw. v (wenn zunächst die gegebenenfalls vorhandenen Parameter bei der Einbindung des Paketes ausgewertet werden sollen) zu setzen.
Es folgt die Angabe der Breite insgesamt sowie die für die Abbildung.
Bilder, Graphiken und Abbildungen lassen sich wie gezeigt relativ einfach mit dem Paket graphicx und dem Befehl \includegraphics in LaTeX-Dokumente einbinden. Sollen die Graphiken dagegen auf eine bestimmte Art innerhalb des Dokementes positioniert werden, ist Fein-Tuning erforderlich.
Hierzu stehen die beiden Umgebungen figure und minipage zur Verfügung, die zu den Standard-Umgebungen gehören und über die sich bereits vieles umsetzen läßt.
Den letzten Feinschliff erhalten die Dokumente über das zusätzliche Einbinden weiterer Pakete. Hiermit lassen sich Graphiken unter anderem im Fließtext oder mehrere Bilder nebeneinander positionieren.
Zu den Unterschieden der Pakete untereinander, ist auf den FAQs von DANTE (Deutschsprachige Anwendervereinigung TeXe.V.) der Hinweis, daß bezüglich der Positionierung von Graphiken im Fließtext die Pakete picins sowie floatflt und wrapfig empfohlen werden. Ersteres kann auch in Listen-Umgebungen angewandt werden, während die beiden letztgenannten Pakete auch table-Umgebungen unterstützen und am meisten können und die wenigsten Fehler aufweisen.