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.
De forma parecida, se usa interpret-markup-list
en lugar de
interpret-markup
para convertir una lista de marcado en 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. } }