[ << 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
\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-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 > ] |