[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Cadenas de listas-A ] | [ Up: Scheme dentro de LilyPond ] | [ Representación interna de la música > ] |
A.2.8 El modelo de caja de LilyPond
El modelo caja ‘clásico’ para el texto (como el que se utiliza, por ejemplo, en TeX), incluye las tres dimensiones ancho, alto, and profundo: los glifos se ubican sobre una línea de base horizontal; la altura de un glifo es el tamaño vertical por encima de esta línea, la profundidad es el tamaño por debajo de esta línea, y el ancho comprende el tamaño horizontal del glifo. LilyPond añade una cuarta dimensión, el breapth,1 para extender el tamaño horizonal por la parte izquierda del ‘punto de referencia’ del glifo, denotado con ‘(0, 0)’ en la imagen que aparece a continuación. La principal razón de ser de esta extensión es que muchos glifos como los calderones son horizontalmente simétricos (y también están unidos de forma simétrica centrados sobre una cabeza de nota), y el mejor punto de referencia para tales glifos es, por tanto, el punto medio horizontal. Otros glifos como la alteración accidental de un cuarto de tono, que se muestra a la izquierda en la imagen, pueden tener también una cantidad considerable de ‘breapth’.
Como se muestra en el glifo de ‘custos’ a la derecha de la imagen, la caja que se define para un glifo puede ser muy distinta de lo que realmente se imprime: LilyPond coloca el lado derecho del glifo del custos al final del pentagrama, haciendo que la larga línea de extensión se salga por el lado derecho, metiéndose dentro del margen.
Este modelo de caja no se usa solo para los glifos musicales de
LilyPond sino también para los elementos de marcado de cualquier
tipo. Tanto las dimensiones horizontales como las verticales se
especifican con un ‘extent’ o ámbito; usando la notación de
Scheme, el glifo de la izquierda en la imagen anterior tiene unas
dimensiones horizontales de #'(-9 . 26)
y unas dimensiones
verticales de #'(-10 . 29)
.
LilyPond también utiliza algunas extensiones sobre el modelo de caja para cubrir casos especiales.
- Si no queremos que una caja tome parte en el algoritmo de
espaciado musical de LilyPond a lo largo de un determinado eje,
tenemos que establecer las dimensiones de este eje al valor (que
en otro contexto no tiene ningún sentido)
#'(+inf.0 . -inf.0)
(desde infinito positivo hasta infinito negativo), también disponible como el símboloempty-interval
. - Dentro de los elementos de marcado, el espaciado (que
normalmente causa algún movimiento horizontal o vertical del
siguiente objeto del marcado) también está configurado
internamente como una caja: las dimensiones a lo largo del eje
ortogonal están fijadas al valor
empty-interval
como un marcador, y un valor de espaciado s está representado como las dimensiones#'(0 . s)
. A diferencia de las cajas ‘normales’, el espaciado también puede ser negativo: por ejemplo, las dimensiones horizontales de la instrucción de marcado\hspace #-4
son#'(0 . -4)
.
Footnotes
(1)
Este nombre artificial se derivó de la palaba inglesa ‘breadth’, que siginifica aproximadamente lo mismo que ‘width’ (ancho).
[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Cadenas de listas-A ] | [ Up: Scheme dentro de LilyPond ] | [ Representación interna de la música > ] |