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 ».

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.

>     a1-\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 chaines 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.

>     a1^"\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 :

>     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 Text markup commands (en anglais).

#### Voir aussi

Manuel de notation : Text markup commands.

Morceaux choisis : Texte.

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

#### Problèmes connus et avertissements

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

>     d1^\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 de différentes manières :

- à partir de l’une des tailles standard prédéfinies,
- en étant définie en valeur absolue,
- en adoptant une valeur relative à celle précédemment définie.

Voici une illustration de ces trois différentes méthodes :

>     f1_\markup {
>       \tiny espressivo
>       \large e
>       \normalsize intenso
>     }
>     a^\markup {
>       \fontsize #5 Sinfonia
>       \fontsize #2 da
>       \fontsize #3 camera
>     }
>     bes^\markup { (con
>       \larger grande
>       \smaller emozione
>       \magnify #0.6 { e sentimento } )
>     }
>     d c2 r8 c bes a g1

Vous pouvez imprimer du texte en indice ou en exposant. Celui-ci sera dans un 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 : Font, Personnalisation des indications de nuance, Indications de reprise manuelles, Fontes.

Morceaux choisis : Texte.

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

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

#### 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.

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

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

Certains objets possèdent leurs propres procédures d’alignement, qui annuleront toute spécification d’alignement que vous pourriez affecter à un argument de type markup que vous leur auriez fourni. 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éanmois 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é.

>     d2^\markup {
>       Acte I
>       \raise #2 { Scène 1 }
>     }
>     a'
>     g_\markup {
>       \null
>       \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. Tout objet soumis à ces commandes doit être précédé d’un point d’ancrage.

>     d2^\markup {
>       Acte I
>       \translate #'(-1 . 2) "Scène 1"
>     }
>     a'
>     g_\markup {
>       \null
>       \general-align #Y #3.2 \bold "Très modéré"
>     }
>     a
>     d,^\markup {
>       \null
>       \translate-scaled #'(-1 . 2) \teeny "Une forêt."
>     }
>     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 multi-ligne 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 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 : Align, Indications textuelles.

Morceaux choisis : Texte.

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

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

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

Vous pouvez, grâce aux 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"
>       }
>       \pad-around #3
>           "String quartet keeps very even time,
>     Flute quartet keeps very uneven 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 :

>     c1^\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 : Graphic, Annotations éditoriales, Align.

Morceaux choisis : Texte.

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

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

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

>     a2 a^\markup {
>       \note #"4" #1
>       =
>       \note-by-number #1 #1 #1.5
>     }
>     b1_\markup {
>       \natural \semiflat \flat
>       \sesquiflat \doubleflat
>     }
>     \glissando
>     a1_\markup {
>       \natural \semisharp \sharp
>       \sesquisharp \doublesharp
>     }
>     \glissando b

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

>     g1 bes
>     ees-\markup {
>       \finger 4
>       \tied-lyric #"~"
>       \finger 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 Feta.

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

Le sous-chapitre 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 :

>     c1^\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 trouvent à l’annexe Instrument Specific Markup.

Rien ne s’oppose à ce qu’une étiquette ne comporte une partition. Il suffit que l’expression en question contienne un bloc `\score` incluant un bloc `\layout`.

>     c4 d^\markup {
>       \score {
>         \relative c' { c4 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 : Music, La fonte Feta, Tout savoir sur les fontes.

Morceaux choisis : Texte.

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

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

#### Texte avec sauts de page

Alors que `\markup` s’utilise pour traiter un bloc de texte insécable, `\markuplines` 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.

>     \markuplines {
>       \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 Text markup list commands.

#### Voir aussi

Manuel de notation : Text markup list commands,

Morceaux choisis : Texte.

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

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

#### Commandes prédéfinies

`\markuplines`.

Autres langues : English, deutsch, español, 日本語.

#### LilyPond — Manuel de notation