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.

Manual de referencia de la notación