2.5.1 Construction d’un markup en Scheme
La macro markup
construit en Scheme des expressions markup
tout en disposant d’une syntaxe proche de celle de LilyPond. Par exemple,
(markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world") #:larger #:line ("foo" "bar" "baz")))
est équivalent à
#{ \markup \column { \line { \bold \italic "hello" \raise #0.4 "world" } \larger \line { foo bar baz } } #}
Vous pouvez constater les principales règles de traduction entre les
syntaxes respectives de LilyPond et de Scheme en matière de
markup. Bien que le passage en syntaxe LilyPond grâce à
#{ … #}
apporte de la souplesse, nous allons voir comment
utiliser la macro markup
en Scheme exclusivement.
LilyPond
Scheme
\markup markup1
(markup markup1)
\markup { markup1 markup2 ... }
(markup markup1 markup2 ... )
\commande-markup
#:commande-markup
\variable
variable
\center-column { ... }
#:center-column ( ... )
chaîne
"chaîne"
#argument-scheme
argument-scheme
L’intégralité du langage Scheme est accessible à l’intérieur même de la
macro markup
. Vous pouvez ainsi appeler des fonctions à partir
de markup
pour manipuler des chaînes de caractères, ce qui est
particulièrement pratique lorsque vous créez votre propre commande de
markup – voir
Définition d’une nouvelle commande de markup.
Problèmes connus et avertissements
L’argument markup-list des commandes #:line
,
#:center
ou #:column
ne saurait être une variable ni le
résultat de l’appel à une fonction.
(markup #:line (fonction-qui-retourne-des-markups)) |
n’est pas valide. Il vaut mieux, en pareil cas, utiliser les fonctions
make-line-markup
, make-center-markup
ou
make-column-markup
:
(markup (make-line-markup (fonction-qui-retourne-des-markups))) |
Autres langues : English, deutsch, español.
About automatic language selection.