Grundlagen: Punkte, Linien, Einheiten und Macropakete

DVI und DVILW erzeugen ihre Grafiken dadurch, daß man einige Punkte durch ihre Positionen definiert und diese dann durch verschiedene Linien miteinander verbindet oder durch verschieden dicke Punkte sichtbar macht. Dazu folgendes Plain-TEX-Beispiel:

\leftline{\hskip 3cm\special{gr setpoint 0}}
\rightline{\special{gr setpoint 1; poly 0,1}
  \hskip 3cm}

Dadurch entsteht eine ähnliche Abbildung wie links.

Verwendet wurden in diesem Beispiel zwei \special-Befehle des Treibers, nämlich setpoint, womit die Positionen der Punkte 0 und 1 festgelegt wurden und poly, der die Verbindung der beiden Punkte 0 und 1 durch eine Gerade zeichnete. Um die Positionierung etwas zu erleichtern, werden folgende TEX-Macros und Variablen für Plain-TEX definiert:

\newdimen\unitlength \unitlength = 1pt
\def\setunitlength#1{%
  \unitlength=#1\special{gr setunitlength #1}}

\def\picture(#1,#2)#3{\vbox to #2\unitlength{\vss\hbox 
  to #1\unitlength{#3\hss}}}

\def\put(#1,#2)#3{\unskip\raise#2\unitlength\hbox 
  to 0pt{\kern#1\unitlength#3\hss}\ignorespaces}

Für LATEX ist natürlich die Definition der Macros \picture und \put unnötig, da das picture-Environment genau dasselbe leistet. Der nächste Absatz muß deshalb von LATEX-Anwendern übersetzt werden, d.h. mit den notwendigen \begin{} und \end{}-Zusätzen versehen werden.

Die neue Variable \unitlength gibt die Maßeinheit an, in der alle Punktekoordinaten angegeben werden können. Das Macro \setunitlength dient der Veränderung dieser Maßeinheit, zusätzlich wird den Treibern diese Veränderung über das Grafik-Kommando setunitlength mitgeteilt. Es ist wichtig, sich darüber klarzuwerden, daß die TEX-Variable \unitlength für die Treiber unbekannt ist, und nur für die beiden Macros \picture und \put von Bedeutung ist. Alternativ ist auch die Verwendung von absoluten Längenangaben, wie sie TEX versteht (z.B. 1.1 cm, 5 pt), erlaubt.

Mit \picture(w,h) wird Platz für ein Bild der Breite w und der Höhe h geschaffen. Mit \put(x,y) können Bildelemente innerhalb von \picture positioniert werden. Beispiel: Die Befehle

\setunitlength{1cm}
\centerline{\picture(3,2){\put(0,0){a}\put(3,2){b}}}

1cm
\begin{picture}(3,2)
\put(0,0){a}\put(3,2){b}
\end{picture}
erzeugen das Bild links.

Anstatt der Buchstaben a und b sollen nun die Endpunkte einer Geraden an dieselben Stellen gesetzt werden. Dies geschieht mit folgenden Befehlen, die das Bild links liefern: 1cm
\begin{picture}(3,2)
\put(0,0){\special{gr setpoint 0}\ignorespaces}
\put(3,2){\special{gr setpoint 1; poly 0,1}\ignorespaces}
\end{picture}

\setunitlength{1cm}
\centerline{\picture(3,2){
  \put(0,0){\special{gr setpoint 0}}
  \put(3,2){\special{gr setpoint 1; poly 0,1}}}}