\hrule
gefüllt wurde.
Das Füllen geschieht durch Angabe eines Clippfades und beliebigen TEX-Ausgaben, die bezüglich dieses Pfades gekappt werden.
Die Definition des Clippfades geschieht mit dem Befehl defclip, der den Beginn eines Clippfades markiert und mit dem Befehl clip, der den Clippfad abschließt und gleichzeitig das Kappen einschaltet. Wird statt clip der Befehl whiteclip verwendet, wird das Innere des Clippfades gelöscht. Alle folgenden Ausgaben werden bezüglich dieses Pfades gekappt, bis der endclip-Befehl das Kappen ausschaltet.
Zur einfacheren Handhabung von Füllmustern betrachten Sie bitte die zwei Macros fill(x,y){} und sfill(x,y){}, die folgendermaßen definiert sind:
\newbox\fillbox \newdimen\fillshift \newdimen\fillwidth \def\fill(#1,#2)#3{\setbox0\hbox to #1\unitlength{ \cleaders\hbox{#3}\hfil}\loop \ifdim\ht\fillbox<#2\unitlength\setbox\fillbox \vbox{\unvbox\fillbox\copy0}\repeat\hbox to 0pt{ \vbox to 0pt{\vss\box\fillbox\vglue0pt}\hss}} \def\sfill(#1,#2)#3{\setbox0\hbox{#3}% \fillshift=0.5\wd0\fillwidth=#1\unitlength\loop \ifdim\ht\fillbox<#2\unitlength\setbox\fillbox\vbox{ \unvbox\fillbox\hbox to\fillwidth{\cleaders\hbox{#3} \hfil}}\advance\fillwidth by\fillshift\fillshift= -\fillshift\repeat\hbox to 0pt{\vbox to 0pt{\vss\box \fillbox\vglue0pt}\hss}}
Ausgehend von der aktuellen Position wird ein rechteckiger Bereich der Breite x und Höhe y mit dem jeweiligen beliebigen Parameterinhalt überdeckt. Bei Verwendung von fill wird der Parameter in aufeinanderfolgenden Zeilen direkt untereinander gedruckt, bei sfill dagegen etwas seitlich verschoben.
Als Anwendung der Füllbefehle betrachten Sie bitte folgenden LATEX-Code, mit dem Abbildung A.11 erzeugt wurde:
\begin{figure}[hbp]\centering \begin{picture}(110,110)(0,0) \special{gr setlinecap round arrow} \put(0,0){\special{gr setpoint 0}} \put(110,0){\special{gr setpoint 1} \special{gr spline 0-1}} \put(0,110){\special{gr setpoint 1} \special{gr spline 0-1}} \special{gr setlinecap arrow arrow} \put(10,10){\special{gr setpoint 0; dot 0}} \put(50,40){\special{gr setpoint 1; dot 1}} \put(90,20){\special{gr setpoint 2; dot 2}} \put(40,30){\special{gr setpoint 3; dot 3}} \special{gr defclip; spline 0-2; poly 2,3,0; clip} \put(0,0){}\vbox{\hrule width 110pt height 110 pt depth 110pt}\special{gr endclip} \end{picture} \caption{Gef"ullte Fl"ache} \end{figure}
Natürlich ist es manchmal lästig, sich ein Füllmuster als TEX/LATEX-Code auszudenken, weil sich Füllmuster oft als Bitmap leichter definieren lassen. Wenn Sie anstelle der clip- bzw. whiteclip-Befehle den patclip-Befehl verwenden, wird der Clipbereich mit einem durch defpattern angegebenen Füllmuster gefüllt. Die Parameter dieses Befehls sind genau acht Bytes, die das Füllmuster spezifizieren. Im Moment sind also auch nur Füllmuster mit 8×8-Pixeln möglich. Die Bytes selbst werden als Dezimalzahl angegeben und jedes gesetzte Bit entspricht einem gesetzten Pixel im Füllmuster. Erinnern Sie sich noch an Abbildung 4.1? Die Realisierung dieses Bildchens mit Treiber-Befehlen sieht wie folgt aus:
\setdefaults\setunitlength{1bp} \begin{picture}(354,100)(0,0) \put(0,0){\setpoint{0}} \put(100,100){\setpoint{1}} \put(354,0){\setpoint{2}} \defpattern{170,85,170,85,170,85,170,85} \defclip\closedpoly{0-2}\patclip\endclip \setlinewidth{1 pt}\closedpoly{0-2} \end{picture}
Das Ergebnis können Sie in Abbildung A.12 bewundern.
Als kleines Bonbon folgt noch die etwas umfangreichere Abbildung A.13, damit Sie sehen, was Sie jetzt beispielsweise zeichnen können, falls Ihnen nicht gerade eine TEX-Implementation mit Speicherbeschränkungen den Spaß verdirbt (TEX capacity exceeded ...).