6.4.1 Construcción del marcado en Scheme
El macro markup
construye expresiones de marcado en Scheme,
proporcionando una sintaxis similar a la de LilyPond. Por ejemplo:
(markup #:column (#:line (#:bold #:italic "hola" #:raise 0.4 "mundo") #:larger #:line ("fulano" "fulanito" "menganito")))
equivale a:
\markup \column { \line { \bold \italic "hola" \raise #0.4 "mundo" } \larger \line { fulano fulanito menganito } }
Este ejemplo muestra las principales reglas de traducción entre la sitaxis del marcado normal de LilyPond y la sintaxis del marcado de Scheme.
LilyPond
Scheme
\markup marcado1
(markup marcado1)
\markup { marcado1 marcado2 ... }
(markup marcado1 marcado2 ... )
\instruccion
#:instruccion
\variable
variable
\center-column { ... }
#:center-column ( ... )
cadena
"cadena"
#argumento-de-scheme
argumento-de-scheme
Todo el lenguaje Scheme está accesible dentro del macro markup
.
Por ejemplo, podemos usar llamadas a funciones dentro de markup
para así manipular cadenas de caracteres. Esto es útil si se están
definiendo instrucciones de marcado nuevas (véase Definición de una instrucción de marcado nueva).
Advertencias y problemas conocidos
El argumento markup-list de instrucciones como #:line
,
#:center
y #:column
no pueden se una variable o el
resultado de la llamada a una función.
(markup #:line (funcion-que-devuelve-marcados)) |
no es válido. Hay que usar las funciones make-line-markup
,
make-center-markup
o make-column-markup
en su lugar:
(markup (make-line-markup (funcion-que-devuelve-marcados))) |
Otros idiomas: English.