Grafikeinbindung in LaTeX Schriftliche Ausarbeitung zum Vortrag im Proseminar LaTeX Von Hannes Wernicke 1
Inhaltsverzeichnis 1. Einleitung 3 2. Die Bounding Box 4 3. EPS-Dateien 5 4. Das graphic[sx] Paket 5 5. Graphikeinbindung und Bearbeitung unter graphic[sx] 6 5.1 Skalieren, Größenänderung und Drehen 7 5.1.1 Beispiele 9 5.1.2 Potentielle Fehler 11 6. Das picinpar Paket 13 6.1 Beispiel 13 7. Das wrapfig Paket 14 8. Das rotating Paket 15 2
1. Einleitung Da zum Zeitpunkt der Entwicklung von TeX und LaTeX Graphiken keine große Rolle spielten und TeX insbesondere zum publizieren von (wissenschaftlichen) Texten gedacht war, wurde Graphikeinbindungen keine große Beachtung geschenkt. Durch die Entwicklung neuer Graphikformate wie tif, jpeg, ps etc. und deren Möglichkeiten wurden auch die Entwickler von TeX/LaTeX auf diese Formate aufmerksam. Dies geschah unter anderem auch, weil die Graphikerstellung unter TeX/LaTeX nur sehr begrenzt möglich ist. Entsprechend wurden Pakete entwickelt um externe Graphiken in Dokumente einbinden zu können. Auch die Bearbeitung der einzubindenden Graphiken wurde dabei berücksichtigt, damit dem Benutzer eine optimale Erstellung seiner Dokumente gewährleistet werden kann. Allerdings sollten verwendeten Dateien im eps-format(seite 5) vorliegen, um alle Bearbeitungsmöglichkeiten auch nutzen zu können 3
2. Die Bounding Box LaTeX weißt jedem Objekt (Graphiken, Wörter, etc.) eine Box zu um so den verfügbaren Platz eines Dokuments optimal managen zu können Jede Box enthält einen Referenzpunkt, der sich standardmäßig an der linken unteren Ecke, auf Höhe der Baseline, befindet. Die Größe einer solchen Box ist definiert durch deren Höhe(height), Breite(length) und Tiefe(depth). Dabei ist die Höhe definiert durch den Abstand zwischen Referenzpunkt und oberer Kante der Box, die Tiefe definiert durch den Abstand zwischen Referenzpunkt und unterer Kante der Box und die Breite durch die Breite der Box. Die Gesamthöhe(totalheight) beschreibt die Summe aus Höhe und Tiefe. Abbildung 1: Die Bounding Box In der Bounding Box sind 12 Punkte speziell definiert(referenzpunkte). Der Standort eines Referenzpunktes setzt sich aus der Kombination zweier einzelner Punkte zusammen, einer entlang der Horizontalen und einer entlang der Vertikalen. Entlang der Vertikalen gibt es die Punkte t(top), c(center), B(baseline) und b(bottom). Entlang der Horizontalen gibt es die Punkte l(left), c(center) und r(right). Alle möglichen Kombinationen können in Abbildung 1 ersehen werden. Sollte nur einer der zwei Punkte angegeben werden, behandelt LaTeX das so, als ob das c(für center) als zweiter Punkt angegeben worden sei, um den Referenzpunkt zu bestimmen. Die Reihenfolge der Punkte im Zweier-Tupel ist unwichtig: [rb] = [Br] Das c(center) wir in der Horizontalen und Vertikalen benutzt. Der entsprechende Referenzpunkt ergibt sich immer aus der Kombination mit dem zweiten Punkt. 4
3. EPS-Dateien EPS steht für Encapsulated PostScript. Graphikdateien dieses Formats können in LaTeX direkt eingebunden werden. Dies ist möglich, da die EPS-Dateien einen Eintrag über ihre BoundingBox, am Anfang der Datei, enthalten. Somit kann LaTeX die Graphik bearbeiten, da deren direkte Größe bekannt ist. Es ist zu empfehlen Dateien in EPS-Format umzuwandeln bevor man sie mit graphic[sx] einbindet. Programme zur Konvertierung sind z.b. PaintShopPro, PicturePublisher und Gimp, die u.a. kostenlos aus dem Internet bezogen werden können. 4. Das graphic[sx] Paket Unter LaTeX kann man Graphiken mit diesen zwei Paketen einbinden. Bei dem graphics Paket handelt es sich um das einfache Paket, während graphicx das Paket darstellt, welches mit Erweiterungen ausgestattet ist, welche durch die eingebundene BoundingBox in den EPS-Dateien benutzt werden können. Beide Pakete müssen erst in die Präambel geladen werden damit sie genutzt werden können: \usepackage [treiber] {graphics} bzw. \usepackage [treiber] {graphicx} Optional kann ein Treiber angegeben werden. Dieser kann beispielsweise ein Druckertreiber wie dvips sein, damit die Graphik überhaupt ausgedruckt werden kann. 5
5. Graphikeinbindung und Bearbeitung unter graphic[sx] Nachdem das Paket in die Präambel geladen wurde können Graphiken unter graphics mit \includegraphics [llx,lly] [urx,ury] {Datei} eingebunden werden. Optional können die Eckpunkte der Graphik entlang der x- und y-achse (llx,lly) bzw. (urx,ury) angegeben werden, um die Größe zu bestimmen und eine BoundingBox zu definieren. Das Kürzel ll steht hierbei für die untere linke Ecke(lower left) und ur für die obere rechte Ecke(upper right). Diese Werte sind Längenangaben und können in cm, mm, inch, etc. erfolgen. Unter graphicx stehen dem Benutzer weitaus mehr Möglichkeiten zur Verfügung. Eingebunden werden Graphiken in diesem Paket mit \includegraphics [key = value] {Datei} Hierbei eröffnet key dem Benutzer eine Vielzahl von Möglichkeiten die einzubindende Graphik zu bearbeiten. Folgend eine Auswahl an keys: angle width height totalheight scale origin clip draft - Um einen Drehwinkel um den Referenzpunkt für die Graphik festzulegen. Zu beachten dabei ist, dass positive Werte die Graphik gegen den Uhrzeigersinn rotieren lassen, während negative Werte die Graphik im Uhrzeigersinn rotieren lassen. - Um die Breite der Graphik zu verändern. - Um die Höhe der Graphik zu verändern. - Um die Gesamthöhe der Graphik zu verändern. - Um einen Skalierfaktor für die Graphik festzulegen. - Um einen neuen Drehpunkt(Referenzpunkt) festzulegen. - Um festzulegen, dass Graphiken nicht über ihre BoundingBox hinausragen können um andere Objekte(wie Text) zu überlappen. Clip ist ein Boolean- Wert, der standardmäßig auf true steht. Dies kann auch durch Einbindung der Graphik durch \includegraphics* erfolgen. - Um nur einen Platzhalten für die Graphik bei einer Voranschau anzeigen zu lassen. Dies ist speziell bei größeren Dateien viel schneller beim Übersetzungslauf. 6
bb - Um eine BoundingBox zu definieren. Die Werte llx, lly, urx und ury werden hierbei nur durch Leerzeichen getrennt. Alle keys können durch Kommatrennung miteinander kombiniert werden. Jedoch ist die Reihenfolge zu beachten, da die Befehle von links nach rechts abgearbeitet werden. 5.1 Skalieren, Größenänderung und Drehen Unter graphic[sx] gibt es auch die Möglichkeit Graphiken zu skalieren, zu drehen oder deren Größe zu ändern. Dazu stellt graphic[sx] jeweils einen Befehlsaufruf zur Verfügung: Skalieren Um eine Graphik skalieren zu könne ruft man die Graphik mit dem Befehl \scalebox{h-scale}[v-scale]{argument} auf, wobei h-scale für die Horizontalskallierung und v-scale für die Vertikalskallierung steht. Gibt man nur die Horizontalskallierung an, so wird die Vertikalskallierung automatisch angepasst, damit Verzerrungen und Stauchungen verhindert werden. Gibt man negative Werte an, so wird die Datei an dieser Achse gespiegelt. Ein Beispielaufruf wäre: \scalebox{2}{\includegraphics{datei.esp}} Dieser Aufruf würde die Datei datei.esp in ihrer Größe verdoppeln. Als Besonderheit stellt dieses das Paket noch den Befehl \reflectbox bereit. Er stellt eine Vereinfachung zum Spiegeln auf der Vertikalen dar: \reflectbox{argument} = \scalebox{-1}[1]{argument} 7
Größenänderung Um eine Graphik in ihrer Größe ändern zu können ruft man die Graphik mit dem Befehl \resizebox{width}{height}{argument} \resizebox*{width}{totalheight}{argument} auf. Als Besonderheit kann man für einen obligatorischen Wert auch ein! einfügen, wodurch der! -Wert automatisch zum anderen angegebenen Wert errechnet wird: Drehen Um eine Graphik drehen zu können ruft man die Graphik mit dem Befehl \rotatebox[optionen]{winkel}{argument} auf. Positive Drehwinkelangaben drehen die Graphik gegen den Uhrzeigersinn, während negative Drehwinkelangaben die Graphik im Uhrzeigersinn drehen. Optionen können sein: origin x & y - Um einen neuen Referenzpunkt(Drehpunkt) in der BoundingBox festzulegen. - Um Koordinaten ab dem origin-punkt festzulegen, wodurch ein Feintuning des Drehpunktes erreicht wird(wenn einem die 12 Möglichkeiten nicht ausreichen). units - Um die Größe eines Kreises in Einheiten einzuteilen(standardmäßig 360) 8
5.1.1 Beispiele EINGABE : RESULTAT : Unterschiede der Graphikbearbeitung mit graphics und graphicx : Ausgangsgraphik : left---\fbox{\includegraphics{a}}---right 9
Skalieren : graphics: \scalebox{0.5}{\includegraphics{a}} graphicx: \includegraphics[scale=.5]{a} Überlappen : graphicc: \includegraphics [115, 110] [135, 145]{a} graphicx: \includegraphics [bb= 115 110 135 145]{a} Clip : graphics: \includegraphics*[115,110][135,145]{a}} graphicx: \includegraphics[bb= 115 110 135 145,clip]{a} 10
5.1.2 Potentielle Fehler Die Abarbeitungsreihenfolge : Die optionalen Bearbeitungsbefehle werden von links nach rechts ausgeführt. Entsprechend muss auf die Reihenfolge geachtet werden: Eingabe : \begin{center} \includegraphics [angle=90, totalheight=1cm]{graphic.eps} \includegraphics [totalheight=1cm, angle=90]{graphic.eps} \end{center} Resultat : Hierbei ist gut zu sehen, dass der Zeitpunkt, zu dem die Gesamthöhe festgelegt wird, entscheidend sein kann. 11
Rotierungsfehler : Beim Drehen von Graphiken kann es zu ungewollten Resultaten kommen. Eine Fehlerquelle kann sein, dass die BoundingBox nicht richtig betrachtet wurde: Eingabe : resultiert in : \begin {center} \includegraphics[totalheight=1in]{rosette.esp} \includegraphics[angle=45, totalheight=1in]{rosette.esp} \includegraphics[angle=90, totalheight=1in]{rosette.esp} \end{center} Obwohl alle drei Aufrufe der Graphik auf eine Gesamthöhe von 1 Inch festgelegt werden, unterscheidet sich die mittlere Graphik in der Größe zum Original und zur um 90 gedrehten Rosette. Die Auflösung : Bei der um 45 gedrehten Rosette beträgt die Gesamthöhe nun nur 1 Inch von der oberen Ecke zu der unteren Ecke(also praktisch die Diagonale), während die Gesamthöhe bei den anderen zwei Rosetten 1 Inch entlang der Seite beträgt. 12
6. Das picinpar Paket Mit dem picinpar Paket hat man die Möglichkeit eine Graphik mitten im Fließtext zu platzieren. Da es sich um ein externes Paket handelt, muss es in die Präambel geladen werden. Aufgerufen wird das Paket mit : \begin{window} [#zeilen-vor, position, graphik, titel] Text(der die Graphik umfließen soll) \end{window} #zeilen-vor: position: graphik: titel: Die Zeilenanzahl des Textes, die sich oberhalb der Graphik befinden soll. Auswahl, ob die Graphik l(linksbündig), r(rechtsbündig) oder c(zentriert) im Text eingebunden werden soll. Der Graphikaufruf. Graphikunterschrift. 6.1 Beispiel: \begin{window} [5, l, \includegraphics{karte.eps}, Österreich] Text \end{window} 13
7. Das wrapfig Paket Das wrapfig Paket verhält sich ähnlich dem picinpar Paket. Es muss auch erst in die Präambel geladen werden, jedoch gibt es ein paar Unterschiede im Aufruf : Text. \begin{wrapfigure} [zeilen] {position} {breite} {Graphik (mit \caption)} \end{wrapfigure} Text zeilen: position: breite: Graphik: Anzahl der Zeilen, die für die Graphik inkl. Unterschrift frei bleiben sollen. Auswahl, ob die Graphik l(linksbündig) oder r(rechtsbündig) im Text eingebunden werden soll. Breitenangabe für Objekt. Graphikaufruf(gegebenenfalls mit Unterschrift durch \caption). Graphiken können in wrapfig nur links- oder rechtsbündig eingebunden werden. Jedoch bietet wrapfig die Möglichkeit Graphiken auch in zweispaltigen Text einzubinden. 14
8. Das rotating Paket Das rotating Paket steht für einfachen Text zur Verfügung. Mit ihm können Buchstaben, Wörter oder ganze Sätze gedreht werden. Dabei gibt es drei mögliche Befehlsaufrufe: 1. rotate: Zum Drehen von Objekten, ohne Platzreservierung. 2. turn: Zum Drehen von Objekten, mit Platzreservierung. 3. sideways: Zum Drehen um 90. Den Umgebungen rotate und turn wird als Parameter jeweils eine Gradzahl mitgegeben. Dabei drehen auch hier positive Zahlen gegen den Uhrzeigersinn und negative Zahlen im Uhrzeigersinn: 15