LaTeX: Alles ganz einfach!

Da das TeX-System nicht auf dem WYSIWYG-Prinzip basiert, ist es nicht ganz so leicht, Bilder einzubinden. Trotzdem gibt es Möglichkeiten, in einem LaTeX-Dokument mit Grafik zu arbeiten.

Das Makropaket »LaTeX« bietet zur Dokumentgestaltung eine Umgebung und einen Befehlssatz zur Erzeugung einfacher grafischer Elemente: Linien, Kreise, Rechtecke, Pfeile, jeweils in verschiedenen Strichstärken. Außerdem gibt es z. B. für die TeX-Implementation von Ch. Strunk Stiloptionen, für das Einbinden von Grafikdateien oder Bildern. Darüber hinaus ermöglicht das mächtige Makropaket »PiC-TeX« die Erzeugung und Einbindung auch komplexer Grafiken nur im Rahmen des Dokumentes. Hier soll aber zunächst auf die LaTeX-eigenen Möglichkeiten eingegangen werden.

Längeneinheit

Zunächst müssen Sie definieren, mit welcher Längeneinheit LaTeX bei der Grafikgestaltung rechnen soll. Dies geschieht mit dem Befehl \unitlength, an den die Größe der Längeneinheit direkt angehängt wird. Um Zentimeter zu wählen, muß es also heißen \unitlength1cm. Weiter sind als Maßeinheiten die üblichen TeX-Maßeinheiten cm, in, mm, pt, pc, em und ex möglich. Die so gewählte Längeneinheit muß außerhalb einer Bildumgebung stehen und hat solange Gültigkeit, bis mit dem gleichen Befehl eine andere Längeneinheit gesetzt wird. Es ist mit \unitlength möglich, Bilder auf einfache Weise zu skalieren: wenn die Längeneinheit geändert wird, ändert sich damit natürlich die gesamte Bildgröße. So bekommt das Bild, wenn man als Längeneinheit lin (1 Zoll) statt lcm setzt, etwa die zweieinhalbfache Größe in x- und y-Richtung. Läßt man den \unitlength-Befehl weg, wird von LaTeX eine Länge von lpt (entspricht 1/72 Zoll, ca. 0,35 mm) eingesetzt.

Die LaTeX-Umgebung für die Grafikgestaltung nennt sich »picture«. Sämtliche Grafikbefehle werden also zwischen die Zeilen \begin{picture}(dx,dy) und \end {picture} gestellt. Die beiden Werte dx und dy legen dabei die Abmessungen des gesamten Bildes fest. Sie werden ohne Maßeinheit angegeben, da sie sich auf die zuvor gesetzte \unitlength beziehen. Diese beiden Zahlen - wie im Grunde alle Koordinatenangaben in der picture-Umgebung - werden in runde Klammern gesetzt und durch ein Komma getrennt. Es können auch Dezimalzahlen mit einem Punkt als Dezimaltrenner angegeben werden: mit einer \unitlength2cm und dem begin-Befehl \begin{picture} (5,7.5) erhält man eine Bildumgebung in der Größe 10 x 15 cm.

Die Dicke der Striche, mit denen in der picture-Umgebung gearbeitet wird, kann ebenfalls beeinflußt werden. Für die meisten Bildobjekte kann man mit den Befehlen \thicklines und \thinlines Zwischen dicken und dünnen Linien hin und herschalten. Ohne Angabe werden dünne Linien verwendet. Um ausschließlich vertikale und horizontale Linien zu beeinflussen, kann deren Stärke mit dem Befehl \linethickness{breite} direkt gesteuert werden. Der Parameter breite muß als absolute Größenangabe mit Maßeinheit angegeben werden, etwa \linethickness{2mm}. Das bewirkt, daß alle horizontalen und vertikalen Linien bis zum Auftauchen eines neuen Befehls zur Änderung der Strichbreite mit 2 mm gezeichnet würden.

Weiter unten wird noch darauf hingewiesen, daß mit verschiedenen Befehlen der picture-Umgebung keine stufenlosen Grafikelemente erzeugt werden können. Dies liegt daran, daß in dieser Umgebung die grafischen Elemente nicht individuell erzeugt, sondern aus Zeichen speziell dafür vorgesehener Zeichensätze zusammengesetzt werden (und zwar »lcircle10« und »line10«), die, falls nicht schon in Ihrem TeX-Grundpaket enthalten sind, mit »Metafont« erzeugt werden müssen. Normalerweise gehören diese Zeichensätze aber in jede LaTeX-Diskettensammlung.

Grafikelemente

Um in die picture-Umgebung nun Grafikelemente zu setzen, stehen die Befehle \put(x,y){objektbefehl} und \multiput (x,y) (dx,dy) {n}{objektbefehl} zur Verfügung. Hierbei sind x und y die Koordinaten des Objektes nach rechts und oben in der Einheit, die Sie mit \unitlength festgelegt haben. Die linke untere Ecke der Bildumgebung stellt dabei den Ursprung und Bezugspunkt dar. Durch Angabe negativer Koordinaten können Sie nach links und unterhalb des Ursprungs gelangen. Der Parameter objektbefehl spezifiziert dann, was an diese Stelle nun »gemalt« werden soll.

Der \muitiput-Befehl ermöglicht das mehrfache Setzen gleichartiger Objekte mit nur einem Befehl. Der Parameter n gibt dabei an, wie oft das Objekt dargestellt werden soll. Dabei wird mit jedem Schritt zu den Anfangskoordinaten x und y die Schrittweite dx bzw. dy addiert und das Objekt an dieser Position erneut gesetzt. Dabei läuft die »Schleifenvariable« von 0 bis n-1, so daß das Objekt zuerst an der Position (x,y) erscheint. So erzeugt die Befehlsfolge von Beispiel 1 die Darstellung in Bild 1. Die ausgefüllten Punkte markieren die linke untere und die rechte obere Ecke der Umgebung; die Kreise sind die mit \muitiput erzeugten Objekte.

Sie können auch mit Bildobjekt-Befehlen per \put- oder \multiput-Befehl grafische Elemente in Bildumgebungen erzeugen. Das einfachste Objekt ist sicherlich »nackter« Text, der ohne weiteren Befehl einfach als Parameter des \put-Befehis angegeben wird: \put{2,2){Das hier ist der Text} führt zur Ausgabe des Textes an der angegebenen Position. Auch hier ist der Bezugspunkt die linke untere Ecke des Textes. Wenn der Text länger als die Bildumgebung breit ist, ragt er einfach rechts über den Rand.

\documentstyle|german|{article}
\pagestyle{empty}
\begin{document}
\unitlength5mm
\begin{picture}(20,20)
\put(0,0){\circle*{0.4}}
\put(20,20){\circle*{0.4}} 
\put(1,1){\makebox(8,3){Hier makebox 8*3 mittig}}
\put(4,4.5){\framebox(9,3)[l]{Hier framebox 9*3 links}}
\put(7,16){\framebox(12,2)[rt]{Hier framebox 12*2 rechts oben)}
\put(1,10){\dashbox(1.51(10,4)[lb]{Hier dashbox 10*4 links unten)) \put(12,1){\dashbox(0.3)(9,2)[b]{Hier dashbox 9*2 unten}}
\end{picture}
\end{document}

Mit dem Befehl \shortstack[p]{text} kann Text vertikal angeordnet werden; er wird dabei als Parameter text übergeben, wobei Zeilenumbrüche mit einem doppelten Backslash \ markiert werden: \shortstack {s\e \n\k\r \e\c\h\t] führt zur vertikalen Ausgabe des Wortes »senkrecht«. Das ganze funktioniert natürlich auch mit mehreren Buchstaben pro Zeile. Gerade im Zusammenhang mit übereinander angeordneten Wörtern kann die Randausrichtung große Bedeutung haben. Mit dem optionalen Parameter [p] für die Positionierung können Sie [l], [c] oder [r] für linksbündige, zentrierte oder rechtsbündige Orientierung angeben.

Kreise

Weiter oben beim \multput-Befehl wurde bereits ein Bildobjekt beschrieben: der Kreis. Er wird erzeugt durch den Befehl \circle{r} oder \circle*{r}. r steht für den gewünschten Radius in \unitlength-Einheiten. Das * erzeugt einen ausgefüllten Kreis. LaTeX beherrscht allerdings keine stufenlose Darstellung verschiedener Radien, sondern nur eine bestimme Anzahl Kreise fester Größe, von denen mit diesem Befehl der ausgewählt wird, der dem angegebenen Radius am nächsten kommt.

\documentstyle[german]{article}
\pagestyle{empty}
\begin{document}
\unitlength5mm
\begin{picture}(10,10)
\put(0,0){\circle*{0.4}}
\put(10,10)[\circle*(0.4}}
\multiput(1,2)(1,0.5){6}{\circle{0.8}} 
\end{picture}
\end{document}

Kästen

Als weiteres grafisches Element gibt’s Kästen: ohne Rahmen, mit Rahmen, durchgezogen wie auch gestrichelt und auf Wunsch auch mit Text. Dazu verwenden Sie die Befehle \makebox(x,y)[p]{text}, \framebox(x,y)[p]{text} und \dash box {d}(x,y)[p]{text}. \makebox und \framebox unterscheiden sich nur darin, daß bei \framebox ein sichtbarer Rahmen der Box ausgegeben wird, bei \makebox jedoch ein unsichtbarer. Bei \dashbox ist der Rahmen gestrichelt, wobei man mit dem Parameter d noch die Länge der einzelnen Striche angeben kann. Die optionale Angabe p beeinflußt die Position des Textes, der in die Box gesetzt wird. Läßt man ihn weg, erscheint der Text in der Box zentriert, horizontal wie vertikal. Man kann aber andere Positionierungen angeben, die dann Vorrang vor der Zentrierung bekommen. Es gibt folgende Möglichkeiten für [p]:

[l] Text kommt links in die Box und wird vertikal zentriert
[r] genauso, nur rechts
[t] Text kommt an den oberen Rand der Box und wird horizontal zentriert (»top«)
[b] genauso, nur unterer Rand (»bottom«)

Diese Möglichkeiten können auch kombiniert werden. Die Reihenfolge spielt dabei keine Rolle:

[lt] oder [tl] links oben
[lb] oder [bl] links unten
[rt] oder [tr] rechts oben
[rb] oder [br] rechts unten

Linien

In der picture-Umgebung können mit dem Grafikobjekt-Befehl \line(dx,dy){l} gerade Linien erzeugt werden. Dabei wird die Position aus dem aufrufenden \put-Befehl als Startposition verwendet. An dieser Position beginnt dann die Linie, deren Neigung durch das Wertepaar (dx,dy) bestimmt wird und die die Länge 1 besitzt. Für die Berechnung der Neigung aus dx und dy gilt nun der folgende Grundsatz: »Mache für jeden Schritt der Größe dx in x-Richtung einen Schritt der Größe dy in y-Richtung!« (oder umgekehrt). So ergibt (1,0) genau horizontale Linien, und (0,1) genau vertikale. (1,1) führt zu einer Linie im Winkel 45 Grad, (2,1) zu einer entsprechend flacheren usw. Bezüglich dieses Wertepaares (dx,dy) gibt es noch einige Einschränkungen:

\documentstyle[german]{article}
\pagestyle{empty}
\begin{document}
\unitlength5mm 
\begin{picture}(10,10)
\put(0,0){\circle*{0.4}}
\put(10,10){\circle*{0.4})
\put(1,2){\line(2,1){7}}
\put(1,2){Linie 1}
\put(3,6){\line(-3,-2){4}}
\put(3,6){Linie 2}
\put(8,1){\line(-1,4){2}}
\put(8,1){Linie 3}
\end{picture}
\end{document}

a) dx und dy müssen teilerfremd sein, d. h. sie dürfen keinen gemeinsamen Teiler mehr enthalten (außer 1 natürlich). Nicht erlaubt ist z. B. (4,2), da beide Zahlen noch durch 2 teilbar sind. Richtig wäre (2,1);

b) dx und dy müssen ganzzahlig sein. Nicht erlaubt ist z. B. (1,2.5). Dies müßte man mit (2,5) realisieren.

c) Schließlich dürfen die Beträge von dx und dy höchstens gleich 6 sein. Die Angabe (7,4) ist nicht erlaubt. Das Vorzeichen kann allerdings negativ sein, in so einem Fall finden die »Schritte« vom Startpunkt aus eben in negative x- oder y-Richtung statt.

Bezüglich der Linienlänge ist noch etwas zu beachten. Der Parameter 1 gibt nicht die Länge der Linie selbst an, sondern die Länge der Projektion der Linie auf die x-Achse. Die Startpunkte der Linien sind jeweils links unten am dazugehörigen Text. Linie 3 ist die bei weitem längste, obwohl für sie nur eine Länge 1 angegeben wurde. Diese Länge 1 ist der entsprechende Abschnitt auf der x-Achse. Des weiteren ist eine Mindestlänge erforderlich, sonst wird gar keine Linie gezeichnet. Dieses Minimum liegt bei etwa 10 pt (10/72 Zoll = ca. 3,5 mm).

Die Erzeugung von Pfeilen verläuft genau analog zu der Erzeugung von Linien. Es wird der Befehl \vector(dx,dy){länge} angewandt und die Linie bekommt an ihrem Endpunkt noch eine Pfeilspitze verpaßt. Als Einschränkung müssen Sie beachten, daß der Betrag von dx bzw. dy hier höchstens 4 sein darf, nicht 6 wie bei den »reinen« Linien.

Ovale

Ein Rechteck mit abgerundeten Ecken wird hier als Oval bezeichnet. Im Unterschied zu den Boxen wird in einem Oval kein Text dargestellt (natürlich kann man nachträglich mit einem \put-Befehl Text anbringen, wo immer man will). Weiterhin ist der Bezugspunkt eines Ovals nicht seine linke untere Ecke (es hat ja schließlich keine Ecken...), sondern sein Mittelpunkt. Sonst ist die Handhabung der Ovale

documentstyle[german]{article} 
\pagestyle{empty}
\begin{document}
\unitlength5mm 
\begin{picture}(10,10)
\put(0,0){\circle*{0.4}} 
\put(10,10){\circle*{0.4}}
\put(1,2){\vector(2,1){7}}
\put(1,2){Linie 1}
\put(3,6){\vector(-3,-2){4}}
\put(3,6){Linie 2}
\put(8,1){\vector(-1,4){2}}
\put(8,1){Linie 3}
\end{picture}
\end{document}

ähnlich der der Boxen: der Bildobjekt-Befehl zu ihrer Erzeugung lautet \oval(dx,dy){ausschnitt}, wodurch das Oval an der mit dem \put-Befehl angegebenen Grundposition zentriert wird und die x-Ausdehnung dx und die y-Ausdehnung dy erhält. Die abgerundeten Ecken werden dann durch Viertelkreise realisiert. Mit dem optionalen Parameter [ausschnitt] ist es auch möglich, nur Teile von Ovalen zu erzeugen. Die Syntax ist analog zu den Positionierungsbefehlen für Text in Boxen: [t] erzeugt nur die obere Hälfte eines Ovals, [bl] nur das linke untere Viertel, [r] nur die rechte Hälfte etc. Es wird aber als Grundgröße das Oval mit den angegebenen Abmessungen und Koordinaten zugrundegelegt, von dem dann eben nur ein Teil ausgegeben wird.

Soweit also die grundlegenden Grafikmöglichkeiten der picture-Umgebung. (thl)


Philipp Oelwein
Aus: ST-Magazin 08 / 1993, Seite 61

Links

Copyright-Bestimmungen: siehe Über diese Seite