4.2.1 Le bloc \layout

Alors que le bloc \paper définit le formatage des pages pour l’intégralité du document, le bloc \layout gère la mise en forme spécifique à la partition. La mise en forme de la musique peut concerner toutes les partitions d’un même ouvrage, auquel cas un bloc \layout indépendant se placera en tête de fichier. Dans le cas où la mise en forme concerne une partition en particulier, un bloc \layout se placera au sein du bloc \score en question. Sont susceptibles d’apparaître dans un bloc \layout :

La fonction layout-set-staff-size fait l’objet de la rubrique suivante, Définition de la taille de portée. La modification des contextes est abordée dans d’autres chapitres – voir Modification des greffons de contexte et Modification des réglages par défaut d’un contexte.

Les variables du bloc \paper que l’on peut retrouver dans un bloc \layout sont :

Voici un exemple de bloc \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
  }
}

Il est tout à fait possible que plusieurs blocs \layout cohabitent en tant qu’expressions de niveau supérieur. Ceci se révèle particulièrement utile lorsque différents réglages sont stockés dans des fichiers séparés qui sont inclus au besoin. Lorsqu’un bloc \layout est évalué, une copie de la configuration du \layout actuel est réalisée en interne, augmentée des aménagements apportés. Bien qu’on puisse considérer que le contenu des différents blocs \layout se cumule, c’est la dernière adaptation qui aura préséance en cas de situation conflictuelle – cas typique d’une même propriété modifiée dans différents blocs.

Par exemple, placer le bloc suivant

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

après celui de l’exemple précédent aura pour effet de cumuler les adaptations de padding et color pour l’objet TextScript, mais la dernière adaptation apportée à la propriété thickness de Glissando remplace, ou masque, celle précédemment établie.

Les blocs \layout peuvent faire l’objet de variables, aux fins de les utiliser ultérieurement. Ceci requiert toutefois une attention particulière dans la mesure où cette manière de procéder n’est pas équivalente à une définition complète et globale.

Lorsque nous définissons la variable suivante,

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

qui contient une configuration de \layout avec l’adaptation NoteHead.font-size, cette combinaison n’est pas enregistrée en tant que configuration courante. Notez bien que la « configuration courante » est lue lorsque la variable est définie, non lorsqu’elle est utilisée ; par voie de conséquence, le contenu de la variable dépend de l’endroit où elle se trouve dans le code source.

Notre variable peut alors être utilisée au sein d’un autre bloc \layout, comme par exemple :

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

Un bloc \layout qui contient une variable comme ci-dessus ne recopie pas la configuration actuelle ; il utilise en fait le contenu de layoutVariable en tant que configuration de base pour les adaptations ultérieures, en conséquence de quoi toute modification intervenant entre la définition et l’utilisation de la variable sera perdue.

Si layoutVariable est définie, ou rapatriée par un \indude, juste avant d’être utilisée, son contenu devient la configuration actuelle augmentée des adaptations que la variable contient. Considérant l’exemple d’utilisation de layoutVariable ci-dessus, le bloc \layout final contiendra donc :

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

ainsi que les adaptations de indent et StaffGrouper.

Cependant, si la variable avait été définie bien avant le premier bloc \layout, la configuration actuelle ne contiendrait que

  NoteHead.font-size= #4 % (écrit dans la définition de la variable)
  NoteHead.color = #red % (ajouté après l'utilisation de la variable)

Une gestion attentive des variables de \layout se révèle être un outil précieux dans la mise en forme des sources et le retour à une configuration donnée.

Voir aussi

Manuel de notation : Modification des réglages par défaut d’un contexte.

Morceaux choisis : Espacements.


LilyPond — Manuel de notation v2.23.82 (branche de développement).