LilyPond erweitern: 2.5.4 Neue Definitionen von Beschriftungslistenbefehlen

### 2.5.4 Neue Definitionen von Beschriftungslistenbefehlen

Beschriftungslistenbefehle können mit dem Scheme-Makro `define-markup-list-command` definiert werden, welches sich ähnlich verhält wie das `define-markup-command`-Makro, das schon beschrieben wurde in Neue Definitionen von Beschriftungsbefehlen. Ein Unterschied ist, dass bei diesem Listen-Makro eine ganze Liste an Stencils ausgegeben wird.

Im folgenden Beispiel wird ein `\paragraph`-Beschriftungslistenbefehl definiert, welcher eine Liste von Zeilen im Blocksatz ausgibt, von denen die erste Zeile eingerückt ist. Der Einzug wird aus dem `props`-Argument entnommen.

>     #(define-markup-list-command (paragraph layout props args) (markup-list?)
>        #:properties ((par-indent 2))
>        (interpret-markup-list layout props
>          #{\markuplist \justified-lines { \hspace #par-indent #args } #}))

Die Version nur in Scheme ist etwas komplexer:

>     #(define-markup-list-command (paragraph layout props args) (markup-list?)
>        #:properties ((par-indent 2))
>        (interpret-markup-list layout props
>          (make-justified-lines-markup-list (cons (make-hspace-markup par-indent)
>                                                  args))))

Neben den üblichen `layout` und `props`-Argumenten nimmt der `paragraph`-Beschriftungslistenbefehl als Argument eine Beschriftungsliste, die `args` genannt wird. Das Prädikat für Beschriftungslisten ist `markup-list?`.

Zuerst errechnet die Funktion die Breite des Einzugs, eine Eigenschaft mit der Bezeichnung `par-indent` anhand der Eigenschaftsliste `props`. Wenn die Eigenschaft nicht gefunden wird, ist der Standardwert `2`. Danach wird eine Liste von Zeilen im Blocksatz erstellt, wobei der eingebaute `\justified-lines`-Beschriftungslistenbefehl eingesetzt wird, der verwandt ist mit der `make-justified-lines-markup-list`-Funktion. Horizontaler Platz wird zu Beginn eingefügt mit `\hspace` (oder der `make-hspace-markup`-Funktion). Zuletzt wird die Beschriftungsliste ausgewertet durch die `interpret-markup-list`-Funktion.

Dieser neue Beschriftungslistenbefehl kann wie folgt benutzt werden:

>     \markuplist {
>       \paragraph {
>         Die Kunst des Notensatzes wird auch als \italic {Notenstich} bezeichnet. Dieser
>         Begriff stammt aus dem traditionellen Notendruck. Noch bis vor etwa
>         20 Jahren wurden Noten erstellt, indem man sie in eine Zink- oder
>         Zinnplatte schnitt oder mit Stempeln schlug.
>       }
>       \override-lines #'(par-indent . 4) \paragraph {
>         Diese Platte wurde dann mit Druckerschwärze versehen, so dass sie
>         in den geschnittenen und gestempelten Vertiefungen blieb. Diese
>         Vertiefungen schwärzten dann ein auf die Platte gelegtes Papier.
>         Das Gravieren wurde vollständig von Hand erledigt.
>       }
>     }

#### LilyPond – Extending v2.22.2 (stabiler Zweig).