GNU LilyPond – Manuel de notation: 3.2.2 Titrages personnalisés

### 3.2.2 Titrages personnalisés

#### Mise en forme personnalisée des champs de titrage

Toutes les commandes de mise en forme d’un `\markup` permettent de personnaliser le texte des entête, pied de page et éléments de titrage contenus dans un bloc `\header`.

>     \score {
>       \header {
>         piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
>         opus = \markup { \italic "BWV 846" }
>       }
>       { s1 }
>     }

#### Voir aussi

Manuel de notation : Mise en forme du texte.

#### Mise en forme personnalisée des titrages

L’utilisation de commandes `\markup` au sein d’un bloc `\header` permet de modifier aisément l’apparence du texte, mais n’influence en rien le positionnement précis des éléments de titrage. L’accès au positionnement des champs de titrage est géré par les deux variables suivantes, attachées au bloc `\paper` :

- `bookTitleMarkup`
- `scoreTitleMarkup`

Le positionnement des titres, avec les valeurs par défaut de ces variables `\markup`, est illustré à la rubrique Mise en forme par défaut des titrages subalternes.

Voici les réglages par défaut de `scoreTitleMarkup`, tels que définis dans le fichier ‘`ly/titling-init.ly`’ :

>     scoreTitleMarkup = \markup { \column {
>       \on-the-fly \print-all-headers { \bookTitleMarkup \hspace #1 }
>       \fill-line {
>         \fromproperty #'header:piece
>         \fromproperty #'header:opus
>       }
>     }
>     }

Ceci aura donc pour effet de positionner les champs `piece` et `opus` sur la même ligne, en opposition :

>     \score {
>       \header {
>         piece = "PRAELUDIUM I"
>         opus = "BWV 846"
>       }
>       { s1 }
>     }

Voici comment redéfinir le `scoreTitleMarkup` de telle sorte que le champ `piece`, dont nous modifions la taille et la graisse, se place au centre de cette ligne :

>     \book {
>       \paper {
>         indent = 0\mm
>         scoreTitleMarkup = \markup {
>           \fill-line {
>             \null
>             \fontsize #4 \bold \fromproperty #'header:piece
>             \fromproperty #'header:opus
>           }
>         }
>       }
>       \header { tagline = ##f }
>       \score {
>         \header {
>           piece = "PRAELUDIUM I"
>           opus = "BWV 846"
>         }
>         { s1 }
>       }
>     }

Les champs normalement absents du `\header` d’un bloc `\score` seront toutefois imprimés dès lors que vous aurez activé l’instruction `print-all-headers` au sein du bloc `\paper`. Le principal inconvénient de cette fonction réside dans le fait que les champs dévolus au titrage des parties devront être supprimés dans chacun des blocs `\score` de votre fichier source – voir Généralités en matière de titrages.

Afin d’éviter ce désagrément, ajoutez le champ que vous désirez voir apparaître à la définition de `scoreTitleMarkup`. Nous allons, dans l’exemple suivant, ajouter au `scoreTitleMarkup` le champ `composer`, normalement associé au `bookTitleMarkup` ; chaque `\score` pourra alors mentionner un compositeur différent.

>     \book {
>       \paper {
>         indent = 0\mm
>         scoreTitleMarkup = \markup {
>           \fill-line {
>             \null
>             \fontsize #4 \bold \fromproperty #'header:piece
>             \fromproperty #'header:composer
>           }
>         }
>       }
>       \header { tagline = ##f }
>       \score {
>         \header {
>           piece = "MENUET"
>           composer = "Christian Petzold"
>         }
>         { s1 }
>       }
>       \score {
>         \header {
>           piece = "RONDEAU"
>           composer = "François Couperin"
>         }
>         { s1 }
>       }
>     }

Rien ne vous empêche de créer votre propre champ personnalisé, puis d’y faire référence dans la définition du markup.

>     \book {
>       \paper {
>         indent = 0\mm
>         scoreTitleMarkup = \markup {
>           \fill-line {
>             \null
>             \override #`(direction . ,UP)
>             \dir-column {
>               \center-align \fontsize #-1 \bold
>                 \fromproperty #'header:mycustomtext %% User-defined field
>               \center-align \fontsize #4 \bold
>                 \fromproperty #'header:piece
>             }
>             \fromproperty #'header:opus
>           }
>         }
>       }
>       \header { tagline = ##f }
>       \score {
>         \header {
>           piece = "FUGA I"
>           mycustomtext = "A 4 VOCI" %% User-defined field
>           opus = "BWV 846"
>         }
>         { s1 }
>       }
>     }

#### Voir aussi

Manuel de notation : Généralités en matière de titrages.

#### Mise en forme personnalisée des entête et pied de page

L’utilisation de commandes `\markup` au sein d’un bloc `\header` permet de modifier aisément l’apparence du texte, mais n’influence en rien le positionnement précis des entête et pied de page. L’accès au positionnement des champs concernés est géré par les quatre variables suivantes, attachées au bloc `\paper` :

- `oddHeaderMarkup`
- `evenHeaderMarkup`
- `oddFooterMarkup`
- `evenFooterMarkup`

L’instruction `\on-the-fly` au sein d’un `\markup` permet d’ajouter, lorsque certaines conditions sont respectées, des éléments au texte des entête et pied de page définis dans le bloc `\paper`. En voici la syntaxe :

>     variable = \markup {
>       …
>       \on-the-fly \procédure markup
>       …
>     }

La procédure est appelée à chaque fois que la commande `\markup` où elle apparaît est évaluée. La procédure effectuera un test de conformité particulier et interprètera, autrement dit imprimera l’argument markup si et seulement si cette condition est remplie.

LilyPond dispose d’ores et déjà d’un certain nombre de procédures :

> Nom de la procédure | Condition testée
> --- | ---
> print-page-number-check-first | il faut imprimer ce numéro de page.
> create-page-number-stencil | print-page-numbers est vrai.
> print-all-headers | print-all-headers est vrai.
> first-page | c’est la première page du book.
> not-first-page | ce n’est pas la première page du book.
> (on-page nombre) | numéro de page = nombre
> last-page | c’est la dernière page du book.
> part-first-page | c’est la première page de la partie.
> not-part-first-page | ce n’est pas la première page de la partie.
> part-last-page | c’est la dernière page de la partie.
> not-single-page | cette partie fait plus d’une page.

L’exemple suivant illustre la manière de centrer son numéro au bas de chaque page. Il nous faut tout d’abord annuler les définitions de `oddHeaderMarkup` et `evenHeaderMarkup` à l’aide d’un markup `\null`. Nous redéfinissons ensuite `oddFooterMarkup` pour qu’il contienne le numéro de page, centré. Enfin, nous appliquons le même paramétrage au `\oddFooterMarkup`.

>     \book {
>       \paper {
>         print-page-number = ##t
>         print-first-page-number = ##t
>         oddHeaderMarkup = \markup \null
>         evenHeaderMarkup = \markup \null
>         oddFooterMarkup = \markup {
>           \fill-line {
>             \on-the-fly \print-page-number-check-first
>             \fromproperty #'page:page-number-string
>           }
>         }
>         evenFooterMarkup = \oddFooterMarkup
>       }
>       \score {
>         \new Staff { s1 \break s1 \break s1 }
>       }
>     }

Plusieurs conditions `\on-the-fly` mentionnées l’une à la suite de l’autre se cumulent. Ainsi, par exemple,

>       \on-the-fly \first-page
>       \on-the-fly \last-page
>       { \markup … \fromproperty #'header: … }

teste si la sortie tient sur une page unique.

#### Voir aussi

Manuel de notation : Généralités en matière de titrages, Mise en forme par défaut des titrages subalternes.

fichiers d’initialisation : ‘`../ly/titling-init.ly`’.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).