Makro Expansion |
Das Interessanteste an der TeXmacs-Stil-Definitions-Sprache ist die
Möglichkeit, Makros selbst zu definieren. Dabei gibt es drei
verschiedene Makro-Typen: gewöhnliche Makros, Makros mir einer
unbestimmten Anzahl von Argumenten und externe Makros, die durch
Gewöhnliche Makros werden üblicherweise mit einer Zuweisung (assign) definiert:
<assign|mein-makro|<macro|x1|⋯|xn|Rumpf>>
Nach solch einer Zuweisung wird
<mein-makro|y1|...|yn>
aufgerufen werden kann.
Innerhalb des Rumpfes kann das
<assign|hello|<macro|name|Hello name, Sie
sehen heute aber gut aus!>>
Man kann ein Makro mit mehr oder weniger Argumenten aufrufen als
eigentlich vorgeshen sind. Überflüssige Argumente werden
einfach ignoriert. Fehlende Argumente werden durch eine
Nullgröße, das
<
assign
|
hallo-hallo
|
<
macro
|
erster
|
zweiter
|
<\if|
<equal|zweiter|?>
Hallo erster, Sie sehen
heute einsam aus...
Hallo erster und zweiter, Sie sind ein
hübsches Paar!
Angemerkt sei, dass Sie mit Makros ähnlich wie beim funktionalen Programmieren rechnen können, nur sind TeXmacs-Makros keine Closures, noch nicht. Beispielsweise:
<assign|meine-makro-kopie|mein-makro>
Das
<
assign
|
overloaded-hi
|
<
macro
|
name
|
<\compound|
<if|<gutes-wetter>|fröhliches-hi|trauriges-hi>
name