Syntax der Definition von Textbeschriftungsbefehlen
Neue Textbeschriftungsbefehle können mit dem
define-markup-command
-Scheme-Makro definiert werden.
(define-markup-command (befehl-bezeichnung layout props Arg1 Arg2 ...) (Arg1-typ? Arg2-typ? ...) [ #:properties ((Eigenschaft1 Standard-Wert1) ...) ] ..Befehlkörper..)
Die Argumente sind:
- befehl-bezeichnung
die Bezeichnung des Befehls
- layout
die ‚layout‘-Definition
- props
eine Liste an assoziativen Listen, in der alle aktiven Eigenschaften enthalten sind
- argi
das ite Befehlsargument
- argi-type?
eine Eigenschaft für das ite Argument
Wenn der Befehl Eigenschaften des props
-Arguments benutzt,
kann das #:properties
-Schlüsselwort benutzt werden um zu
bestimmen, welche Eigenschaften mit welchen Standard-Werten benutzt
werden.
Argumente werden nach ihrem Typ unterschieden:
- eine Textbeschriftung entspricht einem Typenprädikat
markup?
; - eine Textbeschriftungsliste entspricht einem Typenprädikat
markup-list?
; - jedes andere Scheme-Objekt entspricht Typenprädikaten wie etwa
list?
,number?
,boolean?
, usw.
Es gibt keine Einschränkung in der Reihenfolge der Argumente (nach
den Standard-Argumenten layout
und props
). Textbeschriftungsfunktionen,
die als letztes Argument eine Textbeschriftung haben, haben die
Besonderheit, dass sie auf Textbeschriftungslisten angewendet werden
können, und das Resultat ist eine Textbeschriftungsliste, in der
die Textbeschriftungsfuktion (mit den angegebenen Argumenten am Anfang)
auf jedes Element der originalen Textbeschriftungsliste angewendet
wurde.
Da das Wiederholen der Argumente am Anfang bei der Anwendung einer Textbeschriftungsfunktion auf eine Textbeschriftungsliste for allem für Scheme-Argumente sparsam ist, kann man Leistungseinbußen vermeiden, indem man nur Scheme-Argumente für die Argumente am Anfang einsetzt, wenn es sich um Textbeschriftungsfunktionen handelt, die eine Textbeschriftung als letztes Argument haben.