| [ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
| [ < Fonctions pour markups ] | [ Up: Fonctions pour markups ] | [ Fonctionnement interne des markups > ] |
2.5.1 Construction d’un markup en Scheme
Les expressions markup sont représentées en Scheme de manière
interne par la macro markup :
(markup expression)
La commande \displayScheme permet d’obtenir la représentation en
Scheme d’une expression markup :
\displayScheme
\markup {
\column {
\line { \bold \italic "hello" \raise #0.4 "world" }
\larger \line { foo bar baz }
}
}
Compiler ce code renverra en console les lignes suivantes :
(markup
#:line
(#:column
(#:line
(#:bold (#:italic "hello") #:raise 0.4 "world")
#:larger
(#:line ("foo" "bar" "baz")))))
L’impression du markup sera suspendue dès lors qu’apparaîtra un
‘\void \displayScheme markup’. Tout comme pour la
commande \displayMusic, le résultat de \displayScheme peut
être sauvegardé dans un fichier séparé. Voir à ce sujet
Affichage d’expressions musicales.
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\variablevariable\center-column { … }#:center-column ( … )chaîne"chaîne"#argument-Schemeargument-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-column 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-column-markup ou
make-column-markup :
(markup (make-line-markup (fonction-qui-retourne-des-markups)))
| [ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
| [ < Fonctions pour markups ] | [ Up: Fonctions pour markups ] | [ Fonctionnement interne des markups > ] |