LilyPond erweitern: 2.5.1 Beschriftungskonstruktionen in Scheme

### 2.5.1 Beschriftungskonstruktionen in Scheme

Das `markup`-(Textbeschriftungs)Makro erstellt Textbeschriftungs-Ausdrücke in Scheme, wobei eine LilyPond-artige Syntax benutzt wird. Beispielsweise ist

>     (markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world")
>                       #:larger #:line ("foo" "bar" "baz")))

identisch mit

>     #{ \markup \column { \line { \bold \italic "hello" \raise #0.4 "world" }
>                       \larger \line { foo bar baz } } #}

Dieses Beispiel zeigt die hauptsächlichen Übersetzungsregeln zwischen normaler Textbeschriftungssyntax von LilyPond und der Textbeschriftungssyntax in Scheme. Es ist meistens der beste Weg, `#{ … #}` zur Eingabe von LilyPond-Syntax zu benützen, aber es soll auch erklärt werden, wie man das `markup`-Makro einsetzt, um eine Lösung nur in Scheme zu bekommen.

> LilyPond | Scheme
> `\markup Text1` | `(markup Text1)`
> `\markup { Text1 Text2 ... }` | `(markup Text1 Text2 ... )`
> `\Beschriftungsbefehl` | `#:Beschriftungsbefehl`
> `\Variable` | `Variable`
> `\center-column { ... }` | `#:center-column ( ... )`
> `Zeichenkette` | `"Zeichenkette"`
> `#scheme-Arg` | `scheme-Arg`

Die gesamte Scheme-Sprache ist innerhalb des `markup`-Makros zugänglich. Man kann also beispielsweise Funktionen innerhalb eines `markup` aufrufen, um Zeichenketten zu manipulieren. Das ist nützlich, wenn neue Beschriftungsbefehle definiert werden sollen (siehe auch Neue Definitionen von Beschriftungsbefehlen).

#### Bekannte Probleme und Warnungen

Das Beschriftungslistenargument von Befehlen wie `#:line`, `#:center` und `#:column` kann keine Variable oder das Resultat eines Funktionsaufrufen sein.

    (markup #:line (Funktion-die-Textbeschriftung-ausgibt))

ist ungültig. Man sollte anstatt dessen die Funktionen `make-line-markup`, `make-center-markup` oder `make-column-markup` benutzen:

    (markup (make-line-markup (Funktion-die-Textbeschriftung-ausgibt)))

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