GNU LilyPond – Manuel de notation: 1.8.2 Mise en forme du texte

### 1.8.2 Mise en forme du texte

Nous allons voir dans les lignes qui suivent la manière de mettre en forme du texte à l’aide de la syntaxe propre au mode `\markup`.

#### Introduction au formatage de texte

La commande `\markup` permet d’ajouter du texte et dispose de sa propre syntaxe que nous appellerons le « mode markup ». De tels blocs peuvent s’utiliser partout, comme indiqué dans Vue d’ensemble des objets textuels.

La syntaxe du mode markup n’est pas différente de celle des autres modes de LilyPond : une expression `\markup` est bornée par des accolades `{ … }`. Un mot unique sera considéré comme une expression minimale, et n’aura donc pas besoin d’être mis entre accolades.

Contrairement aux indications simples, du type "entre guillemets", les blocs `\markup` peuvent contenir des expressions imbriquées ou d’autres commandes markup, dès lors qu’elles sont précédées du caractère `\`. Ces commandes n’affecteront que la première expression qui les suit.

>     \relative {
>       a'1-\markup intenso
>       a2^\markup { poco \italic più forte  }
>       c e1
>       d2_\markup { \italic "string. assai" }
>       e
>       b1^\markup { \bold { molto \italic  agitato } }
>       c
>     }

Un bloc `\markup` peut contenir du texte entre guillemets. De telles chaînes seront considérées comme des expressions textuelles minimales ; à ce titre, toute commande de type markup ou tout caractère spécial – tel un `\` ou un `#` – sera imprimé littéralement et sans influer sur le formatage du texte. Il est de ce fait possible d’imprimer des guillemets informatiques `"` dès lors qu’ils sont précédés d’une oblique inverse.

>     \relative {
>       a'1^"\italic markup..."
>       a_\markup { \italic "... imprime des lettres en \"italique\" !" }
>       a a
>     }

Une liste de mots, pour pouvoir être traitée en tant qu’expression distincte, doit être bornée par des `"` ou précédée d’une commande. La manière de définir les expressions markup aura une influence sur la manière dont elles seront empilées, centrées ou alignées. Dans l’exemple qui suit, la deuxième expression `\markup` est traitée tout comme la première :

>     \relative c'' {
>       c1^\markup { \center-column { a bbb c } }
>       c1^\markup { \center-column { a { bbb c } } }
>       c1^\markup { \center-column { a \line { bbb c } } }
>       c1^\markup { \center-column { a "bbb c" } }
>     }

Vous pouvez stocker les étiquettes textuelles en tant que variables, et attacher ces identificateurs à des notes, comme ici :

>     allegro = \markup { \bold \large Allegro }

>     {
>       d''8.^\allegro
>       d'16 d'4 r2
>     }

Pour une liste des différentes commandes spécifiques au mode `\markup`, consultez l’annexe Commandes pour markup (en anglais).
Le fonctionnement interne de ces commandes et la façon d’en implémenter de nouveaux est abordée dans Fonctions pour markups.

#### Voir aussi

Manuel de notation : Commandes pour markup, Vue d’ensemble des objets textuels.

Manuel d’extension des fonctionnalités : Fonctions pour markups

Fichiers d’initialisation : ‘`scm/markup.scm`’.

Morceaux choisis : Texte.

#### Problèmes connus et avertissements

Les messages d’erreur de syntaxe en mode markup sont peu explicites.

#### Sélection de la fonte et de la taille

Le mode markup autorise des changements élémentaires de la fonte :

>     \relative {
>       d''1^\markup {
>         \bold { Più mosso }
>         \italic { non troppo \underline Vivo }
>       }
>       r2 r4 r8
>       d,_\markup { \italic quasi \smallCaps Tromba }
>       f1 d2 r
>     }

La taille des caractères se modifie, relativement à la taille globale des portées, de différentes manières.

Vous pouvez adopter l’une des tailles prédéfinies, comme ici :

>     \relative b' {
>       b1_\markup { \huge Sinfonia }
>       b1^\markup { \teeny da }
>       b1-\markup { \normalsize camera }
>     }

Vous pouvez la modifier relativement à sa valeur précédente :

>     \relative b' {
>       b1_\markup { \larger Sinfonia }
>       b1^\markup { \smaller da }
>       b1-\markup { \magnify #0.6  camera }
>     }

Vous pouvez l’augmenter ou la diminuer par rapport à la taille globale de portée :

>     \relative b' {
>       b1_\markup { \fontsize #-2 Sinfonia }
>       b1^\markup { \fontsize #1 da }
>       b1-\markup { \fontsize #3 camera }
>     }

Vous pouvez lui attribuer une valeur arbitraire quelle que soit la taille de portée globale :

>     \relative b' {
>       b1_\markup { \abs-fontsize #20 Sinfonia }
>       b1^\markup { \abs-fontsize #8 da }
>       b1-\markup { \abs-fontsize #14 camera }
>     }

Lorsque le texte comporte des espaces, mieux vaut le borner par des guillemets informatiques ; s’en suivra une meilleure adéquation entre la taille des espaces et celle des autres caractères :

>     \markup \fontsize #6 \bold { Sinfonia da camera }
>     \markup \fontsize #6 \bold { "Sinfonia da camera" }

Vous pouvez imprimer du texte en indice ou en exposant. Celui-ci sera dans une taille plus petite, mais rien ne s’oppose à ce que vous lui affectiez un taille normale :

>     \markup {
>       \column {
>         \line { 1 \super st movement }
>         \line { 1 \normal-size-super st movement
>           \sub { (part two) }  }
>       }
>     }

Le mode markup vous permet de sélectionner d’autres familles de fontes. Par défaut, LilyPond utilise une police avec empattement, du type roman, et tout changement doit être explicite. Dans la dernière ligne de l’exemple qui suit, vous noterez qu’il n’y a aucune différence entre les premier et deuxième mots.

>     \markup {
>       \column {
>         \line { Act \number 1 }
>         \line { \sans { Scene I. } }
>         \line { \typewriter { Verona. An open place. } }
>         \line { Enter \roman Valentine and Proteus. }
>       }
>     }

Certaines familles de police spécifiques aux nombres ou aux nuances par exemple, ne disposent pas de tous les caractères, comme nous l’avons vu dans les chapitres Personnalisation des indications de nuance et Indications de reprise manuelles.

Lorsqu’un changement survient au milieu d’un mot, il se peut qu’un espacement supplémentaire apparaisse. Il suffit en pareil cas de concaténer les différents éléments :

>     \markup {
>       \column {
>         \line {
>           \concat { 1 \super st }
>           movement
>         }
>         \line {
>           \concat { \dynamic p , }
>           \italic { con dolce espressione }
>         }
>       }
>     }

Une liste des différentes commandes permettant de changer de fonte ou d’utiliser des fontes personnalisées est disponible à l’annexe Font.

Pour savoir comment personnaliser des fontes, reportez-vous au chapitre Fontes.

#### Commandes prédéfinies

`\teeny`, `\tiny`, `\small`, `\normalsize`, `\large`, `\huge`, `\smaller`, `\larger`.

#### Voir aussi

Manuel de notation : Fonte, Fontes, Indications de reprise manuelles, Personnalisation des indications de nuance.

Fichiers d’initialisation : ‘`scm/define-markup-commands.scm`’.

Morceaux choisis : Texte.

Référence des propriétés internes : TextScript.

#### Problèmes connus et avertissements

Le recours aux commandes `\teeny`, `\tiny`, `\small`, `\normalsize`, `\large` et `\huge` produiront des espacements nettement moins réguliers que si vous utilisez `\fontsize`.

#### Alignement du texte

Cette partie traite de la manière de positionner du texte en mode markup. On déplace l’intégralité d’un objet markup en utilisant la syntaxe décrite au chapitre Déplacement d'objets.

Les objets de type markup peuvent s’aligner de différentes manières. Une indication textuelle est par défaut alignée sur son extrémité gauche. Dans l’exemple qui suit, il n’y a aucune différence entre les deux premiers markups. Cet exemple indique aussi différentes syntaxes permettant pour les commandes d’alignement.

>     \relative {
>       d''1-\markup { poco }
>       f
>       d-\markup { \left-align poco }
>       f
>       d-\markup { \center-align { poco } }
>       f
>       d-\markup \right-align { poco }
>     }

L’alignement horizontal peut être ajusté à l’aide d’une valeur numérique :

>     \relative {
>       a'1-\markup { \halign #-1 poco }
>       e'
>       a,-\markup { \halign #0 poco }
>       e'
>       a,-\markup { \halign #0.5 poco }
>       e'
>       a,-\markup { \halign #2 poco }
>     }

Enfin, les mots et tout autre objet peuvent se déplacer en les faisant précéder d’un décalage. Un décalage négatif est possible, ce qui aura pour effet de déplacer les objets qui le suivent dans la direction opposée. Bien que le décalage soit normalement invisible, des commandes spécifiques permettent de le mettre en évidence dans l’exemple ci-dessous :

>     \relative {
>       d''1-\markup { poco }
>       f
>       d-\markup { \with-color #darkred \box \hspace #4 poco }
>       f
>       d-\markup { \with-color #darkred \box \hspace #-4 poco }
>       f
>       d-\markup { \with-color #darkred \box \hspace #10 poco }
>     }

Certains objets possèdent leurs propres procédures d’alignement, qui annuleront toute spécification d’alignement que vous pourriez leur affecter. La solution consiste alors à déplacer l’intégralité de ces objets markup, comme indiqué par exemple au chapitre Indications textuelles.

L’alignement vertical est quant à lui un peu plus compliqué. Comme nous l’avons vu ci-avant, les objets markup peuvent être déplacés dans leur intégralité. Il est néanmoins possible de déplacer certains éléments spécifiques au sein d’un bloc markup. En pareil cas, l’élément à déplacer doit être précédé d’un « point d’ancrage » – un autre élément du markup ou un objet invisible. L’exemple qui suit illustre ces deux possibilités. Vous noterez par ailleurs que le dernier markup, dépourvu de point d’ancrage, n’est de ce fait pas déplacé.

>     \relative {
>       d'2^\markup {
>         Acte I
>         \raise #2 { Scène 1 }
>       }
>       a'
>       g_\markup {
>         \lower #4 \bold { Très modéré }
>       }
>       a
>       d,^\markup \raise #4 \italic {
>         Une forêt.
>         }
>       a'4 a g2 a
>     }

Certaines commandes permettent de régler l’alignement des objets textuels en mode markup, tant au niveau horizontal que vertical.

>     \relative {
>       d'2^\markup {
>         Acte I
>         \translate #'(-1 . 2) "Scène 1"
>       }
>       a'
>       g_\markup {
>         \general-align #Y #3.2 \bold "Très modéré"
>       }
>       a
>       d,^\markup \translate-scaled #'(-1 . 2) \teeny {
>        "Une forêt."
>       }
>       a'4 a g2 a
>     }

Ici aussi, un décalage (positif ou négatif) constitue un moyen efficace de positionner verticalement des objets empilés dans un markup :

>     \relative {
>       d'2^\markup {
>         Acte I
>         \column {
>           \with-color #darkred \box \vspace #-1
>           "Scène 1"
>         }
>       }
>       a'
>       g_\markup \column {
>         \with-color #darkred \box \vspace #1
>         "Très modéré"
>       }
>       a
>       d,^\markup \column {
>        "Une forêt."
>         \with-color #darkred \box \vspace #2
>       }
>       a'4 a g2 a
>     }

Un objet de type markup peut contenir plusieurs lignes de texte. Dans l’exemple suivant, chaque élément ou expression ira se placer sur sa propre ligne, tantôt alignée à gauche, tantôt centrée.

>     \markup {
>       \column {
>         a
>         "b c"
>         \line { d e f }
>       }
>       \hspace #10
>       \center-column {
>         a
>         "b c"
>         \line { d e f }
>       }
>     }

Pareillement, une liste d’éléments ou d’expressions sera répartie sur une ligne entière, voire même centrée sur toute la page s’il n’y a qu’un seul élément. De telles expressions peuvent à leur tour contenir du texte multiligne ou une autre expression markup.

>     \markup {
>       \fill-line {
>         \line { William S. Gilbert }
>         \center-column {
>           \huge \smallCaps "The Mikado"
>           or
>           \smallCaps "The Town of Titipu"
>         }
>         \line { Sir Arthur Sullivan }
>       }
>     }
>     \markup {
>       \fill-line { 1885 }
>     }

Les éléments peuvent se répartir sur une largeur spécifiée par une dérogation à la propriété `line-width`. Celle-ci est réglé par défaut à `#f`, autrement dit l’entièreté de la ligne :

>     \markup {
>       \column {
>         \fill-line { left center right }
>         \null
>         \override #'(line-width . 30)
>         \fill-line { left center right }
>       }
>     }

Les indications textuelles, lorsqu’elles sont relativement longues, peuvent se répartir sur plusieurs lignes en fonction de la largeur de ligne. Le texte sera alors soit aligné à gauche, soit justifié, comme le montre l’exemple suivant :

>     \markup {
>       \column {
>         \line  \smallCaps { La vida breve }
>         \line \bold { Acto I }
>         \wordwrap \italic {
>           (La escena representa el corral de una casa de
>           gitanos en el Albaicín de Granada. Al fondo una
>           puerta por la que se ve el negro interior de
>           una Fragua, iluminado por los rojos resplandores
>           del fuego.)
>         }
>         \hspace #0

>         \line \bold { Acto II }
>         \override #'(line-width . 50)
>         \justify \italic {
>           (Calle de Granada. Fachada de la casa de Carmela
>           y su hermano Manuel con grandes ventanas abiertas
>           a través de las que se ve el patio
>           donde se celebra una alegre fiesta)
>         }
>       }
>     }

Une liste des différentes commandes permettant d’aligner du texte en mode markup est disponible à l’annexe Align.

#### Voir aussi

Manuel d’initiation : Déplacement d'objets.

Manuel de notation : Alignement, Indications textuelles.

Fichiers d’initialisation : ‘`scm/define-markup-commands.scm`’.

Morceaux choisis : Texte.

Référence des propriétés internes : TextScript.

#### Éléments graphiques dans du texte formaté

Vous pouvez, grâce au mode markup, ajouter divers objets graphiques à votre partition.

Certaines commandes de markup permettent d’ornementer des éléments textuels avec des graphismes, à l’instar de l’exemple suivant :

>     \markup \fill-line {
>       \center-column {
>         \circle Jack
>         \box "in the box"
>         \null
>         \line {
>           Erik Satie
>           \hspace #3
>           \bracket "1866 - 1925"
>         }
>         \null
>         \rounded-box \bold Prelude
>       }
>     }

Certaines directives peuvent nécessiter d’accroître l’espacement autour du texte – voir l’annexe Align pour une liste des différentes commandes particulières au mode markup ainsi que leur description.

>     \markup \fill-line {
>       \center-column {
>         \box "Charles Ives (1874 - 1954)"
>         \null
>         \box \pad-markup #2 "THE UNANSWERED QUESTION"
>         \box \pad-x #8 "A Cosmic Landscape"
>         \null
>       }
>     }
>     \markup \column {
>       \line {
>         \hspace #10
>         \box \pad-to-box #'(-5 . 20) #'(0 . 5)
>           \bold "Largo to Presto"
>       }
>       \box \pad-around #3 "String quartet keeps very even time."
>     }

Vous pouvez imprimer certains graphismes ou symboles sans qu’il n’y ait de texte. Ces objets peuvent même se combiner, à l’instar de n’importe quelle expression markup.

>     \markup {
>       \combine
>         \draw-circle #4 #0.4 ##f
>         \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1
>       \hspace #5

>       \center-column {
>         \triangle ##t
>         \combine
>           \draw-line #'(0 . 4)
>           \arrow-head #Y #DOWN ##f
>       }
>     }

Des fonctionnalités graphiques avancées vous permettent même d’inclure dans une partition un fichier image converti au format PostScript encapsulé (extension `eps`), ou bien de tracer un graphique directement dans le fichier source à partir d’instructions PostScript pures. Nous vous conseillons, en pareil cas, de toujours spécifier les dimensions du dessin, comme dans ce qui suit :

>     c'1^\markup {
>       \combine
>         \epsfile #X #10 "./context-example.eps"
>         \with-dimensions #'(0 . 6) #'(0 . 10)
>         \postscript "
>           -2 3 translate
>           2.7 2 scale
>           newpath
>           2 -1 moveto
>           4 -2 4 1 1 arct
>           4 2 3 3 1 arct
>           0 4 0 3 1 arct
>           0 0 1 -1 1 arct
>           closepath
>           stroke"
>       }
>     c'

L’annexe Graphic répertorie les différentes commandes en matière de graphisme.

#### Voir aussi

Manuel de notation : Alignement, Annotations éditoriales, Dimensions, Graphique.

Fichiers d’initialisation : ‘`scm/define-markup-commands.scm`’, ‘`scm/stencil.scm`’.

Morceaux choisis : Texte.

Référence des propriétés internes : TextScript.

#### Notation musicale dans du texte formaté

Divers éléments de notation peuvent orner une partition, au moyen d’un objet markup.

Notes et altérations sont données à l’aide d’instructions markup :

>     a'2 a'^\markup {
>       \note {4} #1
>       =
>       \note-by-number #1 #1 #1.5
>     }
>     b'1_\markup {
>       \natural \semiflat \flat
>       \sesquiflat \doubleflat
>     }
>     \glissando
>     a'1_\markup {
>       \natural \semisharp \sharp
>       \sesquisharp \doublesharp
>     }
>     \glissando b'

Le mode markup permet d’accéder à d’autres objets de notation :

>     \relative {
>       g1 bes
>       ees\finger \markup \tied-lyric "4~1"
>       fis_\markup { \dynamic rf }
>       bes^\markup {
>         \beam #8 #0.1 #0.5
>       }
>       cis
>       d-\markup {
>         \markalphabet #8
>         \markletter #8
>       }
>     }

En règle générale, tout symbole musical peut être inclus dans un markup, comme le montre l’exemple qui suit. Ces différents symboles sont répertoriés dans l’annexe La fonte Emmentaler.

>     \relative {
>       c''2
>       c'^\markup { \musicglyph "eight" }
>       c,4
>       c,8._\markup { \musicglyph "clefs.G_change" }
>       c16
>       c2^\markup { \musicglyph "timesig.neomensural94" }
>     }

La rubrique Tout savoir sur les fontes contient d’autres informations sur l’impression de glyphes non alphabétiques, tels que des crochets ou accolades.

Le mode markup supporte aussi les diagrammes spécifiques à certains instruments :

>     \relative {
>       c''1^\markup {
>         \fret-diagram-terse "x;x;o;2;3;2;"
>       }
>       c^\markup {
>         \harp-pedal "^-v|--ov^"
>       }
>       c
>       c^\markup {
>         \combine
>           \musicglyph "accordion.discant"
>           \combine
>     	\raise #0.5 \musicglyph "accordion.dot"
>     	\raise #1.5 \musicglyph "accordion.dot"
>       }
>     }

La documentation sur ces diagrammes se trouve à l’annexe Instrument Specific Markup.

Rien ne s’oppose à ce qu’une étiquette ne comporte une partition.

>     \relative {
>       c'4 d^\markup {
>         \score {
>           \relative { c'4 d e f }
>           \layout { }
>         }
>       }
>       e f |
>       c d e f
>     }

Les différentes commandes markup relatives à la notation musicale sont répertoriées à l’annexe Music.

#### Voir aussi

Manuel de notation : La fonte Emmentaler, Musique, Tout savoir sur les fontes.

Fichiers d’initialisation : ‘`scm/define-markup-commands.scm`’, ‘`scm/fret-diagrams.scm`’, ‘`scm/harp-pedals.scm`’.

Morceaux choisis : Texte.

Référence des propriétés internes : TextScript.

#### Problèmes connus et avertissements

L’espacement vertical d’un `\score` contenu dans un objet markup se contrôle par la propriété `baseline-skip`. Tout réglage au sein d’un bloc `\paper` est ignoré.

#### Texte avec sauts de page

Alors que `\markup` s’utilise pour traiter un bloc de texte insécable, `\markuplist` permet, employé en tête de partition, d’obtenir un bloc de lignes réparties différemment et, le cas échéant, sur plusieurs pages.

>     \markuplist {
>       \justified-lines {
>         Un long texte constitué de lignes justifiées.
>         ...
>       }
>       \wordwrap-lines {
>         Un autre grand paragraphe.
>         ...
>       }
>       ...
>     }

Cette syntaxe prend en charge une liste de markups ; il peut s’agir

- d’une suite de commandes générant à leur tour des lignes de texte,
- d’une liste de lignes de texte,
- d’une liste d’étiquettes.

Les différentes commandes permettant de générer des listes de lignes se trouve dans l’annexe Commandes pour liste de markups (en anglais).

#### Commandes prédéfinies

`\markuplist`.

#### Voir aussi

Manuel de notation : Commandes pour liste de markups.

Manuel d’extension : Définition d'une nouvelle commande de liste de markups.

Fichiers d’initialisation : ‘`scm/define-markup-commands.scm`’.

Morceaux choisis : Texte.

Référence des propriétés internes : TextScript.

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