Propiedades de espaciado dentro de los sistemas
Los mecanismos de espaciado vertical dentro del sistema están
controlados por dos conjuntos de propiedades de grob. El primer
conjunto está asociado con el grob VerticalAxisGroup
, que
se crea por parte de todas las pautas y líneas que no son pautas.
El segundo conjunto está asociado con el grob StaffGrouper
,
que puede crearse por parte de los grupos de pentagramas, pero
solamente si se le llama explícitamente. Estas propiedades se
describen individualmente al final de la presente sección.
Los nombres de estas propiedades (excepto para
staff-affinity
) siguen el formato
elemento1-elemento2-spacing
, donde
elemento1
y elemento2
son los elementos
que se van a espaciar. Observe que elemento2
no está
necesariamente por debajo de elemento1
; por ejemplo,
nonstaff-relatedstaff-spacing
mide hacia arriba a partir de
la línea del tipo no-pauta si staff-affinity
es UP
.
Cada distancia se mide entre los puntos de referencia de
los dos elementos. El punto de referencia para un
pentagrama y otro tipo de pauta es el centro vertical de su
StaffSymbol
(es decir, la línea central si
line-count
es un número impar; el espacio central si
line-count
es par). Los puntos de referencia para las
líneas individuales que no son pautas aparecen en la tabla
siguiente:
Línea que no es una pauta | Punto de referencia |
---|---|
ChordNames | línea de base |
NoteNames | línea de base |
Lyrics | línea de base |
Dynamics | la mitad de la altura de la ‘m’ |
FiguredBass | punto más alto |
FretBoards | línea superior |
En la siguiente imagen, las líneas horizontales indican las posiciones de estos puntos de referencia:
Cada una de las propiedades de grob del espaciado vertical
(excepto staff-affinity
) usa la misma estructura de lista-A
que las variables de espaciado del bloque \paper
que se han
estudiado en
Variables de espaciado de \paper
verticales flexibles.
En Modificación de las listas-A se estudian métodos
específicos para la modificación de las listas-A. Las propiedades
de los grobs deben ajustarse con un \override
dentro de un
bloque \score
o \layout
, y no dentro de un bloque
\paper
.
El ejemplo que sigue muestra las dos maneras en que pueden modificarse estas listas-A. La primera declaración actualiza un par clave-valor de forma individual, y la segunda redefine la propiedad completamente:
\new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 } { … } \new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 10) (minimum-distance . 9) (padding . 1) (stretchability . 10)) } { … }
Para modificar globalmente cualquiera de los ajustes de espaciado,
póngalos dentro del bloque \layout
:
\layout { \context { \Staff \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 } }
Los ajustes estándar para las propiedades de grob del espaciado vertical están relacionadas en VerticalAxisGroup y en StaffGrouper. Las sobreescrituras predeterminadas para los tipos específicos de líneas que no son pautas están relacionadas en las descripciones de contexto correspondientes en Contexts.
Propiedades del grob VerticalAxisGroup
Las propiedades de VerticalAxisGroup
se suelen ajustar con
una instrucción \override
en el nivel de Staff
(o
equivalente).
staff-staff-spacing
Se utiliza para determinar la distancia entre la pauta actual y la pauta que está justo por debajo de ella dentro del mismo sistema, incluso si hay más líneas que no son pautas (tales como
Lyrics
) entre las dos pautas. No se aplica a la pauta inferior de un sistema.Inicialmente, el valor de espaciado
staff-staff-spacing
de un grupoVerticalAxisGroup
es una función de Scheme que aplica las propiedades delStaffGrouper
si la pauta forma parte de un grupo, o eldefault-staff-staff-spacing
de la pauta en caso contrario. Esto hace posible que las pautas estén espaciadas de forma diferente cuando están agrupadas. Para conseguir un espaciado regular sin importar el agrupamiento, esta función se puede sustituir por una lista-A de espaciado flexible, utilizando la forma de sobreescritura de redefinición completa que se ha mostrado más arriba. Si solo se especifican algunos valores en una operación de sobreescritura, los valores que faltan se toman dedefault-staff-staff-spacing
(si tiene valores para ellos).default-staff-staff-spacing
Una lista-A de espaciado flexible que define el espacio
staff-staff-spacing
que se usará para las pautas sin agrupar, a no ser que se haya sobreescrito explícitamentestaff-staff-spacing
con una instrucción\override
.staff-affinity
Dirección de la pauta que utilizar para el espaciado de la línea actual que no es pauta. Se puede elegir entre
UP
(arriba),DOWN
(abajo) yCENTER
(centro). Si esCENTER
, la línea del tipo no-pauta se coloca equidistante entre las dos pautas contiguas a ambos lados, a no ser que lo impidan colisiones u otras restricciones de espaciado. Las líneas del tipo no-pauta adyacentes han de llevar valores destaff-affinity
no crecientes desde la parte superior hasta la inferior, p.ej. una línea del tipo no-pauta establecida aUP
no debería seguir inmediatamente a otra que esté establecida aDOWN
. Las líneas del tipo no-pauta en la parte superior de un sistema deben usarDOWN
; las de la parte inferior deben usarUP
. El ajuste destaff-affinity
para una pauta hace que se le trate como una línea que no es una pauta. El establecimiento destaff-affinity
a#f
para una línea que no es una pauta hace que se trate como una pauta. Establecerstaff-affinity
aUP
,CENTER
, oDOWN
hace que el pentagrama resulte espaciado como si fuera una línea que no es una pauta.nonstaff-relatedstaff-spacing
Distancia entre la línea del tipo no-pauta actual y la pauta más próxima en la dirección de
staff-affinity
, si no hay ninguna línea que no sea una pauta entre las dos, ystaff-affinity
esUP
oDOWN
. Sistaff-affinity
esCENTER
, entonces se usanonstaff-relatedstaff-spacing
para las pautas más próximas a los dos lados, incluso aunque aparezcan otras líneas del tipo no-pauta entre la pauta actual y una de las otras. Esto significa que la colocación de una línea que no es una pauta depende tanto de las pautas que la rodean como de las líneas que no son pautas y que la rodean. Establecer la ampliabilidadstretchability
de uno de estos tipos de espaciado a un valor más pequeño provoca que este espaciado domine. El establecimiento destretchability
a un valor mayor hace que dicho espaciado tenga un menor efecto.nonstaff-nonstaff-spacing
Distancia entre la línea actual del tipo no-pauta y la siguiente línea del tipo no-pauta en la dirección de
staff-affinity
, si las dos están al mismo lado de la pauta relacionada, ystaff-affinity
esUP
oDOWN
.nonstaff-unrelatedstaff-spacing
Distancia entre la línea actual del tipo no-pauta y la pauta en la dirección opuesta de
staff-affinity
, si no hay ninguna otra línea del tipo no-pauta entre las dos, ystaff-affinity
esUP
oDOWN
. Se puede usar, por ejemplo, para requerir una cantidad de relleno mínima entre una línea deLyrics
y la pauta a la que no pertenece.
Propiedades del grob StaffGrouper
Las propiedades de StaffGrouper
se suelen ajustar con una
instrucción \override
en el nivel de StaffGroup
(o
equivalente).
staff-staff-spacing
Distancia entre pautas consecutivas dentro del grupo de pautas actual. La propiedad
staff-staff-spacing
del grobVerticalAxisGroup
de una pauta individual se puede sobreescribir con distintos ajustes de espaciado para dicha pauta.staffgroup-staff-spacing
Distancia entre la última pauta del grupo en curso y la pauta que está justo por debajo de ella dentro del mismo sistema, incluso si existen una o más líneas que no son pautas (tales como
Lyrics
) entre las dos pautas. No se aplica al pentagrama o pauta inferior de un sistema. La propiedadstaff-staff-spacing
del grobVerticalAxisGroup
de una pauta individual se puede sobreescribir con distintos ajustes de espaciado para dicha pauta.
Véase también
Referencia de la notación:
Variables de espaciado de \paper
verticales flexibles,
Modificación de las listas-A.
Archivos de inicio: ly/engraver-init.ly, scm/define-grobs.scm.
Referencia de funcionamiento interno: Contexts, VerticalAxisGroup, StaffGrouper.