B.5.1 Construcció d’elements de marcatge a l’Scheme
Les expressions de marcatge es representen internament a l’Scheme
usant el macro markup
:
(markup expr)
Per veure una expressió de marcatge en la seva forma de l’Scheme,
utilitzeu l’ordre \displayScheme
:
\displayScheme \markup { \column { \line { \bold \italic "hola" \raise #0.4 "món" } \larger \line { pep pepet pepepet } } }
La compilació del codi anterior envia a la consola el següent:
(markup #:line (#:column (#:line (#:bold (#:italic "hola") #:raise 0.4 "món") #:larger (#:line ("pep" "pepet" "pepepet")))))
Per evitar que el marcatge s’imprimeixi en la pàgina, useu
‘\void \displayScheme marcatge’. També, com passa
amb l’ordre \displayMusic
, la sortida de
\displayScheme
es pot desar en un fitxer extern.
Vegeu Presentación de las expresiones musicales.
Aquest exemple mostra les principals regles de traducció entre la
sintaxi del marcatge normal del LilyPond i la sintaxi del marcatge
de l’Scheme. La utilització de #{ … #}
per
escriure en la sintaxi del Lilypond serà amb freqüència el més
convenient, però explicarem com fer servir la macro markup
per obtenir una solució sols amb l’Scheme.
LilyPond Scheme \markup marcatge1
(markup marcatge1)
\markup { marcatge1 marcatge2 … }
(markup marcatge1 marcatge2 … )
\ordre
#:ordre
\variable
variable
\center-column { … }
#:center-column ( … )
cadena
"cadena"
#argument-de-scheme
argument-de-scheme
Tot el llenguatge de l’Scheme està accessible dins del macro
markup
. Per exemple, podem usar crides a funcions dins de
markup
per així manipular cadenes de caràcters. Això és
útil si s’estan definint ordres de marcatge noves (vegeu
Definició d’una ordre nova de marcatge).
Advertiments i problemes coneguts
L’argument markup-list que dóna ordres com #:line
,
#:center
i #:column
no pot ser una variable ni el
resultat d’una crida a una funció.
(markup #:line (funció-que-retorna-marcatges))
no és vàlid. Cal fer servir les funcions
make-line-markup
, make-center-markup
o
make-column-markup
en el seu lloc:
(markup (make-line-markup (funció-que-retorna-marcatges)))