Referencia de la notación de GNU LilyPond: 4.2.1 El bloque \layout

### 4.2.1 El bloque `\layout`

Así como el bloque `\paper` contiene ajustes relativos al formateo de la página para todo el documento, el bloque `\layout` contiene ajustes para la disposición específica de las partituras. Para fijar las opciones de disposición de partituras de forma global, escríbalas en un bloque `\layout` del nivel jerárquico superior. Para fijar opciones de disposición para una partitura individual escríbalas dentro de un bloque `\layout` dentro del bloque `\score`, después de la música. Entre los ajustes que pueden aparecer en un bloque `\layout` se encuentran los siguientes:

- la función de Scheme `layout-set-staff-size`,
- las modificaciones de contexto de los bloques `\context`, y
- las variables de `\paper` que afectan a la disposición de la partitura.

La función `layout-set-staff-size` se estudia en la sección siguiente, Establecer el tamaño del pentagrama. Las modificaciones de contexto se estudian en un capítulo distinto; véase Modificar los complementos (plug-ins) de contexto y Cambiar los valores por omisión de los contextos.

Las variables de `\paper` que pueden aparecer dentro de un bloque `\layout`, y cuyos valores predeterminados se toman del bloque `paper`, son:

- `line-width`, `ragged-right` y `ragged-last` (véase Variables de `\paper` para la anchura y los márgenes)
- `indent` y `short-indent` (véase Variables de `\paper` para desplazamientos y sangrados)
- `system-count` (véase Variables de `\paper` para los saltos de línea)

He aquí un ejemplo de un bloque `\layout`:

>     \layout {
>       indent = 2\cm
>       \context {
>         \StaffGroup
>         \override StaffGrouper.staff-staff-spacing.basic-distance = #8
>       }
>       \context {
>         \Voice
>         \override TextScript.padding = #1
>         \override Glissando.thickness = #3
>       }
>     }

Se pueden escribir varios bloques `\layout` como expresiones del nivel superior. Esto puede ser útil, por ejemplo, si hay distintos ajustes almacenados en diversos archivos y se incluyen opcionalmente. Internamente, cuando se evalúa un bloque `\layout`, se hace una copia de la configuración de `\layout` actual, y después se aplican los cambios definidos en el bloque; el resultado se guarda como la nueva configuración actual. Desde el punto de vista del usuario, los bloques `\layout` se combinan, pero en situaciones de conflicto (cuando se cambia la misma propiedad en diferentes bloques) las definiciones más tardías toman precedencia.

Por ejemplo: si este bloque:

>     \layout {
>       \context {
>         \Voice
>         \override TextScript.color = #magenta
>         \override Glissando.thickness = #1.5
>       }
>     }

se coloca después del del ejemplo anterior, las sobreescrituras de `'padding` y de `'color` para `TextScript` se combinan, pero la última sobreescritura `'thickness` para `Glissando` sustituye (u oculta) a la anterior.

Los bloques `\layout` se pueden asignar a variables para una reutilización posterior, pero la forma en que esto funciona es ligera y significativamente diferente del hecho de escribirlas literalmente.

Si se define una variable de la siguiente manera:

>     variable_de_Layout = \layout {
>       \context {
>         \Voice
>         \override NoteHead.font-size = #4
>       }
>     }

guardará la configuración actual de `\layout` con la sobreescritura añadida de `NoteHead.font-size`, pero esta combinación no se guarda como la nueva configuración actual. Tenga en cuenta que la ‘configuración actual’ se lee cuando la variable se define y no cuando se usa, de manera que el contenido de la variable depende de su posición dentro del código fuente.

La variable se puede entonces usar dentro de otro bloque `\layout`, por ejemplo:

>     \layout {
>       \variable_de_layout
>       \context {
>         \Voice
>         \override NoteHead.color = #red
>       }
>     }

Un bloque `\layout` que contiene una variable, como en el ejemplo anterior, no copia la configuración actual, sino que en lugar de ello usa el contenido de `\variable_de_layout` como la configuración base para las adiciones posteriores. Esto significa que cualquier cambio definido entre la definición y el uso de la variable, se pierde.

Si la `variable_de_layout` se define (o se incluye con `\include`) inmediatamente antes de que se utilice, su contenido es sencillamente la configuración en curso más las sobreescrituras que se hayan definido dentro de él. Así pues, en el ejemplo anterior que muestra el uso de `\variable_de_layout` el último bloque `\layout` consistiría en:

>       TextScript.padding = #1
>       TextScript.color = #magenta
>       Glissando.thickness = #1.5
>       NoteHead.font-size = #4
>       NoteHead.color = #red

más las sobreescrituras de `indent` y de `StaffGrouper`.

Pero si la variable ya hubiera sido definida antes del primer bloque `\layout` la configuración actual contendría ahora solamente

>       NoteHead.font-size= #4 % (escrita en la definición de la variable)
>       NoteHead.color = #red % (añadida después del uso de la variable)

Si se planifica cuidadosamente, las variables de `\layout` pueden ser una herramienta valiosa para estructurar el diseño de la disposición de las fuentes, y también para reiniciar la configuración de `\layout` a un estado conocido.

#### Véase también

Referencia de la notación: Cambiar los valores por omisión de los contextos.

Fragmentos de código: Spacing.

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