Referencia de la notación de GNU LilyPond: 4.4.1 Espaciado vertical flexible dentro de los sistemas

### 4.4.1 Espaciado vertical flexible dentro de los sistemas

Tres mecanismos distintos controlan el espaciado vertical flexible dentro de los sistemas, uno por cada una de las categorías siguientes:

- pautas sin agrupar,
- pautas agrupadas (pautas dentro de un grupo de pentagramas como `ChoirStaff`, etc.), y
- líneas que no son pautas (como `Lyrics`, `ChordNames`, etc.).

La altura de cada sistema se determina en dos fases. Primero, todos los pentagramas se disponen según la cantidad de espacio vacío disponible. Después, las líneas que no son pautas se distribuyen entre las pautas.

Observe que los mecanismos de espaciado estudiados en esta sección solamente controlan el espaciado vertical de las pautas y líneas que no son pautas dentro de los sistemas individuales. El espaciado vertical entre distintos sistemas, partituras, marcados y márgenes se controla mediante variables de `\paper` que se estudian en Variables de espaciado de `\paper` verticales flexibles.

#### 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 grupo `VerticalAxisGroup` es una función de Scheme que aplica las propiedades del `StaffGrouper` si la pauta forma parte de un grupo, o el `default-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 de `default-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ícitamente `staff-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) y `CENTER` (centro). Si es `CENTER`, 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 de `staff-affinity` no crecientes desde la parte superior hasta la inferior, p.ej. una línea del tipo no-pauta establecida a `UP` no debería seguir inmediatamente a otra que esté establecida a `DOWN`. Las líneas del tipo no-pauta en la parte superior de un sistema deben usar `DOWN`; las de la parte inferior deben usar `UP`. El ajuste de `staff-affinity` para una pauta hace que se le trate como una línea que no es una pauta. El establecimiento de `staff-affinity` a `#f` para una línea que no es una pauta hace que se trate como una pauta. Establecer `staff-affinity` a `UP`, `CENTER`, o `DOWN` 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, y `staff-affinity` es `UP` o `DOWN`. Si `staff-affinity` es `CENTER`, entonces se usa `nonstaff-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 ampliabilidad `stretchability` de uno de estos tipos de espaciado a un valor más pequeño provoca que este espaciado domine. El establecimiento de `stretchability` 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, y `staff-affinity` es `UP` o `DOWN`.

`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, y `staff-affinity` es `UP` o `DOWN`. Se puede usar, por ejemplo, para requerir una cantidad de relleno mínima entre una línea de `Lyrics` 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 grob `VerticalAxisGroup` 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 propiedad `staff-staff-spacing` del grob `VerticalAxisGroup` 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.

#### Espaciado de pautas no agrupadas

Las pautas, tales como los pentagramas (`Staff`), pautas de percusión (`DrumStaff`) o de tablatura (`TabStaff`), etc. son contextos que pueden contener uno o más contextos de voz, pero no pueden contener otras pautas.

Las siguientes propiedades afectan al espaciado de las pautas no agrupadas:

- Propiedades de `VerticalAxisGroup`:
  - `default-staff-staff-spacing`
  - `staff-staff-spacing`

Estas propiedades de grob se describen individualmente más arriba; véase Propiedades de espaciado dentro de los sistemas.

Están implicadas ciertas propiedades adicionales para las pautas que son parte de un grupo; véase Espaciado de pautas agrupadas.

El ejemplo siguiente muestra cómo la propiedad `default-staff-staff-spacing` puede afectar al espaciado de pautas no agrupadas. Las mismas sobreescrituras aplicadas a `staff-staff-spacing` tendrían el mismo efecto, pero también se aplicaría en caso de que las pautas estuvieran combinadas en un grupo o grupos.

>     \layout {
>       \context {
>         \Staff
>         \override VerticalAxisGroup.default-staff-staff-spacing =
>           #'((basic-distance . 8)
>              (minimum-distance . 7)
>              (padding . 1))
>       }
>     }

>     <<
>       % The very low note here needs more room than 'basic-distance
>       % can provide, so the distance between this staff and the next
>       % is determined by 'padding.
>       \new Staff { b,2 r | }

>       % Here, 'basic-distance provides enough room, and there is no
>       % need to compress the space (towards 'minimum-distance) to make
>       % room for anything else on the page, so the distance between
>       % this staff and the next is determined by 'basic-distance.
>       \new Staff { \clef bass g2 r | }

>       % By setting 'padding to a negative value, staves can be made to
>       % collide.  The lowest acceptable value for 'basic-distance is 0.
>       \new Staff \with {
>         \override VerticalAxisGroup.default-staff-staff-spacing =
>           #'((basic-distance . 3.5)
>              (padding . -10))
>       } { \clef bass g2 r | }
>       \new Staff { \clef bass g2 r | }
>     >>

#### Véase también

Archivos de inicio: ‘`scm/define-grobs.scm`’.

Fragmentos de código: Spacing.

Referencia de funcionamiento interno: VerticalAxisGroup.

#### Espaciado de pautas agrupadas

En partituras grandes como las orquestales, es común colocar los pentagramas en grupos. El espacio entre los grupos suele ser mayor que el espacio que hay entre los pentagramas dentro del mismo grupo.

Los grupos de pautas, Staff-groups (tales como `StaffGroup`, `ChoirStaff`, etc.) son contextos que pueden contener al mismo tiempo uno o más pentagramas o pautas.

Las siguientes propiedades afectan al espaciado de las pautas dentro de los grupos:

- Propiedades de `VerticalAxisGroup`:
  - `staff-staff-spacing`
- Propiedades de `StaffGrouper`:
  - `staff-staff-spacing`
  - `staffgroup-staff-spacing`

Estas propiedades de grob se describen individualmente más arriba; véase Propiedades de espaciado dentro de los sistemas.

El ejemplo siguiente muestra cómo pueden afectar las propiedades del grob `StaffGrouper` al espaciado de las pautas agrupadas:

>     \layout {
>       \context {
>         \Score
>         \override StaffGrouper.staff-staff-spacing.padding = #0
>         \override StaffGrouper.staff-staff-spacing.basic-distance = #1
>       }
>     }

>     <<
>       \new PianoStaff \with {
>         \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20
>       } <<
>         \new Staff { c'1 }
>         \new Staff { c'1 }
>       >>

>       \new StaffGroup <<
>         \new Staff { c'1 }
>         \new Staff { c'1 }
>       >>
>     >>

#### Véase también

Archivos de inicio: ‘`scm/define-grobs.scm`’.

Fragmentos de código: Spacing.

Referencia de funcionamiento interno: VerticalAxisGroup, StaffGrouper.

#### Espaciado de las líneas que no son pautas

Las Líneas que no son pautas (tales como `Lyrics`, `ChordNames`, etc.) son contextos cuyos objetos de presentación se imprimen como pentagramas (es decir, en líneas horizontales dentro de los sistemas). Específicamente, las líneas que no son pautas son contextos del tipo no-pauta que contienen el grabador Axis_group_engraver.

Las siguientes propiedades afectan al espaciado de las líneas que no son pautas:

- Propiedades de `VerticalAxisGroup`:
  - `staff-affinity`
  - `nonstaff-relatedstaff-spacing`
  - `nonstaff-nonstaff-spacing`
  - `nonstaff-unrelatedstaff-spacing`

Estas propiedades de grob se describen individualmente más arriba; véase Propiedades de espaciado dentro de los sistemas.

El ejemplo siguiente muestra cómo la propiedad `nonstaff-nonstaff-spacing` puede afectar el espaciado de líneas consecutivas que no son pautas. Aquí, mediante el establecimiento de la clave de ampliabilidad `stretchability` a un valor muy grande, la línea de letra es capaz de ampliarse mucho más de lo que es usual:

>     \layout {
>       \context {
>         \Lyrics
>         \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000
>       }
>     }

>     \new StaffGroup
>     <<
>       \new Staff \with {
>         \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30))
>       } { c'1 }
>       \new Lyrics \with {
>         \override VerticalAxisGroup.staff-affinity = #UP
>       } \lyricmode { up }
>       \new Lyrics \with {
>         \override VerticalAxisGroup.staff-affinity = #CENTER
>       } \lyricmode { center }
>       \new Lyrics \with {
>         \override VerticalAxisGroup.staff-affinity = #DOWN
>       } \lyricmode { down }
>       \new Staff { c'1 }
>     >>

#### Véase también

Archivos de inicio: ‘`ly/engraver-init.ly`’, ‘`scm/define-grobs.scm`’.

Fragmentos de código: Spacing.

Referencia de funcionamiento interno: Contexts, VerticalAxisGroup.

#### LilyPond — Referencia de la notación v2.22.2 (rama estable).