PDF-Format - DANTE eV
PDF-Format - DANTE eV
PDF-Format - DANTE eV
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Ausführung durcheinander geraten kann. Man kann sie leicht mit TEXs Befehl<br />
\message austesten, ohne Nebenwirkungen erwarten zu müssen (abgesehen<br />
von völligen Verwirrungen von TEX bis zum Totalabsturz beim Debuggen),<br />
da sie keine Variablen verändern. Da sie nicht auf die mit der Gruppenschachtelung<br />
zusammenhängenden save_stack Datenstrukturen von TEX<br />
zugreifen, sind sie oft auch schneller als ihre Alternativen.<br />
Im Tutorium sollen systematische Techniken zum Schreiben voll expandierbarer<br />
Makros erläutert werden:<br />
\csname-Kaskaden sind eine Technik der Dauerexpansion, bei der mehrere<br />
\csname-Makros ineinander geschachtelt werden, die bei der Komplettierung<br />
dann jeweils ein \endcsname für den nächstäußeren Makro<br />
abwerfen. Das Einsatzgebiet von \csname-Kaskaden läßt sich wie folgt<br />
charakterisieren:<br />
1. Die Abarbeitung wird gesteuert von einer Sequenz von wenigen,<br />
fest vorgegeben Charaktertoken (etwa Dezimalziffern).<br />
2. Die Abarbeitung startet am rechten Ende dieser Sequenz und<br />
arbeitet sich nach links vor.<br />
3. Informationen in Form von Makroargumenten werden von den<br />
Makros rechts nach links weitergereicht.<br />
Damit eignen sich \csname-Kaskaden gut für numerische Aufgaben.<br />
Typische Anwendungen wären die Konvertierung von Dezimalzahlen<br />
in griechische oder römische Zahlen, oder in ausgeschriebene Zahlenbeträge<br />
wie in Scheckformularen. Eine weitere wäre die Simulation von<br />
Arithmetik, etwa Addition und Multiplikation von Zahlen.<br />
Als sehr kompaktes Beispiel wird das Makro \replicate vorgestellt,<br />
das mit \replicate{20}{*} voll expandierbar zwanzig Sternchen erzeugt<br />
und dabei Knuths Lösungen der ersten Aufgabe aus dem Appendix<br />
D des TEXbook unelegant erscheinen läßt.<br />
\romannumeral-Abzählerei Das Makro \romannumeral zieht sich durch einen<br />
ganzen Stapel verschiedener Anwendung durch. Der Grund dafür<br />
ist, daß man eine Zahl in eine entsprechende Zahl von m umwandeln<br />
kann, wenn man 000 an die Zahl hängt und \romannumeral darauf<br />
losläßt. Dies ist die simpelste Methode, TEX etwas eine vorgegebene<br />
Zahl von Malen wiederholen zu lassen.<br />
\number-Dauerexpansion kommt auch oft bei numerischen Aufgaben zum<br />
Einsatz, wenn es wichtig ist, daß eine komplette Expansionskette bis<br />
zum Ende abgearbeitet ist, bevor man das nächste Mal ihren Anfang<br />
betrachtet. Dies wird zumindest an dem Beispiel der Dezimal/<br />
Hexadezimal-Konvertierung erläutert.<br />
\iftrue-Verdrehung ist ein wichtiges Werkzeug beim kreativen Umgang<br />
mit Bedingungen. Sie basiert auf dem Trick, daß<br />
<strong>DANTE</strong> 2002 und 26. MV von <strong>DANTE</strong> e.V. 11