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 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:

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.


Referencia de la notación de GNU LilyPond v2.25.21 (rama de desarrollo).