Schicker Textsatz und Abbildungen dämmen die Ausbreitung von Bleiwüsten ein. Die Kombination aus LaTeX und externen Daten ist dabei weniger heikel, als man denkt – und ermöglicht große Freiräume.
Serie: LaTeX mit externen Daten anreichern
| Teil 1 | Datenbanken einbinden | LU 05/2013, S. 49 |
| Teil 2 | Seriendruck via Skript | LU 06/2013, S. 42 |
| Teil 3 | Abbildungen einbinden | LU 08/2013, S.### |
Von Natur aus unterstützt LaTeX nur das Vektorformat Encapsulated Postscript (EPS). Die EPS-Datei darf dabei lediglich eine einzige Seite umfassen. Falls das nicht zutrifft, sträubt sich der LaTeX-Compiler und bindet die Datei nicht ins Dokument ein.
Zum Einbinden laden Sie zuvor in der Präambel des LaTeX-Dokuments eines der beiden Pakete Epsfig oder Graphicx (siehe Kasten “Exkurs: Epsfig und Graphicx”). Die Option vor dem Paketnamen bestimmt dabei den externen Treiber, mit dem Sie die Bilddateien verarbeiten wollen.
Exkurs: Epsfig und Graphicx
Epsfig und Graphicx ermöglichen das Einbetten bereits bestehender Grafiken aus externen Dateien. Diese liegen entweder als Postscript, PDF, PNG oder JPEG vor. Um eigene Zeichnungen oder Abbildungen mit (La)TeX-Befehlen zu erstellen, stehen unter anderem die LaTeX-Pakete Picture, Epic, Pstricks und Metapost bereit, die wir hier aber nicht besprechen.
In Listing 1 benennt die erste Zeile dazu dvips. Diese Anweisung nutzen Sie beim Übersetzen mit latex nach DVI (und in Folge mit dvips nach Postscript oder dvipdfm nach PDF). Die Zeile 2 lädt hingegen nur das Paket Graphicx ohne Angabe eines Treibers. Dieser wird dann je nach aufrufendem Programm bestimmt: Beim Übersetzen mit latex kommt dvips zum Zug, bei pdflatex der Treiber pdftex.
Listing 1
\usepackage[dvips]{epsfig}
\usepackage{graphicx}
\usepackage[dvips]{graphicx}
\usepackage[dvipdfm]{graphicx}
Die nächsten beiden Zeilen zeigen wiederum die explizite Angabe eines Treibers: In Zeile 3 entstehen DVI-Dateien mit Hilfe von dvips, Zeile 4 nutzt stattdessen dvipdfm zum anschließenden Übersetzen der DVI-Datei in ein PDF-Dokument.
Rastergrafiken
Für Rastergrafiken wie PNG, JPG oder PDF benötigen Sie stattdessen das Paket Graphicx mit dem entsprechenden Treiber für das Ausgabeformat. Gebräuchlich ist die in Listing 2 gezeigt Kommandofolge für den direkten Weg nach PDF mittels pdflatex. In Zeile 2 laden Sie zuerst das Graphicx-Paket mit dem Treiber pdftex, danach fügen dem Dokument Sie mithilfe des Kommandos \includegraphics eine Abbildung hinzu (Zeilen 4 und 5).
Listing 2
...
\usepackage[pdftex]{graphicx}
...
\includegraphics{pinguin.png}
\includegraphics[h!]{pinguin.png}
...
Die Abbildungen landen – sofern das in der Objektanordnung von LaTeX passt – an der aktuellen Position im LaTeX-Dokument. Mit den Optionen [b] für “bottom” (am unteren Seitenrand), [t] für “top” (am oberen Seitenrand), [h] für “here” (an der aktuellen Position) und [h!] für “genau hier und nicht woanders!” helfen Sie LaTeX beim Positionieren (Zeile 5).
Neben den genannten Parametern bietet das Kommando \includegraphics etliche weiter Optionen zum Feintuning an, so etwa zum Skalieren und Drehen der eingefügten Abbildung (siehe Tabelle “Bildoptionen”). Mit zusätzlichen Parametern steuern Sie zudem Bildgröße sowie Drehwinkel und legen den Bildausschnitt fest. Ansonsten übernimmt LaTeX die Größe und Ausrichtung des Originalbildes unverändert.
Bildoptionen
| Option | Bedeutung |
|---|---|
width=x |
Breite der Abbildung |
height=x |
Höhe der Abbildung |
keepaspectratio |
falls true, behalte bei Größenänderungen das Seitenverhältnis bei |
scale=x |
Skalierungsfaktor |
angle=x |
Winkel zur Bilddrehung (entgegen dem Uhrzeigersinn) |
trim=liunreob |
Festlegung eines Bildausschnitts, Abstand von links, unten, rechts und oben |
clip |
falls true, Rand beschneiden, benötigt für trim |
page=nr |
falls mehrseitiges PDF, bezeichnet nr die abzubildende Seite |
draft |
falls true, wird nur ein Rahmen und der Dateiname angezeigt |
Bildformate und -einbindung
Geben Sie in der Erweiterung des Dateinamens keine Formatbezeichnung an, durchsucht der LaTeX-Compiler das angegebene Verzeichnis und benutzt die erste passende Grafik. Für latex und das Ausgabeformat DVI wird nach EPS gefahndet, für pdflatex und PDF kommen JPG, PNG oder PDF zum Zug.
Möchten Sie die Liste der Formate exakt vorgeben, hilft Dabei das Kommando \DeclareGraphicsExtensions in der Präambel. Listing 3 grenzt die Formate und die Auswahlfolge auf PNG und JPG ein, andere Bildtypen bleiben außen vor.
Listing 3
...
\DeclareGraphicsExtensions{.png,.jpg}
...
\includegraphics{pinguin}
...
Abbildung skalieren
Mit der Option scale legen Sie die dargestellte Größe der Abbildung fest. Bei Skalierungsfaktoren kleiner 1 erscheint die Abbildung verkleinert, andernfalls entsprechend vergrößert. Alternativ können Sie um die Abbildung auch eine \scalebox legen, die Gleiches bewirkt. Dabei geben Sie den Skalierungsfaktor in geschweiften Klammern an (Listing 4, Zeile 4). Das Ergebnis fällt bei beiden Methoden identisch aus.
Listing 4
...
\includegraphics[scale=0.5]{foto.png} % nur halb so groß
\includegraphics[scale=2.0]{foto.png} % doppelt so groß
\scalebox{0.5}{\includegraphics{foto.png}} % halb so groß mit scalebox
...
Breite und Höhe exakt festlegen
Mit den Optionen width und height für Breite und Höhe geben Sie als deren Werte ein LaTeX-Längenmaß an (Listing 5). In Kombination mit der Option keepaspectratio bleibt bei der Skalierung das Seitenverhältnis gewahrt (Zeile 2). Geben Sie beide Werte an, wird das Bild verzerrt.
Listing 5
...
\includegraphics[width=1cm,height=2cm]{foto.png} % 1x2cm
\includegraphics[width=1cm,keepaspectratio=true]{foto.png}
\includegraphics[width=\textwidth]{foto.png} % auf Spaltenbreite
\includegraphics[width=0.25\textwidth]{foto.png}
...
Als Größenangaben sind auch Variablen zulässig, wie etwa die Zeilenbreite (\linewidth), die Textbreite (\textwidth) und die Texthöhe (\textheight). Die Textbreite kommt oft zum Einsatz, um Abbildungen auf die Breite einer Spalte oder Box zu begrenzen, ohne deren vorher schon einmal festgelegte Größe ein zweites Mal exakt zu benennen (Zeile 4). Zeile 5 hingegen reduziert das Bild auf ein Viertel der Textbreite, wofür der Faktor 0.25 ohne Multiplikationsoperator vor der Variablen \textwidth den Ausschlag gibt.
Bilder drehen
Zum Rotieren von Abbildungen gibt es die Option angle. Den Winkel geben Sie in Grad an, die Drehung erfolgt entgegen dem Uhrzeigersinn (Listing 6, Zeile 2). Als Alternative steht das Kommando \rotatebox zur Verfügung, bei der Sie den Rotationswinkel als Option in eckigen Klammern angeben (Zeile 3).
Listing 6
...
\includegraphics[angle=180]{bild.png} % auf den Kopf gestellt
\rotatebox[45]{bild.png} % Drehung um 45 Grad nach links
...
Ausschnitt festlegen
Zum Auswählen eines Bildausschnitts dient die Option trim. Sie erwartet vier Parameter, mit denen Sie den Abstand von links, unten, rechts und oben präzise benennen. Mit der Option clip lösen Sie das Ausschneiden aus. Der Aufruf in Listing 7 beschneidet das Bild links und rechts um 5 mm sowie oben und unten um 10 mm. Die Abbildung 1 zeigt die bisher beschriebenen Effekte, die Abbildung 2 den Aufruf im Kontext.
Listing 7
...
\includegraphics[trim = 5mm 10mm 5mm 10mm, clip]{bild.png}
...

Abbildung 1: Das Bild wurde eingebunden, auf 25 Prozent der Seitenbreite verkleinert, um 180 Grad gedreht (Mitte) und beschnitten.

Abbildung 2: So sieht der LaTeX-Quellcode zur vorigen Abbildung aus (jeweils eingerahmt und in einer Miniaturseite platziert).
Für das Erstellen von Bildrahmen kennt \includegraphics keine separate Option. Am einfachsten greifen Sie auf das Standard-LaTeX-Kommando \framebox zurück und zaubern damit ein Viereck um ihre Abbildung, wie dies die Zeilen 2, 6 und 10 in Abbildung 2 demonstrieren.
Darstellung im Entwurfsmodus
Das Einbinden externer Daten kostet häufig viel Rechenzeit und fordert dem Benutzer einige Geduld ab, insbesondere bei vielen und größeren Abbildungen. Um im Vorfeld die Übersetzungsdauer zu verringern, kommt die Option draft ins Spiel. Statt der Abbildung produziert sie nur einen weißer Kasten mit dünnem schwarzen Rand, in dem sie den Dateinamen des Bilds angibt (Listing 8, Zeile 4).
Um das nicht bei jeder einzelnen Abbildung vornehmen zu müssen, können Sie die draft-Option auch bereits in der Präambel setzen (Zeile 2). Haben Sie das Dokument vollendet, ändern Sie am Schluss nur noch eine einzige Position im Text, und die Welt wird bunt.
Listing 8
...
\usepackage[draft]{graphicx}
...
\includegraphics[draft]{bild.png}
...
Zusatzpakete und -umgebungen
Als nützliche Ergänzungen erweisen sich oft das Paket Color [3] und die Umgebung Figure. Bei beiden handelt es sich um Standardkonstrukte, die jeder LaTeX-Distribution seit langem mitbringt. Color enthält verschiedene Farbdefinitionen und -modelle. Sie binden es in der Präambel über den \usepackage-Aufruf ein (Listing 9, Zeile 2). Für das Übersetzung mit Pdflatex ergänzen Sie den Aufruf am besten um die Option [pdftex] (Zeile 3).
Listing 9
...
\usepackage{color} % für latex
\usepackage[pdftex]{color} % für pdflatex
...
Die Umgebung figure bietet Kommandos zum Hinzufügen einer Unterschrift und einer Referenz zur Abbildung. In Büchern und wissenschaftlichen Dokumenten ist das Pflicht, um später korrekte Verweise auf die Abbildungen zu erhalten. Die Bildunterschrift erscheint zudem im Abbildungsverzeichnis mit der jeweiligen Seitennummer. Ein solches Abbildungsverzeichnis erzeugen Sie mit dem LaTeX-Kommando \listoffigures.
Der LaTeX-Code aus Listing 10 fügt die Bilddatei IMG_1051.JPG als Entwurf in einer gerahmten Miniaturseite ein und skaliert das Originalbild auf die entsprechende Breite. Daneben platziert er mit dem Kommando \caption eine Bildbeschreibung (Zeile 8). Ergänzend zu einem ausführlicheren Text können Sie auch in eckigen Klammern eine zusätzliche Kurzfassung eintragen, die dann statt der vollständigen Bildbeschreibung im Abbildungsverzeichnis erscheint.
Mit dem Kommando \label vergeben Sie für das Objekt eine Referenz-ID (Zeile 9). Damit verweisen Sie dann im Dokument mittels \ref oder \pageref auf die Abbildung (Zeile 1). Ersteres gibt die Nummer der Abbildung zurück, das zweite die Seite, auf der die Abbildung im Dokument erscheint. Die Referenz-ID dürfen Sie frei wählen, sie muss jedoch eindeutig sein und darf (mit Ausnahme eines Doppelpunkts) keine Sonderzeichen enthalten. Der in Listing 10 gezeigt Code bildet die Grundlage für das in Abbildung 3 gezeigte Ergebnis.
Listing 10
\noindent
\begin{figure}
\framebox{%
\begin{minipage}[b][3cm][c]{4cm}%
\includegraphics[draft,width=\textwidth]{IMG_1051.JPG}
\end{minipage}}\hspace{5mm}
\begin{minipage}[b][3cm][c]{4cm}%
\caption{In der Schokoladenfabrik von Nestl\'{e}/Cailler, Broc, FR}
\label{bild:schokoladenfabrik}
\end{minipage}
\end{figure}
\noindent Am Nachmittag stand eine Stippvisite zur Schokoladenfabrik in
Broc bei Fribourg an (siehe Abb. \ref{bild:schokoladenfabrik}). Zur
Anreise geht es am bequemsten mit der Bahn (siehe Abb. \ref{bild:ceg}
auf Seite \pageref{bild:ceg}).
...
Komplette PDF-Dateien einfügen
Auch bereits bestehende PDF-Dateien binden Sie bei Bedarf ohne größeren Aufwand ein. Dabei hilft das LaTeX-Paket Pdfpages, das unter anderem das Kommando \includepdf bereitstellt [4]. Ähnlich wie das Paket Graphicx verfügt \includepdf über Optionen, mit denen Sie die Qualität der Ausgabe im Dokument steuern.
Als stabile Optionen stehen derzeit draft und final zur Verfügung, die Option enable-survey gilt bislang noch als experimentelle Erweiterung. Dabei stellt draft einen Entwurfsmodus ein, final gibt das Bild wie gewohnt aus. Verzichten Sie auf das Angeben einer Option, dann arbeitet \includepdf im Modus final und zeigt die Miniaturseite an.
Weitere nützliche Optionen sind pages, nup, landscape, frame und delta. Mit pages geben Sie an, welche Seiten aus dem angegebenen PDF entnommen werden, nup bringt mehrere Seiten auf ein Blatt, und landscape ermöglicht das Einbinden im Querformat. Einen hübschen Rahmen zeichnet frame um die Miniaturseite. Mit den Werten in delta regulieren Sie den Abstand zwischen den eingefügten Seiten. Hier passen meist Werte zwischen 3 und 5 Millimeter.
Pdfnup
Das Linux-Paket pdfjam [5] bringt das Werkzeug pdfnup mit, das wir bereits in LinuxUser 10/2009 im Rahmen der Serie “Werkzeuge für PDF und PostScript” vorgestellt haben [6]. pdfnup nutzt für das Darstellen mehrerer Seiten pro Blatt die Funktionen des Pakets pdfpages.
Die Kommandofolgen in Listing 11 demonstrieren eine Auswahl der verschiedenen Möglichkeiten, die \includepdf bietet. Zeile 2 zeigt zunächst nur das Einbinden des Pakets mit der oben angesprochenen Option final.
Listing 11
1 ...
2 \usepackage[final]{pdfpages}
3 ...
4 \includepdf{datei.pdf} % nur erste Seite daraus
5 \includepdf[pages=-]{datei.pdf} % komplette Datei
6 \includepdf[pages=3]{datei.pdf} % nur Seite 3
7 \includepdf[pages={3,6-8}]{datei.pdf} % Seiten 3, 6, 7, 8
8 \includepdf[pages={6-}]{datei.pdf} % ab Seite 6 bis zum Ende
9 \includepdf[pages={-6}]{datei.pdf} % vom Anfang bis Seite 6
10 ...
11 \includepdf[landscape=true, pages={1,2}, nup=1x2]{datei.pdf}
12 \includepdf[landscape=true, pages={1,2}, nup=1x2, frame=true, delta=3mm 3mm]{datei.pdf}
13 ...
Während Zeile 4 lediglich die erste Seite des PDFs hinzufügt, demonstrieren die Zeilen 5 bis 9, wie Sie nur bestimmte Seiten entnehmen. Die Option pages füttern Sie entweder nur mit einer Seitenzahl (Zeile 6) oder mit einer ganzen Liste in geschweiften Klammern. Zeile 4 fügt die komplette Datei ein, Zeile 6 nur einzelne Seiten. In Zeile 7 erfolgt die Integration von Seite 6 bis zur letzten Seite, Zeile 8 zeigt das Gegenstück dazu.
Zeile 11 nutzt zusätzlich die beiden Optionen landscape und nup. Sie fügt die ersten beiden Seiten im Querformat ein und platziert diese dabei nebeneinander in einer Zeile. Hübscher sieht allerdings das Ergebnis von Zeile 12 aus, das über einen Rahmen verfügt (erzeugt mit der Option frame). Dabei halten die beiden Einzelseiten jeweils 3 Millimeter Abstand zueinander.
Letzteres eignet sich besonders für Handouts von Vorträgen, wobei Sie noch mit der Anzahl der Seiten pro Blatt experimentieren können. Als geeignet hat sich dafür die Angabe nup=2x2 herausgestellt – damit bleibt der Inhalt einerseits lesbar, andererseits ist der Platz auf dem Papier gut genutzt. Abbildung 4 zeigt als Beispiel dazu den testweisen Druck eines Buchs.
Fazit
Zwar gestaltet sich der Umgang mit Bilddaten in LaTeX-Dokumenten nicht besonders kompliziert, doch empfiehlt sich etwas Experimentierfreude, um mit den Paketen und deren Optionen vertraut zu werden. Ausführlichere Beschreibungen, weitere Beispiele, Vorlagen sowie Anwendungsfälle aus der Praxis finden Sie im Buch “LaTeX-Begleiter” [7] sowie online im LaTeX-Wikibook [8] oder bei Writelatex.com ([9],[10]).
Danksagung
Der Autor bedankt sich bei Thomas Winde für seine Anregungen und Kritik im Vorfeld dieses Artikels.
Infos
[1] LaTeX und Datenbanken: Frank Hofmann, “Angefüttert”, LU 05/2013, S. 49, https://www.linux-community.de/28417
[2] Seriendruck mit LaTeX: Frank Hofmann, “Am laufenden Band”, LU 06/2013, S. 42, https://www.linux-community.de/29106
[3] Paket Color (CTAN): http://www.ctan.org/pkg/color
[4] PDFs kopieren in LaTeX: http://gb01.blogspot.de/2008/03/include-pdf-in-latex.html
[5] Pdfjam: http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam/
[6] Pdfjam einsetzen: Frank Hofmann, “Blattweise”, LU 10/2009, S. 88, https://www.linux-community.de/19376
[7] LaTeX-Buch: Frank Mittelbach, Michael Goossens, “Der LaTeX-Begleiter” (2. Auflage), Pearson Education 2005, ISBN 9783827371669
[8] LaTeX-Wikibook: http://en.wikibooks.org/wiki/LaTeX
[9] LaTeX in der Cloud; https://www.writelatex.com/
[10] Mit LaTeX durchstarten: http://www.howtotex.com/general/12-great-resources-for-getting-started-with-latex/







