Extender LilyPond: B.5.4 Definición de nuevas instrucciones de lista de marcado

### B.5.4 Definición de nuevas instrucciones de lista de marcado

Las instrucciones de listas de marcado se definen con el macro de Scheme `define-markup-list-command`, que es similar al macro `define-markup-command` descrito en Definición de una instrucción de marcado nueva, excepto que donde éste devuelve un sello único, aquél devuelve una lista de sellos.

En el siguiente ejemplo se define una instrucción de lista de marcado `\paragraph`, que devuelve una lista de líneas justificadas, estando la primera de ellas sangrada. La anchura del sangrado se toma del argumento `props`.

>     #(define-markup-list-command (paragraph layout props args) (markup-list?)
>        #:properties ((par-indent 2))
>        (interpret-markup-list layout props
>          #{\markuplist \justified-lines { \hspace #par-indent #args } #}))

La versión que usa solamente Scheme es más compleja:

>     #(define-markup-list-command (paragraph layout props args) (markup-list?)
>        #:properties ((par-indent 2))
>        (interpret-markup-list layout props
>          (make-justified-lines-markup-list (cons (make-hspace-markup par-indent)
>                                                  args))))

Aparte de los argumentos usuales `layout` y `props`, la instrucción de lista de marcados `paragraph` toma un argumento de lista de marcados, llamado `args`. El predicado para listas de marcados es `markup-list?`.

En primer lugar, la función toma el ancho del sangrado, una propiedad llamada aquí `par-indent`, de la lista de propiedades `props`. Si no se encuentra la propiedad, el valor predeterminado es `2`. Después, se hace una lista de líneas justificadas usando la instrucción incorporada de lista de marcados `\justified-lines`, que está relacionada con la función `make-justified-lines-markup-list`. Se añade un espacio horizontal al principio usando `\hspace` (o la función `make-hspace-markup`). Finalmente, la lista de marcados se interpreta usando la función `interpret-markup-list`.

Esta nueva instrucción de lista de marcados se puede usar como sigue:

>     \markuplist {
>       \paragraph {
>         El arte de la tipografía musical se llama  \italic {grabado (en plancha).}
>         El término deriva del proceso tradicional de impresión de música.
>         hace sólo algunas décadas, las partituras se hacían cortando y estampando
>         la música en una plancha de zinc o lata en una imagen invertida.
>       }
>       \override-lines #'(par-indent . 4) \paragraph {
>         La plancha se tenía que entintar, y las depresiones causadas por los cortes
>         y estampados retienen la tinta.  Se formaba una imagen presionando el papel
>         contra la plancha.  El estampado y cortado se hacía completamente
>         a mano.
>       }
>     }

#### LilyPond — Extender v2.24.4 (rama estable).