01.11.2014 Aufrufe

PDF-Format - DANTE eV

PDF-Format - DANTE eV

PDF-Format - DANTE eV

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!