Extender LilyPond: B.2.1 Construcción de elementos de marcado en Scheme

### B.2.1 Construcción de elementos de 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 sintaxis 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 puede ser una variable ni 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, deutsch.

#### LilyPond — Extender