diff options
Diffstat (limited to 'dviware/dvi-augsburg/manual/dvigra.tex')
-rw-r--r-- | dviware/dvi-augsburg/manual/dvigra.tex | 761 |
1 files changed, 761 insertions, 0 deletions
diff --git a/dviware/dvi-augsburg/manual/dvigra.tex b/dviware/dvi-augsburg/manual/dvigra.tex new file mode 100644 index 0000000000..d0dd9cafb5 --- /dev/null +++ b/dviware/dvi-augsburg/manual/dvigra.tex @@ -0,0 +1,761 @@ +\chapter{Die Grafikbefehle von \dvi\ und \dvilw} +Als letzter Aspekt der Treiber bleibt noch die Erkl"arung der +Gra\-fik\-m"og\-lich\-kei\-ten. \dvi\ und \dvilw\ zeichnen sich hier durch +besondere F"ahigkeiten aus. Sowohl zwei Fremdgrafikformate, als auch +ein Satz von eingebauten Befehlen werden unterst"utzt. Um die +Kompatibilit"at des \TeX-Eingabetextes zu wahren, werden alle Grafikbefehle +von \TeX\ mittels {\tt $\backslash$special}-Befehlen angesteuert, auch +die eingebauten Befehle. + +\section{Specials} +\attention Um unn"otige Wiederholungen zu vermeiden, wird im folgenden jeweils nur +der {\tt $\backslash$special}-Text beschrieben, obwohl in der Eingabedatei +jeweils + +\begin{compout} +$\backslash$special\{{\it \<befehl> \<argumente>}\} +\end{compout} + +stehen mu"s, um die korrekte \TeX-Syntax zu erhalten. + +\attention Beachten Sie bitte unbedingt die Klein-/Gro"sschreibung der +Befehle, da die Treiber bei unbekannten Specials keine Warnung ausgeben +und bei eigenen Befehlen Klein-/Gro"sschreibung beachten! Falls Sie +also keine Grafikausgabe erhalten, sollten Sie einmal die genaue +Syntax beachten. + +\subsection{Fremdgrafikformate} +Zwei Fremdformate werden unterst"utzt. Zum einen die \imgg\ von +{\sc Gem}, zum anderen \ps. + +\subsubsection{\it graphic~img~\<filename>} +An der aktuellen Seitenposition wird die in der Datei {\it \<filename>} +gespeicherte \img-Grafik eingef"ugt. Die linke obere Ecke der Grafik +kommt dabei am sog.\ \glqq current point\grqq\ zu liegen. Der \glqq +current point\grqq\ wird nicht ver"andert. Der Benutzer hat selbst von +\TeX\ aus f"ur Platz f"ur die Grafik zu sorgen.\seealso{\ref{lmacro}} + +\subsubsection{\it ps~\<filename>} +An der aktuellen Position im \ps-Code wird der Inhalt der Datei +{\it \<filename>} eingef"ugt. Naturgem"a"s funktioniert dieser +Befehl nur mit \dvilw, da \dvi\ (vorerst) keinen eingebauten +\ps\ Interpreter hat. Es liegt vollkommen in Ihrer Hand, was Sie +in die Datei schreiben\seealso{\ref{lmacro}}. Sie sollten aber auf den +Aufbau der \TeX-Seite achten, d.h.\ mit \verb|\hbox|- und \verb|\vbox|-Befehlen +gen"ugend Platz f"ur die Grafik reservieren. Der Inhalt der Datei +wird "ubrigens in ein \verb|gsave|/\verb|grestore|-Paar eingebunden und der +\verb|showpage|-Operator lahmgelegt, so da"s der \TeX-Teil der Ausgabeseite +nicht manipuliert werden kann. + +\subsubsection{\it postscript~\<commands>} +Die \ps-Befehle aus {\it \<commands>} werden in das \ps-Pro\-gramm +ein\-ge\-f"ugt, das die aktuelle Druckseite beschreibt. Sehr geeignet f"ur +Unsinn jeglicher Art! Auch dieser Befehl ist nur unter \dvilw\ verf"ugbar. +Ein Anwendungsbeispiel f"ur diesen Befehl ist folgender \TeX/\LaTeX-Code: + +\begin{verbatim} +\vbox to 100bp{\vss % a bp is the same as a PostScript point +\special{postscript newpath 0 0 moveto 100 100 lineto +354 0 lineto closepath gsave 0.8 setgray fill grestore +stroke}} +\end{verbatim} + +Das Ergebnis ist Abbildung~\ref{llitps}. Das Beispiel stammt "ubrigens aus +der Anleitung von {\tt DVIPS} von Tomas Rokicki. Die Befehle werden "ubrigens +zur Sicherheit in ein \verb|gsave|/\verb|grestore|-Paar eingebunden. + +\begin{figure}[hbtp]\centering +\vbox to 100bp{\vss % a bp is the same as a PostScript point +\special{postscript newpath 0 0 moveto 100 100 lineto +394 0 lineto closepath gsave 0.8 setgray fill grestore +stroke}} +\caption{Anwendungsbeispiel f"ur das {\it postscript\/}-Special}\label{llitps} +\end{figure} + +\subsubsection{\it \"~\<commands>} +Bedeutung wie {\it postscript~\<commands>} und nur aus Kompatibilit"atsgr"unden +zu {\tt DVIPS} von Tomas Rokicki vorhanden. + +\subsubsection{\it ps:~\<commands>} +Die \ps-Befehle aus {\it \<commands>} werden in das \ps-Pro\-gramm +ein\-ge\-f"ugt, das die aktuelle Druckseite beschreibt. Sehr geeignet f"ur +Unsinn jeglicher Art! Auch dieser Befehl ist nur unter \dvilw\ verf"ugbar. +Die \ps-Befehle werden "ubrigens +{\it nicht\/} zur Sicherheit in \verb|gsave| und \verb|grestore| eingebunden, +so da"s Sie wirklich Unsinn anstellen k"onnen. Die Anzahl der Doppelpunkte +im {\it ps:\/}-Kommando ist "ubrigens --- wiederum aus Kompatibilit"atsgr"unden +--- freigestellt. + +In Bild~\ref{lps2} folgt noch ein Beispiel f"ur dieses Special, das wiederum der Anleitung +von {\tt DVIPS} von Tomas Rokicki entnommen wurde. Wie im Original wird auch +hier auf jeglichen Kommentar verzichtet! + +\begin{quote} +\begin{verbatim} +\def\rotninety{\special{ps:currentpoint currentpoint +translate 90 rotate neg exch neg exch translate}} +\font\huge=cmbx10 at 14.4truept +\setbox0=\hbox to0pt{\huge A\hss}\vskip16truept +\centerline{\copy0\special{ps:gsave}\rotninety\copy0 +\rotninety\copy0\rotninety\box0\special{ps:grestore}} +\vskip16truept +\end{verbatim} +\end{quote} + +\begin{figure}[hbtp] +{\def\rotninety{\special{ps:currentpoint currentpoint translate 90 +rotate neg exch neg exch translate}}\font\huge=cmbx10 at 14.4truept +\setbox0=\hbox to0pt{\huge A\hss}\vskip16truept\centerline{\copy0 +\special{ps:gsave}\rotninety\copy0\rotninety\copy0\rotninety +\box0\special{ps:grestore}}\vskip16truept} +\caption{Spa"s mit \ps}\label{lps2} +\end{figure} + +\subsubsection{\it PSFile=\<filename> llx=\<llx> lly=\<lly> urx=\<urx> ury=\<ury> rwi=\<rwi>} +"Ahnlich dem {\it ps}-Special wird an der aktuellen Position im \ps-Code +der Inhalt der Datei {\it \<filename>} eingef"ugt. Allerdings mu"s "uber eine +Reihe weiterer Parameter die Bounding Box des Bildes und die tats"achliche +Breite des Bildes in \ps-Punkten angegeben werden. Aus diesen Angaben wird +dann das Bild richtig skaliert und positioniert. Direkte Verwendung dieses +Special erscheint nicht sinnvoll, da "uber die {\tt EPSF.STY}-Macros f"ur +\TeX\ und \LaTeX\ die Verwendung automatisiert ist. Lesen Sie hierf"ur +bitte Abschnitt~\ref{lepsf}. + +Naturgem"a"s funktioniert das {\it PSFile\/}-Special nur mit \dvilw, da +\dvi\ (vorerst) keinen eingebauten \ps\ Interpreter hat. + +\subsection{Eingebaute Grafikbefehle} +Die eingebauten Grafikbefehle werden alle durch {\tt gr} eingeleitet. +Danach kann eine Liste von verschiedenen Grafikbefehlen kommen, die jeweils +durch \cstok{;} getrennt werden m"ussen. Nat"urlich kann man auch jeden +Befehl einzeln mit {\tt $\backslash$special\{gr \dots\}} abschicken. + +\attention Die direkte Angabe der \verb|\special|-Befehle, so wie im Tutorial +aus didaktischen Gr"unden geschehen, f"uhrt zu Problemen mit dem \verb|\put|-Befehl +(siehe dazu Abschnitt~\ref{lbildmac}). Es wird dringendst empfohlen, die +{\tt BILDMAC}-Macros zu verwenden! + +\attention Nachfolgend erkl"arte Befehle erwarten meistens Parameter eines +bestimmten Typs. Es werden die Parameterbezeichnungen {\it real\/} f"ur +Gleitpunktzahlen und {\it dimen} f"ur L"angenangaben in +\TeX-"ahnlicher-Syntax (wie +z.B.\ -5.33~{\it cm\/} oder 5.1~{\it pt\/}) bzw.\ ebenfalls +Gleitpunkzahlen verwendet. Im Unterschied zu \TeX\ ben"otigen die Treiber +zum korrekten Erkennen der Bema"sungseinheiten Leerzeichen zwischen +syntaktischen Einheiten. So ist z.B.\ in \TeX\ die Angabe von +\verb|1 truecm| zul"assig, mu"s aber in der Treibersyntax als \verb|1 true cm| +geschrieben werden. Andererseits verstehen die Treiber als Zahlenwerte bei +L"angenangaben Ausdr"ucke aus den vier Grundrechenarten und Klammern, +w"ahrend \TeX\ wirklich eine Zahl erwartet. + +\attention Alle Einstellungen der Grafikparameter sind nur auf der +Druckseite g"ultig, auf der sie ver"andert wurden. Durch einen Seitenumbruch +werden alle Parameter wie durch ein {\tt setdefaults}-Kommando +zur"uckgesetzt. + +\subsubsection{\%} +Wie in \TeX\ dient das \%-Zeichen dazu, den Rest der Eingabezeile als +Kommentar zu markieren. + +\subsubsection{def} +Das Schl"usselwort {\tt def} dient zum Definieren von Variablen und +Funktionen. Die Syntax einer Variablendefinition/-"anderung ist +wie folgt: + +\begin{compout} +def \<identifier>=\<expression>; +\end{compout} + +wobei {\tt identifier} ein beliebiger Name ist. Falls der Name schon +vorhanden sein sollte, wird der bisherige Wert durch die neue Definition +"uberschrieben. + +Eine Funktionsdefinition sieht wie folgt aus: + +\begin{compout} +def \<identifier>(\<p1>,$\dots$,\<pn>)=\<expression>; +\end{compout} + +wobei {\tt identifier} ein noch nicht benutzter Name ist. Die Parameter +{\tt p1} bis {\tt pn} d"urfen schon als Variablen benutzt sein. In diesem +Fall wird aber eine lokale Kopie beim definierenden Ausdruck {\tt expression} +verwendet, so da"s die Variable nicht ver"andert wird und auch nicht zur +Definition herangezogen werden kann. + +Der definierende Ausdruck {\tt expression} hat in beiden F"allen folgenden +rekursiven Aufbau: + +\begin{quote}\begin{verbatim} +<expression>::=<expression>+<expression> | + <expression>-<expression> | + <expression>*<expression> | + <expression>/<expression> | + <factor> + +<factor>::=<real number> | + <identifier> | + <function evaluation> | + (<expression>) + +<function evaluation>::=<identifier(<exp1>,...,<expn>) +\end{verbatim}\end{quote} + +Zahlreiche Variablen und Funktionen sind schon vordefiniert. Bitte +informieren Sie sich durch Abbildung~\ref{lkofu}. + +\subsubsection{Tx,Ty} +Es gibt zwei vordefinierte Funktionen {\tt Tx} und {\tt Ty}, die bei +Angabe von Offsets bei {\tt setpoint} Kommandos dazu dienen, eine +Koordinatentransformation nach folgender Formel durchzuf"uhren: + +\begin{compout} +setpoint x[a,b] $\longrightarrow$ setpoint x[Tx(a,b),Ty(a,b)] +\end{compout} + +Diese Funktionen sind als + +\begin{compout} +def Tx(a,b) = a;\\ +def Ty(a,b) = b; +\end{compout} + +vordefiniert. Im Normalfall wird also beim Erzeugen eines {\tt setpoint}-Offsets +durch die Funktion {\tt Tx} der $x$-Koordinatenanteil ausgeblendet, durch +die Funktion {\tt Ty} der $y$-Koordinatenanteil. Durch Umdefinition dieser +Abbildung lassen sich Effekte wie Transformationen, Skalierungen, Drehungen, +etc.\ auf einfache Weise erzeugen. Konsultieren Sie f"ur diese M"oglichkeiten +am Besten ein Buch zur grafischen Datenverarbeitung wie {\em Computer Graphics: +Principles and Practice\/} von Foley/van Dam/Feiner/Hughes. + +\subsubsection{undef} +Mit dem Schl"usselwort {\tt undef} lassen sich mittels {\tt def} +vereinbarte Variablen und Funktionen wieder l"oschen. + +\subsubsection{setdefaults} +Stellt die wichtigsten Parameter auf die Standardwerte zur"uck, wie in +Abbildung~\ref{la101} zu sehen. Au"serdem werden alle Variablen- und +Funktionsdefinitionen gel"oscht! + +\begin{figure}[hbtp] +\begin{center} +\begin{tabular}{|l|l|} +\hline +Liniendicke & $0.4$ {\it pt\/}\\ +Linienmuster & durchgezogen\\ +Pfeilspitze & $1.2$ {\it pt\/} breit, $6.4$ {\it pt\/} lang\\ +Pfeilart & Geradenst"ucke, keine Ablenkung\\ +Punktdicke & $2.4$ {\it pt\/}\\ +Linienenden & abgerundet (round)\\ +Punktz"ahler & $0$\\ +\verb|\unitlength| & $1$ {\it pt\/}\\ +\hline +\end{tabular} +\end{center} +\caption{Standardwerte der Grafikparameter}\label{la101} +\end{figure} + +\subsubsection{setunitlength~\<{\it dimen}>} +Stellt den multiplikativen Faktor auf den Offset des {\tt setpoint}-Befehls ein +und bestimmt dadurch die Gr"o"se des Bildes. Beachten Sie bitte, da"s per +Voreinstellung durch {\tt setdefaults} ein Wert von 1~{\it pt\/} eingetragen +wird und deshalb auch relative Faktoren in der Form von Gleitpunktwerten +jederzeit benutzt werden k"onnen. Bei Verwendung von expliziten Ma"sangaben +wird dieser Faktor nat"urlich {\em nicht\/} aufmultipliziert! + +\subsubsection{setdotsize~\<{\it dimen}>} +Stellt den Punktdurchmesser auf \<{\it dimen}>. + +\subsubsection{setlinewidth~\<{\it dimen}>} +Stellt die Liniendicke auf \<{\it dimen}>. + +\subsubsection{setdash~{\it \<dimen>~\<dimen>~\dots}} +Stellt das Linienmuster ein. Ohne Parameter wird das Muster zur"uckgesetzt +auf durchgehend gezeichnete Linien. Ansonsten geben die Parameter abwechselnd +die Strecken an, die schwarz bzw.\ wei"s gezeichnet werden. Wird nur +ein Parameter angegeben, ist das Muster gleichf"ormig schwarz-wei"s, wie +z.B.\ bei \verb|setdash 2pt|. + +\subsubsection{defpattern~{\it \<byte>,\<byte>,\<byte>,\<byte>,% +\<byte>,\<byte>,\<byte>,\<byte>}} +Definiert ein $8\times 8$-F"ullmuster f"ur den {\tt patclip}-Befehl. +Die Parameter sind Dezimalzahlen im Bereich 0--255. Jedes gesetzte +Bit in der Bin"ardarstellung der Zahl ergibt ein gesetztes Pixel im +F"ullmuster. Jede Zahl stellt eine Zeile des F"ullmusters dar, wobei +die erste Zahl der obersten Zeile entspricht. Es m"ussen zur Zeit genau +acht Zahlen angegeben werden! + +\subsubsection{setlinecap~{\it \<plain\/$\vert$round\/$\vert$arrow\/% +$\vert$wedge\/$\vert$triangle>~\<plain\/$\vert$round\/$\vert$arrow\/% +$\vert$wedge\/$\vert$triangle>}} +Stellt das Aussehen von Linienenden ein. Der erste Parameter steht f"ur +den Linienanfang, der zweite f"ur das Linienende. Die f"unf m"oglichen +Werte bedeuten \glqq plain\grqq\ f"ur eine abgeschnittene Linie, +\glqq round\grqq\ f"ur eine Linie mit abgerundeten Enden, +\glqq arrow\grqq\ f"ur eine Linie mit geschlossener ausgef"ullter Pfeilspitze, +\glqq wedge\grqq\ f"ur eine Linie mit offener Pfeilspitze ohne Abschlu"s und +\glqq triangle\grqq\ f"ur eine Linie mit geschlossener ungef"ullter +Pfeilspitze. + +\subsubsection{setarrowsize~{\it \<dimen>~\<dimen>}} +Stellt die Gr"o"se von Pfeilspitzen ein. Der erste Parameter gibt an, wie +weit sich die Schenkel des Pfeils vom Stamm entfernen, der zweite Parameter +gibt die L"ange der Pfeilspitze an. + +\subsubsection{setarrowshape~{\it \<real>~\<real>}} +Stellt das Aussehen von Pfeilspitzen ein. Die Schenkel und der Abschlu"s der +Pfeilspitzen bestehen aus drei B\'ezierkurven mit doppeltem Kontrollpunkt +auf halber L"ange der Kurve. +Die beiden Parameter beeinflussen die Lage dieser Kontrollpunkte, wobei +der erste Parameter die Schenkel, der zweite den Abschlu"s steuert. Die +Parameter sind Gleitpunktzahlen, wobei das Vorzeichen "uber die Richtung der +Ablenkung der B\'ezierkurven entscheidet. Positive Werte ziehen die Schenkel und +den Abschlu"s nach innen in Richtung Schwerpunkt des Dreiecks, das die Pfeilspitze +umschlie"st. Negative Werte dr"ucken entsprechend nach au"sen. Bei Aufruf ohne +Parameter wird auf die Standardeinstellung +zur"uckgesetzt (Pfeil aus Geradenst"ucken), bei Aufruf mit einem Parameter wird nur der +Schenkelparameter gesetzt. + +\subsubsection{setarrowline~{\it\<dimen>}} +Bei Linienenden von Typ {\tt triangle} steuert dieser Befehl die Liniendicke der +Pfeilspitze. + +\subsubsection{setpoint~{\it \<point number> \<repeated> \<position>}~\dots} +Setzt einen oder mehrere der 500--1000 internen Kontrollpunkte (je nach +Ger"at). Der Parameter {\it point number\/} +steht dabei f"ur die Nummer des zu definierenden Punktes. + +Falls mit einem {\tt setpoint}-Kommando mehrere Punkte definiert werden, +k"onnen die definierenden Ausdr"ucke durch Leerzeichen oder, falls wegen +Eindeutigkeit notwendig, durch \cstok{,} getrennt werden. + +Der Parameter {\it repeated\/} ist ein Wiederholfaktor, der +die Erzeugung mehrerer Punkte mit aufeinanderfolgenden Indizes bewirkt. +Ein Wiederholfaktor hat folgenden rekursiven Aufbau: + +\begin{quote} +\begin{verbatim} +<repeated>::=<> | + <repeated> | + <identifier>=<expr1>..<expr2>:<expr3> +\end{verbatim} +\end{quote} + +Der Wiederholfaktor kann also optional (leer) oder verschachtelt +angegeben werden. +Ein einfacher Wiederholfaktor besteht aus einem noch nicht definierten +Bezeichner und drei Ausdr"ucken, wobei der erste {\tt expr1} und zweite +{\tt expr2} den Parameterbereich des Bezeichners definieren und der +dritte die Anzahl zu erzeugender Punkte. Der Parameterbereich wird in +"aquidistante Abschnitte zerlegt und der Bezeichner erh"alt f"ur jeden +erzeugten Punkt einen dieser Werte im Parameterbereich. Durch Verwendung +des Bezeichners im folgenden {\it position\/}-Parameter k"onnen die +Punkte auf diese Weise an verschiedene Positionen gesetzt werden. + +Optional +kann in eckigen Klammern ein Offset zur aktuellen Position angegeben +werden, der folgendes Aussehen hat: + +\begin{quote} +\begin{verbatim} +<position>::=<> | + [<expr1>,<expr2>] | + [<expr1>,<expr2>,<rotate>] + +<rotate>::=<expression> | + <expression>[<ex1>,<ex2>] +\end{verbatim} +\end{quote} + +In eckigen Klammern wird durch die Ausdr"ucke {\tt expr1} und {\tt expr2} +ein Verschiebungsfaktor in $x$- und $y$-Richtung angegeben. +Dieser Wert wird entweder mit dem mittels {\tt setunitlength} +eingestellten Wert multipliziert oder absolut durch eine bema"ste Gr"o"se +angegeben und ergibt den tats"achlichen Offset. Falls ein {\it repeated\/} +Parameter vorausgegangen ist, kann durch Angabe eines Rotationsfaktors +der erzeugte Punkt noch gedreht werden. Der Bezugspunkt f"ur die Drehung +ist entweder der letzte eingegebene Punkt oder der durch {\tt ex1} +und {\tt ex2} spezifizierte Punkt. Gedreht wird in beiden F"allen um +den Winkel {\tt expression}, der im Bogenma"s angegeben werden mu"s. + +F"ur Beispiele lesen Sie bitte das Grafiktutorial, Anhang~\ref{lagratut}. + +\subsubsection{{\it \<pointlist>}} +F"ur die nun folgenden Befehle wird als Parameter jeweils eine Punktliste +erwartet. Die Punktliste bezieht sich auf die mit {\tt setpoint} vergebenen +Nummern, falls ein direkter Bezug auf diese Punkte gew"unscht ist. Einzelne +Punkte in der Punktliste k"onnen wegen Eindeutigkeit durch \cstok{,} +getrennt werden. Bei Eindeutigkeit ist das Trennen durch Leerzeichen statthaft. +Sollen mehrere +direkt hintereinander definierte Punkte verwendet werden, reicht die +Angabe des Bereichs, z.B.\ 105--113. Bereiche und Einzelpunkte k"onnen +in der Punktliste beliebig gemischt werden. + +Gibt man statt einer Punktnummer den Ausdruck $[p,q]\lambda$ an, so wird +damit der Punkt $p(1-\lambda)+q\lambda$ spezifiziert, also ein Punkt auf der +Verbindungsgeraden von $p$ und $q$. F"ur $\lambda$ darf ein beliebiger +Ausdruck aus den vier Grundrechenarten und runden Klammern eingesetzt werden. +Selbstverst"andlich k"onnen die Punkte $p$ und $q$ wieder von der Form +$[r,s]\mu$ sein. + +Eine weitere M"oglichkeit zur Angabe eines Punktes besteht in einem Ausdruck +der Form $(p,q)$. In diesem Fall hat der erzeugte Punkt die +$x$-Ko\-or\-di\-na\-te +von $p$ und die $y$-Koordinate von $q$. Auch diese Notation darf wieder +beliebig verschachtelt verwendet werden. Als Kurznotation ist statt +der Angabe von $p$ oder $q$ das Zeichen {\verb|@|} zul"assig, das den zuletzt +definierten Punkt der Punktliste einsetzt. + +Durch Angabe von \cstok{\verb|@|}, +direkt gefolgt von einer Zahl {\it \<n\/>}, bezieht man sich auf die +{\it \<n\/>} zuletzt eingegebenen Punkte. Ohne Angabe einer Zahl bezieht sich +\verb|@| auf den in der Liste vorangehenden Punkt. Ist der Betrag von {\it \<n\/>} +negativ, wird au"serdem der Punktz"ahler um den Betrag von {\it \<n\/>} +zur"uckgesetzt. + +Als Besonderheit kann man eine Punktliste auch mit einigen speziellen +Parametern versehen, die das Zeichnen von Teilobjekten und das wiederholte +Zeichnen von Objekten erlauben. Ein Linienbefehl mit einer solchen modifizierten +Punktliste hat dann folgendes Aussehen: + +\begin{compout} +\<command> \<pointlist> \<pieces> \<repeated> \<position> +\end{compout} + +Das Aussehen der Parameter {\tt repeated} und {\tt position} entspricht +den gleichbezeichneten Parametern des {\tt setpoint}-Kommandos. Allerdings +ist die Bedeutung dahingehend ge"andert, da"s das "ubergeordnete Kommando +{\tt command} entsprechend dem {\tt repeat}-Faktor wiederholt wird, und zwar +an den durch den {\tt position}-Parameter bezeichneten Stellen. Ein +{\tt position}-Parameter darf nur angegeben werden, falls ein +{\tt repeated}-Parameter vorausgeht! + +Der Parameter {\tt pieces} kann verschachtelt angegeben werden und hat +folgendes Aussehen: + +\begin{quote} +\begin{verbatim} +<pieces>::=:<expr1>..<expr2> | + :<expr1>..<expr2><pieces> +\end{verbatim} +\end{quote} + +Durch die Parameter {\tt expr1} und {\tt expr2} wird nur ein Teil der +Punktliste zum Zeichen des mit {\tt command} erzeugten Objektes +herangezogen. Die Werte k"onnen sich auf die Punktnummern der Punkteliste +beziehen und d"urfen in diesem Fall bei $n$ Punkten im Bereich +$0\le{\tt expr}\le n$ liegen. Bei bema"sten Werten wird das Zeichnen +des Objekts bis zur Position {\tt expr1} unterdr"uckt und dann nur bis +Position {\tt expr2} gezeichnet. + +F"ur Beispiele lesen Sie bitte das Grafiktutorial, Anhang~\ref{lagratut}. + +\subsubsection{dot~{\it \<pointlist>}} +Die Punkte der Punktliste werden mit dem voreingestellten Durchmesser +als gef"ullte Kreise dargestellt. + +\subsubsection{spline~{\it \<pointlist>}} +Zeichnet einen nat"urlichen Spline, der durch die Kontrollpunkte in {\it \<pointlist>} +definiert ist. + +\subsubsection{hermitespline~{\it \<pointlist>}} +In der Praxis hat man h"aufig das Problem, Kurven zeichnen zu m"ussen, die +eine bestimmte Anfangs- und/oder Endrichtung haben sollen. +Der Grafikbefehl zum Setzen eines solchen Hermiteschen Splines ist ist analog +zum {\tt spline}-Befehl, nur da"s er eben {\tt hermitespline} hei"st. +Bitte lesen Sie die Abschlu"sbemerkung zu Hermiteschen Splines! + +\subsubsection{lefthermitespline, righthermitespline {\it \<pointlist>}} +Es ist auch m"oglich, nur an einem Ende des Splines die Richtung vorzugeben, +und am anderen Ende des Splines eine nat"urliche Randbedingung zu fordern. +Dies ist durch Verwendung von {\tt lefthermitespline} und {\tt +righthermitespline} m"oglich. + +\attention Die Befehle zum Zeichnen Hermitescher Splines haben als Parameter +eine Kontrollpunktliste, wobei der erste bzw.\ letzte bzw.\ erste und letzte +Punkt der Liste eine Richtung vorgeben, die umso st"arker ausgepr"agt ist, +je weiter der Punkt von der Kurve entfernt ist. + +\subsubsection{closedspline~{\it \<pointlist>}} +Durch diesen Befehl wird ein glatter geschlossener nat"urlicher Spline +gezeichnet, wobei der erste und letzte Punkt der Punktliste miteinander +verbunden werden. + +\subsubsection{poly, closedpoly {\it \<pointlist>}} +Diese beiden Befehle zeichnen einen offenen bzw.\ geschlossenen Polygonzug, +der durch die jeweilige Punktliste definiert ist. + +\subsubsection{defclip, clip, whiteclip, patclip, endclip} +Diese Funktionen dienen zum Definieren eines Clippfades, bez"uglich dessen +Begrenzungslinie bis zum {\tt endclip}-Kommando folgende \TeX- +und Grafik-Ausgaben +gekappt werden. Die Begrenzungslinie {\em mu"s\/} geschlossen und in +einem durchgehendem St"uck definiert sein, +unterliegt aber ansonsten keinerlei Be\-schr"an\-kun\-gen. \glqq Durchgehendes +St"uck\grqq\ soll in diesem Zusammenhang bedeuten, da"s man nicht +nachtr"aglich auseinanderklaffende St"ucke mit einem dritten schlie"st, +sondern die Umri"slinie \glqq wie mit einem Pinselstrich\grqq\ erzeugt. +Durch Angabe von +{\tt defclip} wird der Beginn des Clippfades markiert. Alle folgenden +Angaben definieren diesen Clippfad, bis +ein {\tt clip}-, {\tt whiteclip}- oder {\tt patclip}-Kommando die Eingabe +des Clippfades +abschlie"st. Alle folgenden \TeX-Ausgaben, {\em also auch jeder Text\/}, +werden bez"uglich dieses Pfades gekappt, bis das {\tt endclip}-Kommando +diesen Modus beendet. + +Beim Clippen beeinflussen die drei Clipbefehle die Ausgabe wie folgt: + +\begin{tabular}{ll} +\tt clip & bisherige Elemente der Zeichnung werden nicht verdeckt\\ +\tt whiteclip & der Clipbereich wird gel"oscht\\ +\tt patclip & der Clipbereich wird mit dem durch {\tt defpattern}\\ + & definierten F"ullmuster ausgef"ullt +\end{tabular} + + +\subsubsection{input~''\it{filename}''} +Der Treiber liest die Grafikkommandos aus der Datei {\it filename\/}. +Die Angabe des Dateinamens mu"s den Konventionen des verwendeten +Betriebssystems entsprechen. Die Definition eines Pfades f"ur solche +externen Grafikdateien ist m"oglich. Lesen Sie dazu die entsprechenden +Kapitel beim verwendeten Treiber! + +Bitte beachten\attention\ Sie, das das ''-Zeichen bei manchen Macropaketen wie +den Anpassungen an die deutsche Sprache {\tt german.sty} eine Spezialfunktion +bekommen hat, die die normale +Verwendung wie beim {\tt input}-Befehl unm"oglich macht! In solchen F"allen +mu"s vor Absetzen des {\tt input} die Spezialbedeutung ausgeschaltet +werden. Bei {\tt german.sty} beschieht das z.B.\ durch eine Klammerung +mit \verb|\originalTeX| und \verb|\germanTeX| Befehlen. + + +\section{Macros zur Grafikeinbindung}\label{lmacro} +Um Ihnen das Kopfzerbrechen zu ersparen, alle {\tt $\backslash$special}-Befehle +zu lernen bzw.\ Ihre Grafiken auszumessen und mit {\tt $\backslash$hbox} und +{\tt $\backslash$vbox} Befehlen zu hantieren, um Platz f"ur Grafiken zu +schaffen, gibt es eine ganze Anzahl vorgefertigter \TeX-Macros, die Ihnen +diese Arbeit abnehmen. Diese Macropakete sollten im Standard-Suchpfad von +\TeX\ liegen und k"onnen mit {\tt $\backslash$input \<name>} geladen werden, +wobei {\tt name} f"ur {\tt graphic}, {\tt bildmac}, {\tt epsf}, etc.\ steht. + +\subsection{Die {\tt GRAPHIC}-Macros}\label{lgraph} +Die Datei {\tt GRAPHIC.TEX} enth"alt die Macros zur Verwendung von +Grafiken im Fremdformat. + +\imgg\ werden auf dem Atari~ST zun"achst +mit {\tt IMGTOTEX.TTP} bearbeitet. Dabei wird die gew"unschte Auf\/l"osung +der Grafik in dpi erfragt und in der Datei eingetragen und eine Zusatzdatei +erstellt, die die Gr"o"se des Bildes in \TeX-Einheiten enth"alt. Als +Richtwert zur Auf\/l"osung kann bei Laserdruckern ein Wert von 150 dpi f"ur +Grafiken, die den ganzen Atari Bildschirm enthalten, angegeben werden. Die +erzielte Gr"o"se im Ausdruck liegt in der Breite in etwa richtig f"ur +ein \LaTeX-Dokument. Als Beispiel siehe Abbildung \ref{ldis}. In der +\TeX-Eingabe wird die bearbeitete Grafik dann +mittels {\tt $\backslash$includegraphic\{filename\}} eingebunden. Der +Platz f"ur das Bild wird automatisch freigehalten. Zudem kann das Bild +behandelt werden, wie ein einzelner Buchstabe, d.h.\ zentriert werden, etc. + +An der Universit"at Augsburg wurde im Rahmen einer Diplomarbeit das +objektorientierte Zeichenprogramm {\tt PCDRAW} erstellt, das \ps-Code +als Ausgabe erzeugen kann. Zudem ist ein "ahnlicher Mechanismus, wie f"ur +\imgg\ auf dem Atari eingebaut. Mittels des Men"upunktes \glqq Picture +to \TeX\grqq\ wird interaktiv die beabsichtigte Bema"sung abgefragt, +der \ps-Code des Bildes passend abgespeichert und eine Zusatzdatei +f"ur \TeX\ erstellt. Das +Bild kann dann mittels {\tt $\backslash$psdraw\{filename\}} in den +Text eingebunden werden. Auch hier kann das Bild wie ein einzelner Buchstabe +behandelt werden. Genaueres entnehmen Sie bitte der Beschreibung +von \pcd. + +Falls man selbst in \ps\ programmiert, kann man sein fertiges Bild per Hand +ausmessen und in eine zweite Datei die Gr"o"seninformation folgenderma"sen +ablegen: + +\begin{quote} +\begin{verbatim} +\grwd = 108.160 mm +\grht = 67.600 mm +\end{verbatim} +\end{quote} + +Dabei mu"s \verb|\grwd| die Breite des Bildes und \verb|\grht| die H"ohe +des Bildes zugewiesen bekommen. +Wenn z.B.\ die erste Datei mit dem \ps-Bild unter {\tt ESCHER.PS} +und die zweite Datei mit der Gr"o"seninformation unter {\tt ESCHER.TEX} +abgespeichert sind, so kann durch den Aufruf + +\begin{compout} +\verb|\includeps{ESCHER}| +\end{compout} + +dieses Bild in einen \TeX-Text eingebunden werden, wobei automatisch +ge\-n"u\-gend Platz freigehalten wird. Ein Beispiel f"ur diese Technik ist +Bild~\ref{ebild} von Peter Henderson und Peter Bumbulis frei nach +Maurits C.\ Escher. + +\begin{figure}[hbtp]\centering +\centerline{\includeps{texfish}} +\caption{Eine fl"achenf"ullende Grafik nach Escher}\label{ebild} +\end{figure} + +Bitte beachten Sie, da"s dieser Mechanismus zum Einbinden von Bildern, die +mittels \ps\ erstellt wurden, +inzwischen veraltet ist und nur aus Kompatibilit"atsgr"unden unterst"utzt +wird. Neue Projekte sollten gleich auf die {\tt EPSF}-Macros zur"uckgreifen +(siehe Abschnitt~\ref{lepsf}), +die "ubrigens von Tomas Rokicki und Donald E.~Knuth f"ur {\tt DVIPS}, einen +anderen \ps-\dvi-Treiber, entwickelt wurden. + +\subsection{Die {\tt BILDMAC}-Macros}\label{lbildmac} +Die Datei {\tt BILDMAC.TEX} enth"alt einige Macros zur Verwendung der +eingebauten Grafikbefehle. Die Entwicklung an diesen Macros dauert noch +an. Die Macros k"onnen jedoch als eine Anregung verstanden werden, eigene +Macros zu definieren. + +Trotz der noch andauernden Entwicklung empfehlen die Autoren dringend +die Verwendung dieser Macros anstelle der ausf"uhrlichen +\verb|\special|-Befehle, da durch jeden \verb|\special|-Befehl mit +anschlie"senden Zeilentrenner ein Leerzeichen erzeugt wird, das das +ordnungsgem"a"se Funktionieren des \verb|\put|-Befehls beeintr"achtigt. + +Die Kompatibilit"at von neuen {\tt BILDMAC}-Dateien zu vorherigen Versionen +wird ab Treiberversion~2.2 weitestgehend bewahrt. Falls dies aus irgendeinem +Grund einmal nicht m"oglich sein sollte, ist im Handbuch eine M"oglichkeit +angegeben, dieselben Ausgaben mit anderen Konstruktionen zu erreichen. + +Das prinzipielle Schema der {\tt BILDMAC}-Befehle ist immer gleich. +Die jeden Grafikbefehl einleitende \verb|\special{gr|-Sequenz und +etwaiger Leerraum, der den Befehlen folgt, wird herausgefiltert. +Auf diese Weise wird + +\begin{compout} +\verb|\special{gr setpoint 0}| +\end{compout} + +zu + +\begin{compout} +\verb|\setpoint{0}|$\,${\rm ,} +\end{compout} + +usw. Bitte drucken Sie sich die Datei {\tt BILDMAC.TEX} aus und sehen selbst, +welche Befehle zur Verf"ugung stehen. Macros, die "uber Textersatz hinausgehen, +sind jeweils (hoffentlich) kommentiert. + +\subsection{Die {\tt EPSF}-Macros}\label{lepsf} +In den Dateien {\tt EPSF.TEX} bzw.\ {\tt EPSF.STY} liegen Macros vor, die +zur Einbindung von Bildern in Encapsulated \ps\ dienen. Wenn man eine +\ps-Datei vorliegen hat, sollte man zun"achst feststellen, ob +sie in Encapsulated \ps-Form vorliegt. Falls dies nicht der Fall ist, mu"s man +die Datei in diese Form bringen. Laden Sie also die Datei mit der Grafik +in einen Editor. Sollte es dabei Probleme mit der Zeilenl"ange geben, hat +das erzeugende Programm den \ps-Standardzeilentrenner LF verwendet und Sie +m"ussen die Datei mit {\tt UNIX2DOS} oder {\tt CRLF}\footnote{Quellcode +wird mitgeliefert} +bearbeiten, so da"s eine Standard-ASCII-Datei entsteht, die Ihr Dru"cker +"ubrigens problemlos verdaut. Haben Sie die Datei erfolgreich geladen, +sollte unter den ersten paar Dutzend Zeilen ein \ps-Kommentar + +\begin{quote} +\begin{verbatim} +%%BoundingBox: 1 2 3 4 +\end{verbatim} +\end{quote} + +oder zumindest + +\begin{quote} +\begin{verbatim} +%%BoundingBox: (atend) +\end{verbatim} +\end{quote} + +zu finden sein. Im zweiten Fall kopieren Sie den richtigen {\tt Bounding Box} +Kommentar vom Dateiende an den Dateianfang und l"oschen die jetzt obsolete +{\tt atend}-Zeile. Die Datei ist jetzt problemlos durch \TeX\ und +\dvilw\ zu verarbeiten. + +Haben Sie keinen {\tt \%\%Bounding Box}-Kommentar gefunden, m"ussen Sie selbst +einen einf"ugen. Dazu steht Ihnen die Hilfsdatei {\tt BB.PS} von Bernie Cosell zur +Verf"ugung. Kopieren Sie den Inhalt von {\tt BB.PS} und Ihres Bildes +in eine neue Datei und drucken dieses Bild aus. Dazu m"ussen Sie evtl.\ am +Ende der Datei ein {\tt showpage}-Kommando einf"ugen. Das neue Bild hat jetzt +einen Rahmen und die notwendigen Parameter f"ur die {\tt Bounding Box} stehen +am linken unteren Ende der Grafik. Laden Sie nun erneut das urspr"ungliche Bild +und f"ugen irgendwo am Anfang der Datei eine Zeile + +\begin{quote} +\begin{verbatim} +%%BoundingBox: 1 2 3 4 +\end{verbatim} +\end{quote} + +ein, wobei Sie anstelle von {\tt 1}, {\tt 2}, {\tt 3} und {\tt 4} die +richtigen Werte von Ihrem Testausdruck "ubernehmen. Falls Ihre Datei eine +{\tt showpage}-Anweisung enthielt, brauchen Sie diese nicht entfernen, da +das Ausdrucken der Grafik jetzt im Zusammenhang mit dem \TeX-Text geschieht +und die entsprechenden Befehle von \dvilw\ erzeugt werden, d.h.\ das +{\tt showpage} wird lokal von \dvilw\ umdefiniert. + +Zum Setzen des Bildes im laufenden Text ben"otigt \TeX\ einige Macros, die +--- wie schon vorher erw"ahnt --- in der Datei {\tt EPSF.STY} +gespeichert sind. Laden Sie diese Datei durch + +\begin{quote} +\begin{verbatim} +\input epsf.sty +\end{verbatim} +\end{quote} + +(\TeX) oder durch + +\begin{quote} +\begin{verbatim} +\documentstyle[...,epsf,...]{...} +\end{verbatim} +\end{quote} + +(\LaTeX). Sie k"onnen nat"urlich in \TeX\ auch die Datei {\tt EPSF.TEX} +werwenden und sich die Endung beim \verb|\input|-Befehl sparen. Der +Inhalt der Dateien ist gleich! Jetzt k"onnen Sie Ihr Bild durch + +\begin{quote} +\begin{verbatim} +\epsfbox{bild.ps} +\end{verbatim} +\end{quote} + +setzen lassen, wobei durch \TeX\ bzw.\ \LaTeX\ automatisch durch die +{\tt Bounding Box}-Anweisung gen"ugend freier Platz gelassen wird. +Au"serdem haben Sie die M"oglichkeit, das \ps-Bild in der Gr"o"se +dem Text anzupassen. Dazu m"ussen Sie lediglich {\em vor\/} dem +\verb|\epsfbox|-Kommando\footnote{Achtung: in "alteren Versionen der +{\tt EPSF}-Macros hei"st $\backslash${\tt epsfbox} +$\backslash${\tt epsffile}.} eines der Kommandos + +\begin{quote} +\begin{verbatim} +\epsfxsize=<dimen> +\epsfysize=<dimen> +\end{verbatim} +\end{quote} + +absetzen, um das Bild horizontal bzw.\ vertikal zu skalieren. Der Parameter +\verb|<dimen>| ist eine g"ultige \TeX-Ma"seinheit wie 150pt oder 5.7cm. +Falls Sie +beide Kommandos absetzen, hat das \verb|\epsfxsize|-Kommando Vorrang. +Dadurch k"onnen keine Verzerrungen entstehen! Ein g"unstiger Wert f"ur die +horizontale Skalierung ist z.B.\ f"ur \TeX\ \verb|\hsize| bzw.\ f"ur +\LaTeX\ \verb|\textwidth|. Dadurch ist das Bild genauso breit, wie der +umgebende Text. + +Bei Verwendung\attention\ von \LaTeX\ kann es bei manchen +Environments notwendig sein, unmittelbar vor das \verb|\epsfbox|-Kommando ein +\verb|\leavevmode|-Kom\-man\-do zu stellen. Sie werden die entsprechende +Fehlermeldung bekommen und k"onnen ganz gelassen reagieren! + +Durch Absetzen des Befehls \verb|\epsfverbosetrue| {\em vor\/} den +\verb|\epsfbox|-Be\-feh\-len k"onnen Sie sich die Gr"o"se der eingebundenen +\ps-Grafiken am Bildschirm anzeigen lassen. + + |