@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-

@ignore
   Translation of GIT committish: 606ac3c3b22c41d84aa5fa938d42da5125ac572a

   When revising a translation, copy the HEAD committish of the
   version that you are working on.  For details, see the Contributors'
   Guide, node Updating translation committishes..
@end ignore

@c \version "2.25.6"

@c Translators: Jean-Charles Malahieude
@c Translation checkers: Valentin Villenave, John Mandereau


@node Text
@chapter Texte

@lilypondfile[quote]{snippets/text-headword.ly}

Nous allons voir ici comment insérer du texte dans une partition, ainsi
que différentes manières de le mettre en forme.


@node Writing text
@section Ajout de texte

Cette partie constitue une introduction aux différentes manières
d'ajouter du texte à une partition.

@cindex texte, autres langues
@warning{Pour écrire des accents et autres caractères spéciaux, il
suffit de les insérer directement dans votre fichier LilyPond.  Ce
fichier devra être sauvegardé avec l'encodage UTF-8.  Pour plus
d'informations, voir @ref{Text encoding}.}


@node Text objects overview
@subsection Vue d'ensemble des objets textuels

@funindex \markup
@cindex objet texte
@cindex texte, objet
@cindex @emph{markup}, objet
@cindex objet @emph{markup}

Les objets textuels se saisissent soit comme de simples chaînes de
caractères entre guillemets informatiques (optionnels pour un mot
unique). Le mode @emph{markup}, ou étiquette, accepte quant à lui une
mise en forme fine du texte et des enrichissements graphiques comme
indiqué dans @ref{Formatting text}.

En tant que tels, les blocs @emph{markup} peuvent s'utiliser :
@itemize
@item
dans tout objet @code{TextScript} attaché à des notes par @code{-},
@code{^} ou@tie{}@code{_} ; voir @ref{Text scripts} ;

@item
en tant que bandeau (@emph{spanner}) lorsqu'une indication se prolonge
sur plusieurs temps ou mesures ; voir
@ref{Text spanners} ;

@item
dans toute marque affichée au-dessus de la partition, tels les objets
@code{RehearsalMark} ou @code{MetronomeMark} introduits respectivement
par les mots-clés @code{\mark} ou @code{\tempo} ; voir
@ref{Text marks} ;

@item
en tant que bloc de texte indépendant, saisi en dehors de tout bloc
@code{\score} -- dans ce cas précis les commandes @code{\markup} ou
@code{\markuplist}  sont obligatoires et ne sauraient être remplacées
par du simple texte borné par des guillemets informatiques ; voir
@ref{Separate text} ;

@item
dans toute définition au sein d'un bloc @code{\header} (par ex.
@code{title}, @code{subtitle}, @code{composer}), ou dans des éléments
spécifiques au bloc @code{\paper} tel que @code{evenHeaderMarkup} pour
les numéros de page. Ceci est abordé dans
@ref{Titles and headers}.
@end itemize

De nombreux autres objets basés sur du texte peuvent se saisir sous
forme de bloc @emph{markup} même si ce n'est pas leur usage premier.
@itemize
@item
Les doigtés peuvent se remplacer par des blocs de @emph{markup} dès lors
qu'ils sont introduits par la commande @code{\finger} ; voir
@ref{Fingering instructions}.

@item
Les syllabes des paroles peuvent être formatées avec une commande
@code{\markup} ; voir @ref{Common notation for vocal music}.

@item
Les noms des accords sont en fait définis sous forme de blocs de
@emph{markup} et peuvent donc être redéfinis de la même manière pour
adapter les modificateurs d'accord ou les exceptions ; voir
@ref{Displaying chords}.

@item
Les nuances se saisissent de la manière la plus simple. Il est néanmoins
possible de définir sa @ref{New dynamic marks, propre indication} sous
forme d'objet @emph{markup}. Certaines nuances, comme un crescendo, sont
affichées sous forme de bandeau et peuvent être redéfinies au travers de
certaines propriétés telle que @code{crescendoText} ; voir
@ref{Dynamics}.

@item
Des objets moins courants sont constitués de blocs @emph{markup}, tels
les indications en @ref{Balloon help}.
@end itemize

Il est en fait possible d'utiliser @code{\markup} pour personnaliser
l'apparence de pratiquement n'importe quel objet graphique (@emph{grob})
en appliquant une dérogation soit à sa propriété @code{text} s'il en
dispose ou de sa propriété @code{stencil}. Une partie de la logique qui
rend ceci possible est expliquée dans @ressaynamed{Flexible
architecture, Flexibilité architecturale}.

L'exemple qui suit illustre l'ubiquité des blocs @emph{markup} non
seulement comme les objets ci-dessus présentés, mais aussi en remplaçant
des objets musicaux par des objets textuels de différentes manières.

@lilypond[quote, verbatim,line-width=4\in]
\header { title = \markup "Header" }

dyn =
#(make-dynamic-script #{ \markup \serif "DynamicText" #})

\markup \box "Top-level markup"

\score {
  <<
    \new ChordNames
    \with {
      majorSevenSymbol = \markup "majorSevenSymbol"
    }
    \chordmode { c1:maj7 }
    \new Staff {
      \tempo \markup "MetronomeMark"
      \textMark "textMark"
      \once \override TupletNumber.text =
        \markup "TupletNumber"
      \tuplet 3/2 {
        \once \override NoteHead.stencil =
          #ly:text-interface::print
        \once \override NoteHead.text =
          \markup \lower #0.5 "NoteHead"
        c''8^\markup \italic "TextScript"
        a'\finger \markup \serif "Fingering"
        \once \override Rest.stencil =
          #(lambda (grob)
             (grob-interpret-markup grob #{
               \markup  "Rest"
               #}))
        r
      }
    }
    \new Lyrics \lyricmode {
      \markup \smallCaps "LyricText" 1
    }
    \new Dynamics { s1\dyn }
  >>
}
@end lilypond

@morerefs
Manuel de notation :
@ref{Text scripts},
@ref{Fingering instructions},
@ref{Displaying chords},
@ref{Text spanners},
@ref{Text marks},
@ref{Balloon help},
@ref{Formatting text},
@ref{Dynamics},
@ref{New dynamic marks},
@ref{Separate text},
@ref{Common notation for vocal music}.

Essai sur la gravure musicale automatisée :
@ressaynamed{Flexible architecture, Flexibilité architecturale}.

Morceaux choisis :
@rlsrnamed{Text, Texte}.
@endmorerefs


@node Text scripts
@subsection Commentaires textuels

@cindex @'etiquette de texte
@cindex bloc de texte
@cindex ajout de texte

Vous pouvez ajouter à une partition des indications sous forme textuelle,
comme dans l'exemple suivant.  Ces indications se placeront manuellement
au-dessus ou au-dessous de la portée selon la syntaxe utilisée -- cf.
@ref{Direction and placement}.

@lilypond[quote,verbatim]
\relative { a'8^"pizz." g f e a4-"scherz." f }
@end lilypond

Cette syntaxe est en fait un raccourci. Des constructions plus élaborées
d'annotation peuvent être obtenues en ayant recours à un bloc
@code{\markup} et selon les préceptes énoncés dans @ref{Formatting
text}.

@lilypond[quote,verbatim]
\relative {
  a'8^\markup { \italic pizz. } g f e
  a4_\markup { \tiny scherz. \bold molto } f }
@end lilypond

Par défaut, ces indications n'affectent en rien l'espacement des notes.
Leur longueur peut néanmoins être prise en considération : dans
l'exemple qui suit, le premier commentaire n'influe pas sur
l'espacement, à l'inverse du second.

@lilypond[quote,verbatim]
\relative {
  a'8^"pizz." g f e
  \textLengthOn
  a4_"scherzando" f
}
@end lilypond

En plus d'indications textuelles, les notes peuvent se voir attacher des
articulations, comme indiqué au chapitre @ref{Articulations and
ornamentations}.

Pour de plus amples détails sur la manière de combiner indications
textuelles et articulations, reportez-vous au chapitre
@rlearningnamed{Placement of objects, Positionnement des objets}.

@predefined
@funindex \textLengthOn
@funindex \textLengthOff

@code{\textLengthOn},
@code{\textLengthOff}.
@endpredefined

@morerefs
Manuel d'initiation :
@rlearningnamed{Placement of objects, Positionnement des objets}.

Manuel de notation :
@ref{Articulations and ornamentations},
@ref{Direction and placement},
@ref{Formatting text}.

Morceaux choisis :
@rlsrnamed{Text, Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs

@cindex texte hors marges
@cindex marge, texte qui dépasse
@cindex texte, maintien dans les marges

@knownissues
S'assurer que tous les éléments textuels et les paroles respectent
les marges du document requiert des calculs relativement lourds ;
vous pouvez toutefois vous en affranchir en ajoutant

@example
\override Score.PaperColumn.keep-inside-line = ##f
@end example


@node Text spanners
@subsection Indication textuelle avec extension

@cindex texte et extenseur
@cindex prolongation de texte
@cindex extenseur

Certaines indications d'interprétation comme @emph{rallentando},
@emph{accelerando} ou @emph{trilles}, s'inscrivent textuellement et se
prolongent sur plusieurs notes à l'aide d'une ligne pleine, pointillée
ou ondulée. Ces objets, que l'on appelle « extenseurs » (@emph{spanners}
en anglais), se dessinent entre deux notes à l'aide de la syntaxe
suivante :

@lilypond[verbatim,quote]
\relative {
  \override TextSpanner.bound-details.left.text = "rit."
  b'1\startTextSpan
  e,\stopTextSpan
}
@end lilypond

@cindex texte, mise en forme des prolongations
@cindex texte, mise en forme des extenseurs
@cindex extenseur, mise en forme

@noindent
Le texte à imprimer est spécifié en tant que propriété de l'objet
@code{TextSpanner}. Il apparaîtra par défaut en italique ; cependant,
rien ne s'oppose à un autre graphisme dès lors que vous faites appel à
un bloc @code{\markup} -- voir @ref{Formatting text}.

@lilypond[quote,verbatim]
\relative {
  \override TextSpanner.bound-details.left.text =
    \markup { \upright "rit." }
  b'1\startTextSpan c
  e,\stopTextSpan
}
@end lilypond

Le style de ligne se définit lui aussi comme une propriété de l'objet.
Les détails concernant la syntaxe à utiliser sont expliqués au chapitre
@ref{Line styles}.

@predefined
@funindex \textSpannerUp
@funindex \textSpannerDown
@funindex \textSpannerNeutral
@funindex \startTextSpan
@funindex \stopTextSpan

@code{\textSpannerUp},
@code{\textSpannerDown},
@code{\textSpannerNeutral},
@code{\startTextSpan},
@code{\stopTextSpan}.
@endpredefined

@snippets

@cindex nuance, extension, personnalisation
@cindex extenseur, nuance, personnalisation
@lilypondfile[verbatim,quote,texidoc,doctitle]
{snippets/dynamics-spanner-with-custom-text.ly}

@morerefs
Manuel de notation :
@ref{Formatting text},
@ref{Dynamics},
@ref{Line styles}.

Morceaux choisis :
@rlsrnamed{Text, Texte},
@rlsrnamed{Expressive marks, Signes d'interprétation}.

Référence des propriétés internes :
@rinternals{TextSpanner}.
@endmorerefs

@knownissues
LilyPond ne peut traiter qu'un seul extenseur à la fois par voix.

Les textes aux extrémités d'un bandeau peuvent être amenés à se
chevaucher.

@lilypond[verbatim,quote]
{
  \once \override TextSpanner.bound-details.left.text = "The text is"
  \once \override TextSpanner.bound-details.right.text = "too long"
  c'2\startTextSpan d'2\stopTextSpan
}
@end lilypond

Un moyen de contournement est disponible à la rubrique @ref{Horizontal
spacing}.


@node Section labels
@subsection Marque de section

@cindex section, marque
@cindex texte, sur barre de mesure

@funindex \sectionLabel

La commande @code{\sectionLabel} indique le début d'un passage nommé.
Elle est tout à fait appropriée dans le cadre d'une division en sections
créées par @code{\section} et peut s'utiliser de manière indépendante.

@lilypond[verbatim,quote]
\fixed c' {
  \sectionLabel "Verse"
  c2 g
  \section
  \sectionLabel \markup { \rounded-box { Chorus } }
  g2 c
  \bar "|."
}
@end lilypond

@morerefs
Manuel de notation :
@ref{Section divisions},
@ref{Rehearsal marks},
@ref{Formatting text}.

Morceaux choisis :
@rlsrnamed{Text, Texte}.

Référence des propriétés internes :
@rinternals{SectionLabel},
@rinternals{SectionLabelEvent}.
@endmorerefs


@node Text marks
@subsection Indications textuelles

@cindex indication textuelle
@cindex repère textuel
@cindex texte, sur barre de mesure
@cindex barre de mesure, symbole au dessus
@cindex texte, entre des notes
@cindex texte, en début de ligne
@cindex texte, en fin de partition

@funindex \textMark
@funindex \textEndMark
@funindex \markup

Les indications textuelles sont des objets qui, contrairement aux
scripts (voir @ref{Text scripts}), ne s'impriment pas en regard
des notes, mais entre elles, et souvent alignées sur une barre de mesure.

@funindex \mark

@warning{Les versions précédentes de LilyPond utilisaient l'instruction
@code{@bs{}mark} pour les indications textuelles, bien quelle ait été
initialement conçue pour les repères de répétition (voir @ref{Rehearsal
marks}). Les commandes @code{@bs{}textMark} et @code{@bs{}textEndMark}
sont plus appropriées en matière d'indications textuelles de par leurs
réglages par défaut et la capacité qu'elles offrent de présenter
plusieurs indications en un même endroit. Il est donc préférable
d'utiliser @code{@bs{}textMark} et @code{@bs{}textEndMark} en lieu et
place de @code{@bs{}mark "Texte"} ou @code{@bs{}mark @bs{}markup
@dots{}}. Pour la conversion de code utilisant @code{@bs{}mark}, les
dérogations portées à @code{RehearsalMark} devraient être modifiées en
@code{TextMark}.}

Avant d'insérer une indication textuelle, il peut être judicieux de
chercher une commande qui serait plus appropriée. Lorsque le texte
identifie une section, utilisez @code{\sectionLabel} (voir @ref{Section
labels}). Pour un saut ou un renvoi arbitraire, il vaut mieux utiliser
@code{\jump} (voir @ref{Manual repeat marks}). Ces instructions
disposent de mises en forme par défaut différentes et créent d'autres
objets qui peuvent être personnalisés indépendamment des indications
textuelles génériques à l'aide de feuilles de style.

Une indication textuelle se saisit à l'aide de @code{\textMark} ou
@code{\textEndMark}. La commande @code{\textMark} affiche une marque
alignée sur sa gauche.

@lilypond[verbatim,quote]
\fixed c'' {
  \textMark "Fl. 1 solo"
  c4 e g2
  \textMark "A due"
  e4 g c'2
}
@end lilypond

Lorsqu'intervient un saut de ligne à l'endroit où est placé
@code{\textMark}, l'indication apparaîtra sur le système suivant.

@lilypond[verbatim,quote,ragged-right]
\fixed c'' {
  \textMark "Fl. 1 solo"
  c4 e g2
  \break
  \textMark "A due"
  e4 g c'2
}
@end lilypond

Contrairement à @code{\textMark}, @code{\textEndMark} crée une marque
alignée sur sa droite. Si elle se présente lors d'un saut de ligne,
l'indication apparaîtra en fin du système précédent.

@lilypond[verbatim,quote,ragged-right]
\fixed c' {
  \repeat volta 2 {
    c4 e8 f g2
    e4 f8 g c'2
    \textEndMark "ad lib"
  }
  \break
  c'4 8 8 4 8 8
  c'1
}
@end lilypond

Le texte peut être mis en forme de différentes manières dès lors qu'est
utilisé un bloc @code{\markup}, comme indiqué à la rubrique
@ref{Formatting text}.

@lilypond[quote,verbatim]
\relative {
  <c' e>1
  \textMark \markup { \italic { colla parte } }
  <d f>2 <e g>
  <c f aes>1
}
@end lilypond

@funindex \markLengthOn
@funindex \markLengthOff

Les commandes @code{\markLengthOn} et @code{\markLengthOff} -- voir
@ref{Metronome marks} --  sont opérationnelles dans le cadre des
indications textuelles.

@lilypond[verbatim,quote]
{
  \mark \default
  c'2 2
  \textEndMark "longue indication textuelle"
  \markLengthOn
  2 2
  \mark \default
  2 2
  \textEndMark "longue indication textuelle"
}
@end lilypond

@cindex indication textuelle, sous la portée

Les indications textuelles peuvent se présenter en dessous de la portée.

@lilypond[verbatim,quote]
\fixed c' {
  c4 g c'8 b c4 e' c' c2
  c4 g c'8 b c4 e' c' g2
  e'4 c' c'8 b c'4
  g4 c' c2~ c1
  \tweak direction #DOWN
    \tweak font-size -1
      \textEndMark "Composed on November 13th, 2020"
}
@end lilypond

@cindex indication textuelle, empilement vertical

Plusieurs indications peuvent intervenir en un même moment. L'ordre dans
lequel elles s'empileront peut se gérer à l'aide de la propriété
@code{outside-staff-priority} (voir @ref{Vertical collision avoidance}).
Une autre façon de procéder pourrait consister à utiliser une seule
indication sous la forme @code{\markup \column @{ @dots{} @} }.

@lilypond[verbatim,quote]
\fixed c' {
  \repeat volta 2 {
    c4 g c'8 b c4 e' c' c2
    \textEndMark "ad lib."
    \tweak outside-staff-priority 1200
      \tweak font-size -1
        \textEndMark "2a volta a due"
  }
}
@end lilypond

@cindex indication textuelle, alignement

L'alignement d'une indication textuelle peut se modifier.

@lilypond[verbatim,quote]
{
  c'8 8 8 8 8 8 8 8
  \textMark \markup \column {
    \line { Indication alignée sur sa gauche }
    \line { (par défaut pour \concat { \typewriter "\\textMark" ) } }
  }
  d'8 8 8 8 8 8 8 8
}

{
  c'8 8 8 8 8 8 8 8
  \tweak self-alignment-X #CENTER
    \textMark "Indication centrée"
  d'8 8 8 8 8 8 8 8
}

{
  c'8 8 8 8 8 8 8 8
  \tweak self-alignment-X #RIGHT
    \textMark \markup \right-column {
      \line { Indication alignée sur sa droite }
      \line { (par défaut pour \concat { \typewriter "\\textEndMark" ) } }
    }
  d'8 8 8 8 8 8 8 8
}
@end lilypond

@predefined
@code{\textMark},
@code{\textEndMark},
@code{\markLengthOn},
@code{\markLengthOff}.
@endpredefined

@snippets

@c Also in 'Rehearsal marks'.
@cindex indication textuelle, sur toutes les portées
@funindex Mark_engraver
@funindex Staff_collecting_engraver
@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{snippets/printing-marks-on-every-staff.ly}

@morerefs
Manuel de notation :
@ref{Rehearsal marks},
@ref{Metronome marks},
@ref{The Emmentaler font},
@ref{Section labels},
@ref{Formatting text},
@ref{Music notation inside markup}.

Morceaux choisis :
@rlsrnamed{Text, Texte}.

Référence des propriétés internes :
@rinternals{Text_mark_engraver},
@rinternals{TextMark},
@rinternals{TextMarkEvent}.
@endmorerefs


@node Separate text
@subsection Texte indépendant

@cindex texte indépendant
@cindex texte isolé
@cindex texte en préambule
@cindex @emph{top-level}, texte
@cindex texte, @emph{top-level}
@cindex indépendant, texte

@funindex \markup

Un bloc @code{\markup} ou @code{\markuplist} peut exister en lui-même,
indépendamment de tout bloc @code{\score}, et venir en préambule par
exemple -- voir le chapitre @ref{File structure} à ce propos.

@lilypond[verbatim,quote]
\markup {
  Tomorrow, and tomorrow, and tomorrow...
}
@end lilypond

@noindent
De cette manière, vous pouvez insérer du texte en dehors de la musique.
Ceci devient particulièrement utile lorsque le fichier source contient
plusieurs morceaux.  Pour plus d'informations à ce propos, reportez-vous
au chapitre @ref{Multiple scores in a book}.

@lilypond[quote,verbatim]
\score {
  c'1
}
\markup {
  Tomorrow, and tomorrow, and tomorrow...
}
\score {
  c'1
}
@end lilypond

Les blocs de textes peuvent s'étendre sur plusieurs pages à l'aide de la
commande @code{\markuplist}. Ceci permet de générer des ouvrages
complets uniquement grâce à LilyPond. Cette fonctionnalité, ainsi que la
syntaxe appropriée, est abordée plus en détail au chapitre @ref{Text
markup introduction}.

@predefined
@funindex \markup
@funindex \markuplist

@code{\markup},
@code{\markuplist}.
@endpredefined

@snippets

@cindex texte en colonnes
@cindex colonnes, texte
@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{snippets/stand-alone-two-column-markup.ly}

@morerefs
Manuel de notation :
@ref{Formatting text},
@ref{Multiple scores in a book},
@ref{File structure}.

Morceaux choisis :
@rlsrnamed{Text,Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs


@node Formatting text
@section 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 @emph{markup}.


@node Text markup introduction
@subsection Introduction au formatage de texte

@cindex @'etiquette
@cindex commentaire textuel
@cindex @'etiquette textuelle
@cindex texte ajouté
@cindex annotation
@cindex @emph{markup}

@funindex \markup

Un bloc @code{\markup} ou @code{\markuplist} permet d'ajouter du texte
et dispose de sa propre syntaxe que nous appellerons le « mode
@emph{markup} ». De tels blocs peuvent s'utiliser partout, comme indiqué
dans @ref{Text objects overview}.

@cindex @emph{markup}, expression
@cindex expression @emph{markup}
@cindex @emph{markup}, syntaxe
@cindex syntaxe du mode @emph{markup}

En mode @emph{markup}, les mots s'écrivent tels quels. Un mot isolé ne
requiert pas de guillemets.

@lilypond[verbatim,quote]
\markup intenso
@end lilypond

Une suite de mots peut se regrouper en les bornant par des guillemets
informatiques @code{"}.
@c repeat double quote for pairing "

@lilypond[verbatim,quote]
\markup "molto intenso"
@end lilypond

@cindex caractères spéciaux en mode markup
@cindex mode markup et caractères spéciaux
@cindex caractère réservé, impression
@cindex impression de caractère réservé
@cindex impression de caractères spéciaux
@cindex guillemets en mode @emph{markup}
@cindex mode @emph{markup} et guillemets

Au delà du simple fait de grouper des mots, les guillemets informatiques
permettent d'imprimer littéralement des caractères spéciaux -- tels
qu'un @samp{\} ou un @samp{#} -- sans influer sur le formatage du texte.
Il est de ce fait possible d'imprimer des guillemets
informatiques @code{"} dès lors qu'ils sont précédés d'une oblique
inverse.
@c repeat double quote for pairing "

@c KEEP LY
@lilypond[quote,verbatim]
\relative {
  a'1^"\\italic markup..."
  a_\markup { \italic "... imprime des lettres en \"italique\" !" }
  a a
}
@end lilypond

La mise en forme s'obtient à l'aide de commandes dédiées dont le nom est
précédé d'une oblique inverse. Elles prennent un certain nombre
d'arguments spécifiques à la commande. Une liste exhaustive des
commandes spécifiques au mode @emph{markup} est fournie dans l'annexe
@ref{Text markup commands} (en anglais).

@lilypond[verbatim,quote]
\markup \italic "string. assai"
\markup \with-color "red" intenso
@end lilypond

Les commandes de @emph{markup} peuvent être imbriquées. Un bloc
@emph{markup} sera clôturé dès lors que toutes les commandes qu'il
contient auront reçu leurs arguments.

@lilypond[verbatim,quote]
\markup \with-color "red" \italic intenso
@end lilypond

@cindex @emph{markup}, liste
@cindex liste de @emph{markups}

Plusieurs expressions @emph{markup} peuvent se regrouper par des
accolades pour former une @dfn{liste de @emph{markups}}. En l'absence de
formatage particulier, les éléments d'une liste de @emph{markups} sont
affichés en enfilade.

@lilypond[verbatim,quote]
\markup { molto \italic intenso }
@end lilypond

Certaines commandes n'attendent pas un simple @emph{markup}, mais une
liste de @emph{markups}, ce qui permet des présentations plus
élaborées qu'une simple enfilade.

@lilypond[verbatim,quote]
\markup \center-column {
  \bold "Des Simplicius Simplicissimus Jugend"
  "Karl Amadeus Hartmann"
}
@end lilypond

De plus, certaines commandes ne renvoient pas un @emph{markup}, mais
une liste de @emph{markups}. Leur résultat peut alors s'utiliser là où
on attendait une liste de @emph{markup}. Une liste de ces commandes est
fournie à l'annexe @ref{Text markup list commands} (en anglais).

@lilypond[verbatim,quote]
\markup \string-lines
    "Twinkle, twinkle, little star,
     How I wonder what you are!"
@end lilypond

@lilypond[verbatim,quote]
\markup \center-column \string-lines
    "Twinkle, twinkle, little star,
     How I wonder what you are!"
@end lilypond

Les éléments d'une liste composite de @emph{markups} sont tout bonnement
traités comme des éléments de la liste principale.

@lilypond[verbatim,quote]
\markup \center-column {
  \bold "Des Simplicius Simplicissimus Jugend"
  { Karl Amadeus \smallCaps Hartmann }
}
@end lilypond

@funindex \line

Plusieurs éléments d'une liste de @emph{markups} seront mis en rang sur
une même ligne s'ils sont regroupés à l'aide de la commande @code{\line}.

@lilypond[verbatim,quote]
\markup \center-column {
  \bold "Des Simplicius Simplicissimus Jugend"
  \line { Karl Amadeus \smallCaps Hartmann }
}
@end lilypond

Le comportement des commandes prenant en argument des @emph{markups}
mais s'appliquent à des listes de @emph{markups} constitue une
fonctionnalité spéciale. Lorsque leur dernier argument est une liste et
non un @emph{markup}, chacun des éléments de cette liste se voit
appliquer le traitement de la commande.

@lilypond[verbatim,quote]
\markup \box { Karl Amadeus \smallCaps Hartmann }
@end lilypond

Dans ce cas, le résultat est par contre une liste de @emph{markup} qui
peut donc être passée à une commande attendant une liste de
@emph{markups} ou une commande attendant un @emph{markup}, avec à
nouveau le comportement que nous venons de voir.

@lilypond[verbatim,quote]
\markup \center-column \box { Karl Amadeus \smallCaps Hartmann }
\markup \rotate #30 \box { Karl Amadeus \smallCaps Hartmann }
@end lilypond

L'application de la commande @code{\line} à une liste de @emph{markups}
permet qu'elle soit traitée comme un argument @emph{markup} unique.

@lilypond[verbatim,quote]
\markup \box { Karl Amadeus \smallCaps Hartmann }
\markup \box \line { Karl Amadeus \smallCaps Hartmann }
@end lilypond

@cindex multipage, @emph{markup}
@cindex @emph{markup}  multipage
@cindex @emph{markup}, texte multipage
@cindex plusieurs pages de texte

@funindex \markuplist
@funindex \justified-lines
@funindex \wordwrap-lines
@funindex \line

Lorsque l'intégralité du contenu d'une expression @code{\markup}
est une liste de @emph{markups}, elle est implicitement reproduite
avec la commande @code{\line}. Ses éléments sont donc empilés
horizontalement et groupés dans un seul bloc de texte insécable.
La commande @code{\markuplist} agit différemment : elle attend une
liste de @emph{markups} et affiche individuellement les éléments
@emph{markups} sur la page, les empilant verticalement, autorisant
par ailleurs les sauts de page. L'exemple ci-dessous illustre
cette différence.

@lilypond[quote,verbatim]
\markup \box \wordwrap {
  Lorem ipsum dolor sit amet, consectetur
  adipisicing elit, sed do eiusmod tempor incididunt
  ut labore et dolore magna aliqua.  Ut enim ad minim
  veniam, quis nostrud exercitation ullamco laboris
  nisi ut aliquip ex ea commodo consequat.
}

\markuplist \box \wordwrap-lines {
  Lorem ipsum dolor sit amet, consectetur
  adipisicing elit, sed do eiusmod tempor incididunt
  ut labore et dolore magna aliqua.  Ut enim ad minim
  veniam, quis nostrud exercitation ullamco laboris
  nisi ut aliquip ex ea commodo consequat.
}
@end lilypond

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

@lilypond[quote,verbatim]
allegro = \markup \bold \large Allegro

{
  d''8.^\allegro
  d'16 d'4 r2
}
@end lilypond

@funindex \etc

La syntaxe de la commande @code{\etc} permet de définir des raccourcis
personnalisés utilisables dans le cadre des commandes @code{\markup}.

@lilypond[quote,verbatim]
\markup reddish = \markup \with-color "tomato" \etc

\markup { molto \reddish intenso }
@end lilypond

Le fonctionnement interne de ces commandes et la façon d'en implémenter
de nouveaux est abordée dans @rextendnamed{Markup functions, Fonctions
pour markups}.

@morerefs
Manuel de notation :
@ref{Text markup list commands},
@ref{Text markup commands},
@ref{Text objects overview}.

Manuel d'extension des fonctionnalités :
@rextendnamed{Markup functions, Fonctions pour markups}

Fichiers d'initialisation :
@file{scm/define-markup-commands.scm},
@file{scm/markup.scm}.

Morceaux choisis :
@rlsrnamed{Text, Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs

@knownissues
Les messages d'erreur de syntaxe en mode @emph{markup} sont peu
explicites.


@node Selecting font and font size
@subsection Sélection de la fonte et de la taille

@cindex fonte, changement
@cindex changement de fonte
@cindex italique
@cindex gras
@cindex souligné

@funindex \italic
@funindex \bold
@funindex \underline

Le mode @emph{markup} autorise des changements élémentaires de la
fonte :

@lilypond[quote,verbatim]
\relative {
  d''1^\markup {
    \bold { Più mosso }
    \italic { non troppo \underline Vivo }
  }
  r2 r4 r8
  d,_\markup { \italic quasi \smallCaps Tromba }
  f1 d2 r
}
@end lilypond

@cindex caractère, taille (@emph{markup})
@cindex texte (@emph{markup}), taille

@funindex text-font-size
@funindex \abs-fontsize
@funindex \fontsize
@funindex \smaller
@funindex \larger
@funindex \magnify

La taille globale du texte apparaissant dans les @emph{markups} peut se
régler à l'aide de la variable de papier @code{text-font-size}. Ceci
permet d'ajuster une fonte principale qui pourrait paraître plus grande
ou plus petite bien qu'ayant la même taille nominale. La valeur est
exprimée en points (sans mention de l'unité) : la valeur par défaut
dépend de la taille de portée et résulte du calcul @code{(staff-height /
20 * 11)}.

@xref{Distances and measurements} pour de plus amples informations quant
aux dimensions utilisées par LilyPond.

@lilypond[quote,verbatim]
\score {
  { f'^"Default text size" }
  \layout { text-font-size = 10 }
}

\score {
  { f'^"Default text size" }
  \layout { text-font-size = 20 }
}
@end lilypond

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 :

@lilypond[quote,verbatim]
\relative b' {
  b1_\markup { \huge Sinfonia }
  b1^\markup { \teeny da }
  b1-\markup { \normalsize camera }
}
@end lilypond

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

@lilypond[quote,verbatim]
\relative b' {
  b1_\markup { \larger Sinfonia }
  b1^\markup { \smaller da }
  b1-\markup { \magnify #0.6 camera }
}
@end lilypond

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

@lilypond[quote,verbatim]
\relative b' {
  b1_\markup { \fontsize #-2 Sinfonia }
  b1^\markup { \fontsize #1 da }
  b1-\markup { \fontsize #3 camera }
}
@end lilypond

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

@lilypond[quote,verbatim]
\relative b' {
  b1_\markup { \abs-fontsize #20 Sinfonia }
  b1^\markup { \abs-fontsize #8 da }
  b1-\markup { \abs-fontsize #14 camera }
}
@end lilypond

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 :

@lilypond[quote,verbatim]
\markup \fontsize #6 \bold { Sinfonia da camera }
\markup \fontsize #6 \bold { "Sinfonia da camera" }
@end lilypond

@cindex indice
@cindex exposant

@funindex \super
@funindex \sub
@funindex \normal-size-super

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 une taille normale :

@lilypond[quote,verbatim]
\markup {
  \column {
    \line { 1 \super st movement }
    \line { 1 \normal-size-super st movement
      \sub { (part two) }  }
  }
}
@end lilypond

@cindex fonte, famille

Le mode @emph{markup} vous permet de sélectionner d'autres familles de
fontes. Par défaut, LilyPond utilise une police avec empattement, 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.

@lilypond[quote,verbatim]
\markup {
  \column {
    \line { Act \number 1 }
    \line { \sans { Scene I. } }
    \line { \typewriter { Verona. An open place. } }
    \line { Enter \serif Valentine and Proteus. }
  }
}
@end lilypond

@noindent
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 @ref{New dynamic marks} et @ref{Manual repeat marks}.

@c \concat is actually documented in Align (it is not
@c a font-switching command). But we need it here. -vv

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 :

@lilypond[quote,verbatim]
\markup {
  \column {
    \line {
      \concat { 1 \super st }
      movement
    }
    \line {
      \concat { \dynamic p , }
      \italic { con dolce espressione }
    }
  }
}
@end lilypond

Une liste des différentes commandes permettant de changer de fonte ou
d'utiliser des fontes personnalisées est disponible à l'annexe
@ref{Font markup}.

Pour savoir comment personnaliser des fontes, reportez-vous au chapitre
@ref{Fonts}.

@predefined
@funindex \teeny
@funindex \tiny
@funindex \small
@funindex \normalsize
@funindex \large
@funindex \huge
@funindex \smaller
@funindex \larger

@code{\teeny},
@code{\tiny},
@code{\small},
@code{\normalsize},
@code{\large},
@code{\huge},
@code{\smaller},
@code{\larger}.
@endpredefined

@morerefs
Manuel de notation :
@ref{Font markup,Fonte},
@ref{Fonts},
@ref{Manual repeat marks},
@ref{New dynamic marks}.

Fichiers d'initialisation :
@file{scm/define-markup-commands.scm}.

Morceaux choisis :
@rlsrnamed{Text,Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs

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


@node Text alignment
@subsection Alignement du texte

@cindex texte, alignement
@cindex alignement du texte
@cindex alignement des @emph{markups}
@cindex @emph{markups}, alignement

Cette partie traite de la manière de positionner du texte en mode
@emph{markup}. On déplace l'intégralité d'un objet @emph{markup} en
utilisant la syntaxe décrite au chapitre @rlearningnamed{Moving objects,
Déplacement d'objets}.

@cindex texte, alignement horizontal
@cindex alignement horizontal du texte

@funindex \left-align
@funindex \center-align
@funindex \right-align

Les objets de type @emph{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 @emph{markups}. Cet exemple indique aussi
différentes syntaxes pour les commandes d'alignement.

@lilypond[quote,verbatim]
\relative {
  d''1-\markup { poco }
  f
  d-\markup { \left-align poco }
  f
  d-\markup { \center-align { poco } }
  f
  d-\markup \right-align { poco }
}
@end lilypond

@funindex \halign

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

@lilypond[quote,verbatim]
\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 }
}
@end lilypond

@cindex décalage horizontal dans un @emph{markup}
@cindex @emph{markup} et décalage horizontal
@funindex \hspace

Enfin, les mots et tout autre objet peuvent se déplacer horizontalement
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 comme dans
l'exemple ci-dessous :

@lilypond[quote,verbatim]
\relative {
  d''1-\markup { poco }
  f
  d-\markup \concat { \with-color #darkred \box \hspace #4 poco }
  f
  d-\markup \concat { \with-color #darkred \box \hspace #-4 poco }
  f
  d-\markup \concat { \with-color #darkred \box \hspace #10 poco }
}
@end lilypond

@noindent
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 @emph{markup}, comme indiqué par exemple au chapitre @ref{Text
marks}.

@cindex texte, alignement vertical
@cindex alignement vertical du texte

@funindex \raise
@funindex \lower

@c QUERY Should the function of ``\null'' be clarified? rp

L'alignement vertical est quant à lui un peu plus compliqué. Comme nous
l'avons vu ci-avant, les objets @emph{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 @emph{markup}. En pareil cas,
l'élément à déplacer doit être précédé d'un « point d'ancrage » -- un
autre élément du @emph{markup} ou un objet invisible. L'exemple qui suit
illustre ces deux possibilités. Vous noterez par ailleurs que le dernier
@emph{markup}, dépourvu de point d'ancrage, n'est de ce fait pas
déplacé.

@lilypond[quote,verbatim]
\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
}
@end lilypond

@funindex \general-align
@funindex \translate
@funindex \translate-scaled

Certaines commandes permettent de régler l'alignement des objets
textuels en mode @emph{markup}, tant au niveau horizontal que vertical.

@lilypond[quote,verbatim]
\relative {
  d'2^\markup {
    Acte I
    \translate #'(2 . 2) "Scène 1"
  }
  a'
  g_\markup {
    \general-align #Y #5 \bold "Très modéré"
  }
  a
  d,^\markup \translate-scaled #'(-3 . 2) \teeny {
   "Une forêt."
  }
  a'4 a g2 a
}
@end lilypond

@cindex décalage vertical dans un @emph{markup}
@cindex @emph{markup} et décalage vertical
@funindex \vspace

En raison de la manière dont est implémenté le colonage, @code{\vspace}
@strong{ne peut pas} s'utiliser pour bouger arbitrairement vers le haut
ou le bas des objets d'un @emph{markup} @code{\column}. La naïveté de
l'approche suivante est donc vouée à l'échec.

@lilypond[quote,verbatim]
\relative {
  d'2^\markup {
    Acte I
    \column {
      \vspace #-2
      "Scène 1"
    }
  }
  a'
  g_\markup \column {
    \vspace #1
    "Très modéré"
  }
  a
  d,^\markup \column {
    "Une forêt."
    \vspace #2
  }
  a'4 a g2 a
}
@end lilypond

Ce qui est fonctionnel consiste à insérer @code{\vspace} entre deux
objets à l'étendue non nulle.

@lilypond[quote,verbatim]
\relative {
  d'2^\markup {
    Acte I
    \column {
      " "
      \vspace #-2
      "Scène 1"
    }
  }
  a'
  g_\markup \column {
    " "
    \vspace #1
    "Très modéré"
  }
  a
  d,^\markup \column {
    "Une forêt."
    \vspace #2
    " "
  }
  a'4 a g2 a
}
@end lilypond

@cindex multiligne, @emph{markup}
@cindex @emph{markup} multiligne
@cindex multiligne, texte
@cindex texte multiligne
@cindex texte en colonnes
@cindex colonnes de texte

@funindex \column
@funindex \center-column

Un objet de type @emph{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.

@lilypond[quote,verbatim]
\markup {
  \column {
    a
    "b c"
    \line { d e f }
  }
  \hspace #10
  \center-column {
    a
    "b c"
    \line { d e f }
  }
}
@end lilypond

@cindex centrage du texte sur la page
@cindex texte, centrage sur la page
@cindex @emph{markup}, centrage sur la page

@funindex \fill-line

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 @emph{markup}.

@lilypond[quote,verbatim]
\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 }
}
@end lilypond

@cindex texte, largeur de ligne
@cindex @emph{markup}, largeur de ligne

@funindex line-width

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

@lilypond[quote,verbatim]
\markup {
  \column {
    \fill-line { left center right }
    \null
    \override #'(line-width . 30)
    \fill-line { left center right }
  }
}
@end lilypond

@cindex plusieurs lignes de texte
@cindex justifié, texte
@cindex texte justifié
@cindex texte sur plusieurs lignes
@cindex @emph{markup}, texte au kilomètre
@cindex @emph{markup}, texte justifié

@funindex \wordwrap
@funindex \justify

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 :

@lilypond[quote,verbatim]
\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)
    }
  }
}
@end lilypond

@cindex commandes d'alignement du texte
@cindex @emph{markup}, commandes d'alignement du texte
@cindex alignement du texte, commandes

Une liste des différentes commandes permettant d'aligner du texte en
mode @emph{markup} est disponible à l'annexe @ref{Markup for text
alignment}.

@morerefs
Manuel d'initiation :
@rlearningnamed{Moving objects, Déplacement d'objets}.

Manuel de notation :
@ref{Markup for text alignment,Alignement},
@ref{Text marks}.

Fichiers d'initialisation :
@file{scm/define-markup-commands.scm}.

Morceaux choisis :
@rlsrnamed{Text,Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs


@node Graphic notation inside markup
@subsection Éléments graphiques dans du texte formaté

@cindex graphisme, tracé
@cindex tracé d'objet graphique
@cindex graphique, tracé d'objet
@cindex intégration d'objet graphique
@cindex objet graphique, tracé

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

@cindex décoration du texte
@cindex encadrement du texte
@cindex texte, encadrement
@cindex texte, décoration
@cindex @emph{markup}, ornementation du texte
@cindex @emph{markup}, encadrement du texte

@funindex \box
@funindex \circle
@funindex \rounded-box
@c '@funindex \bracket' is auto-generated, too
@funindex \bracket
@funindex \hbracket

Certaines commandes de @emph{markup} permettent d'ornementer des
éléments textuels avec des graphismes, à l'instar de l'exemple
suivant :

@lilypond[quote,verbatim]
\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
  }
}
@end lilypond

@cindex espacement autour du texte
@cindex texte et rembourrage
@cindex @emph{markup}, rembourrage du texte

@funindex \pad-markup
@funindex \pad-x
@funindex \pad-x-left
@funindex \pad-x-right
@funindex \pad-to-box
@funindex \pad-around

Certaines directives peuvent nécessiter d'accroître l'espacement autour
du texte -- voir l'annexe @ref{Markup for text alignment} pour une liste
des différentes commandes particulières au mode @emph{markup} ainsi que
leur description.

@lilypond[quote,verbatim,line-width=14\cm]
\markup \fill-line {
  \center-column {
    \box \pad-x-left #3 "Charles Ives"
    \box \pad-x-right #3 "(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."
}
@end lilypond

@cindex graphisme dans la notation
@cindex symbole non musical
@cindex non musical, symbole
@cindex notation et graphisme

@funindex \combine
@funindex \draw-circle
@funindex \filled-box
@funindex \triangle
@funindex \draw-line
@funindex \arrow-head

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 @emph{markup}.

@lilypond[quote,verbatim]
\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
  }
}
@end lilypond

@cindex intégration de graphique
@cindex image, intégration
@cindex graphique, intégration
@cindex postscript

@funindex \epsfile
@funindex \postscript

Des fonctionnalités graphiques avancées vous permettent même d'inclure
dans une partition un fichier image converti au format PostScript
encapsulé (extension @code{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 :

@lilypond[quote,verbatim,fragment]
c'1^\markup {
  \combine
    \epsfile #X #10 "./context-example.eps"
    \with-dimensions #'(-0.5 . 10.5) #'(-2 . 8)
    \postscript "
      -0.3 1 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'
@end lilypond

L'annexe @ref{Graphical markup} répertorie les différentes commandes en
matière de graphisme.

@morerefs
Manuel de notation :
@ref{Markup for text alignment,Alignement},
@ref{Editorial annotations},
@ref{Dimensions},
@ref{Graphical markup,Graphique}.

Fichiers d'initialisation :
@file{scm/define-markup-commands.scm},
@file{scm/stencil.scm}.

Morceaux choisis :
@rlsrnamed{Text,Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs


@node Music notation inside markup
@subsection Notation musicale dans du texte formaté

@cindex notation dans un @emph{markup}
@cindex musique dans un @emph{markup}
@cindex @emph{markup}, inclusion de musique

Divers éléments de notation peuvent orner une partition, au moyen d'un
objet @emph{markup}.

Notes et altérations sont données à l'aide d'instructions
@emph{markup} :

@lilypond[quote,verbatim,fragment]
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'
@end lilypond

Le mode @emph{markup} permet d'accéder à d'autres objets de
notation :

@lilypond[quote,verbatim]
\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
  }
}
@end lilypond

En règle générale, tout symbole musical peut être inclus dans un
@emph{markup}, comme le montre l'exemple qui suit. Ces différents
symboles sont répertoriés dans l'annexe @ref{The Emmentaler font}.

@lilypond[quote,verbatim]
\relative {
  c''2
  c'^\markup { \musicglyph "eight" }
  c,4_\markup { \left-brace #40 }
  c,8._\markup { \musicglyph "clefs.G_change" }
  c16
  c2^\markup { \musicglyph "timesig.neomensural94" }
}
@end lilypond

Le mode @emph{markup} supporte aussi les diagrammes spécifiques à
certains instruments :

@lilypond[quote,verbatim]
\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"
  }
}
@end lilypond

@c The accordion diagram is actually taken from a snippet.

@noindent
La documentation sur ces diagrammes se trouve à l'annexe
@ref{Instrument-specific markup}.

@cindex partition incluse dans un @emph{markup}
@cindex @emph{markup}, inclusion de partition

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

@lilypond[quote,verbatim]
\relative {
  c'4 d^\markup {
    \score {
      \relative { c'4 d e f }
      \layout { }
    }
  }
  e f |
  c d e f
}
@end lilypond

Les différentes commandes @emph{markup} relatives à la notation musicale
sont répertoriées à l'annexe @ref{Markup for music and musical symbols}.

@morerefs
Manuel de notation :
@ref{The Emmentaler font},
@ref{Markup for music and musical symbols, Musique}.

Fichiers d'initialisation :
@file{scm/define-markup-commands.scm},
@file{scm/fret-diagrams.scm},
@file{scm/harp-pedals.scm}.

Morceaux choisis :
@rlsrnamed{Text,Texte}.

Référence des propriétés internes :
@rinternals{TextScript}.
@endmorerefs

@knownissues
L'espacement vertical d'un @code{\score} contenu dans un objet
@emph{markup} se contrôle par la propriété @code{baseline-skip}. Tout
réglage au sein d'un bloc @code{\paper} est ignoré.


@node Fonts
@section Fontes

@cindex Pango
@cindex FontConfig

La gestion des fontes dans LilyPond est assurée par plusieurs
bibliothèques : @uref{https://fontconfig.or, @emph{FontConfig}} se
charge de répertorier les différentes fontes disponibles ; quant à
@uref{https://pango.org, @emph{Pango}}, elle se charge plus
particulièrement de leur rendu.

Ce chapitre indique comment accéder aux fontes et polices de caractère
dans LilyPond. Vous y apprendrez aussi comment changer de fonte en cours
de partition.


@node Unsupported font formats
@subsection Formats de fontes non pris en charge

Quelques précisions pour commencer : LilyPond crée le PDF final à partir
d'un fichier PostScript intermédiaire. Par voie de conséquence, certains
formats de fontes ne peuvent être utilisés parce que PostScript, en tant
que standard ancien ne bénéficiant plus d'aucune mise à jour, ne les
prend pas en charge. Voici une liste de formats de fonte qui sont
déficients.

@table @b
@item CFF2
@cindex CFF2, format de fonte
@cindex format de fonte, CFF2
@cindex OpenType, fonte (@file{.otf})
Ce format de fonte est devenu ces dernières années le format par défaut
des fontes OpenType (@file{.otf}). Bien que son prédécesseur (CFF, qui
utilise aussi une extension @file{.otf}) soit pris en charge, le CFF2 --
plus compact -- ne l'est pas. LilyPond émet un avertissement en console
s'il rencontre une telle fonte, et la conversion en PDF échouera ou bien
certains glyphes de la fonte seront absents du PDF.

@item Font Variations
@cindex format de fonte, Font Variations (VF)
@cindex Variation Font, format (VF)
De telles fontes comportent habituellement un « VF » dans leur nom ;
elles ne sont malheureusement pas prises en charge, qu'elles soient en
TrueType ou en OpenType, et sont donc exclues d'entrée de jeu.

@item fontes colorisées
@cindex fontes en couleur
@cindex colorisée, fonte
@cindex fontes pour Emojis
@cindex Emoji, fontes
Ces fontes ne sont pas prises en charge, ce qui concerne tout
particulièrement les fontes d'Emojis échelonnables. Toutefois, certaines
fontes contiennent aussi des versions en noir et blanc des Emojis qui
pourraient être acceptés, dès lors qu'elles sont dans un format de fonte
pris en charge.

@item OpenType collections
@cindex fonte, format OTC
@cindex format de fonte OTC
@cindex OpenType collections (@file{.otc})
Il s'agit d'un format de type conteneur (habituellement avec une
extension @file{.otc}) où de multiples fontes sont dans un même fichier.
Il est à ce jour souvent utilisé en dernier ressort par le système
d'exploitation lorsqu'aucune fonte ne convient, quelle qu'en soit la
raison.

@item fontes bitmap
@cindex format de fonte bitmap
@cindex bitmap, format de fonte
Ce format n'est absolument pas pris en charge et est automatiquement
exclu avant même que LilyPond consulte la liste des fontes disponibles.
Ceci inclut certaines anciennes fontes Emoji colorisées.
@end table

De nombreuses fontes sont disponibles aussi bien au format TrueType que
OpenType. Si la version @file{.otf} échoue, il faut essayer la version
@file{.ttf}. Lorsqu'aucune alternative à une fonte CFF2 n'est
disponible, on peut tenter l'option de LilyPond en ligne de commande
@option{-dbackend=@/cairo} ; actuellement expérimental, ce moteur
contourne l'étape PostScript et crée directement la sortie PDF, ce qui
permet de prendre en charge CFF2 (et aussi les OpenType collections).


@node Finding fonts
@subsection Localisation des fontes

@cindex fonte, généralités
@cindex fonte, localisation
@cindex fonte, fichiers externes

En sus de celles déjà installées sur le système, d'autres fontes peuvent
s'ajouter au répertoire de FontConfig, ce qui les rendra donc
disponibles pour les partitions LilyPond, à l'aide des commandes
suivantes :

@example
#(ly:font-config-add-font "@var{chemin/au/fichier-fonte}")
#(ly:font-config-add-directory "@var{chemin/au/dossier/}")
@end example

@noindent
Le chemin fourni à ces deux commandes peut être absolu ou relatif, ce
qui permet de compiler une partition sur n'importe quel système dans la
mesure où les fichiers de fontes concernés sont transmis avec les
fichiers sources de la partition.

L'instruction @code{#(ly:font-config-display-fonts)} permettra de
vérifier que la fonte requise est bien détectée par FontConfig. Elle
affiche en console la liste exhaustive des fontes du système ainsi que
le nom exact qu'il faudra transmettre à LilyPond ; ce nom peut être
différent du nom du fichier. Par ailleurs, lancer @command{lilypond
-dshow-available-fonts} dans un terminal produira le même effet.


@node Font families
@subsection Familles de fontes

Vous disposez de trois familles de fontes@footnote{Dans sa forme la plus
simple, une @emph{famille de fonte} contient habituellement les styles
de police romain, italique, gras et gras italique.} textuelles : une
police avec empattement (@emph{sérif}), une police sans empattement
(@emph{sans} sérif) et une police à chasse fixe (monospace ou
@emph{typewriter}). En fonction du moteur de rendu utilisé, ces familles
seront mappées selon des alias différents.

Pour le moteur @code{svg} :

@indentedblock
@multitable {@b{Famille générique}} {@b{ Famille de fonte SVG}}
@headitem Famille générique @tab Famille de fonte SVG
@item @emph{serif} @tab serif
@item @emph{sans} @tab sans-serif
@item @emph{typewriter} @tab monospace
@end multitable
@end indentedblock

@noindent
« serif », « sans-serif » et « monospace » sont des « generic-family »
au titre des spécifications SVG et CSS.

Pour les autres moteurs :

@indentedblock
@multitable @columnfractions .17 .30 .45
@headitem Famille générique
          @tab Fonte par défaut (alias)
                     @tab Listes de définition des alias
@item @emph{serif}
@tab LilyPond Serif
@tab C059,
     Century SchoolBook URW,
     Century Schoolbook L,
     TeX Gyre Schola,
     DejaVu Serif,
     @dots{},
     serif
@item @emph{sans}
@tab LilyPond Sans Serif
@tab Nimbus Sans,
     Nimbus Sans L,
     TeX Gyre Heros,
     DejaVu Sans,
     @dots{},
     sans-serif
@item @emph{typewriter}
@tab LilyPond Monospace
@tab Nimbus Mono PS,
     Nimbus Mono,
     Nimbus Mono L,
     TeX Gyre Cursor,
     DejaVu Sans Mono,
     @dots{},
     monospace
@end multitable
@end indentedblock

@noindent
Lorsqu'un caractère est absent de la première fonte listée, il sera
remplacé par celui de la fonte suivante.

Il est à noter que les fontes URW distribuées avec LilyPond (« C059 »,
« Nimbus Mono PS » et « Nimbus Sans ») disposent d'une particularité :
par défaut, et en complément des ligatures standard telles que « fl » ou
« ffi », elles substituent la chaîne « Nr. » par le caractère « Numero
Sign » (U+2116) dès lors que le script « latn » est sélectionné. On peut
toutefois s'en préserver temporairement par l'insertion d'un caractère
de largeur nulle et non jointant (@emph{zero-width non-joiner} ZWNJ,
U+200C) entre les caractères « N » et « r ». Les lignes ci-dessous
auront pour conséquence que LilyPond insérera toujours un caractère
@emph{ZWNJ}.

@example
\paper @{
  #(add-text-replacements!
      `(("Nr." . ,(format #f "N~ar." (ly:wide-char->utf-8 #x200C)))))
@}
@end example

« LilyPond Serif », « LilyPond Sans Serif » et « LilyPond Monospace »
sont des alias de fonte définis dans le fichier de configuration de
FontConfig spécifique à LilyPond @file{00-lilypond-fonts.conf} qui se
trouve normalement dans le répertoire
@file{/usr/local/share/lilypond/@version{}/fonts}.

Chaque famille dispose en principe de différents styles et niveaux de
graisse. L'exemple qui suit illustre la manière de changer la famille,
le style, la graisse ou la taille. Notez bien que l'argument fourni à
@code{font-size} correspond à la correction à apporter à la taille par
défaut.

@lilypond[quote,verbatim,fragment]
\override Score.TextMark.font-family = #'typewriter
\textMark "Ouverture"
\override Voice.TextScript.font-shape = #'italic
\override Voice.TextScript.font-series = #'bold
d''2.^\markup "Allegro"
\override Voice.TextScript.font-size = -3
c''4^smaller
@end lilypond

@noindent
Cette syntaxe s'applique aussi en mode @emph{markup}, bien que celui-ci
dispose d'une syntaxe allégée comme nous l'avons vu dans @ref{Selecting
font and font size} :

@lilypond[quote,verbatim]
\markup {
  \column {
    \line {
      \override #'((font-shape . italic) (font-size . 4))
      Idomeneo,
    }
    \line {
      \override #'(font-family . typewriter) {
        \override #'(font-series . bold) re
        di
      }
      \override #'(font-family . sans) Creta
    }
  }
}
@end lilypond


@node Font features
@subsection Fonctionnalités des fontes

@cindex OpenType, fonctionnalités
@cindex fonctionnalités OpenType

Le recours aux fontes OpenType permet d'utiliser certaines
fonctionnalités de ces fontes.@footnote{La sélection de scripts ou de
langages des fontes OpenType n'est à ce jour par prise en charge.}
Toutefois, les fontes OpenType ne disposent pas toutes de l'intégralité
de ces fonctionnalités. Dans le cas où la fonctionnalité demandée n'est
pas disponible dans la fonte choisie, cette fonctionnalité est tout
bonnement ignorée. Les exemples ci-dessous utilisent « TeX Gyre
Schola », autrement dit le style romain de la famille.

@lilypond[quote,verbatim]
\paper {
  property-defaults.fonts.serif = "TeX Gyre Schola"
}

\markup "Style normal : Hello HELLO"

\markup \caps "Petites capitales : Hello"

\markup \override #'(font-features . ("smcp"))
  "Vraies petites capitales : Hello"

\markup "Style numérique normal : 0123456789"

\markup \override #'(font-features . ("onum"))
  "Style numérique ancien : 0123456789"

\markup \override #'(font-features . ("salt 0"))
  "Alternative stylistique 0 : εφπρθ"

\markup \override #'(font-features . ("salt 1"))
  "Alternative stylistique 1 : εφπρθ"

\markup \override #'(font-features . ("onum" "smcp" "salt 1"))
  "Fonctionnalités multiples : Hello 0123456789 εφπρθ"
@end lilypond

Une liste exhaustive des fonctionnalités des fontes OpenType est
disponible à l'adresse
@uref{https://www.microsoft.com/typography/otspec/featurelist.htm}, et
les différents types de fonctionnalités des fontes OpenType
sont recensés dans le message
@uref{https://lists.gnu.org/archive/html/lilypond-devel/2017-08/msg00004.html}.

@morerefs
Manuel de notation :
@ref{The Emmentaler font},
@ref{Music notation inside markup},
@ref{Rotating objects},
@ref{Selecting font and font size},
@ref{Font markup,Fonte}.
@endmorerefs


@node Changing fonts
@subsection Choix des fontes

On peut tout à fait modifier le jeu de polices par défaut de LilyPond.

@cindex polices, choix par défaut
@cindex fontes, choix par défaut
@funindex fonts

@lilypond[verbatim,quote]
\paper  {
  property-defaults.fonts.serif = "Linux Libertine O"
  property-defaults.fonts.sans = "DejaVu Sans"
  property-defaults.fonts.typewriter = "DejaVu Sans Mono"
}

\relative c'{
  c1-\markup {
    serif,
    \sans sans,
    \typewriter typewriter. }
}
@end lilypond

Il est aussi possible de substituer les fontes musicales à l'aide de la
même syntaxe -- @pxref{Replacing the notation font}.

Il est possible de changer de fonte pour un objet particulier ou une
partie d'un @emph{markup} à l'aide d'une dérogation à la propriété
@code{fonts}. Dans l'exemple suivant, la police des « têtes de note »
normales de la tablature est changée -- c'est normalement une famille
@code{serif}-- alors que celles dessinées en forme de croix conservent
la police par défaut (de la famille @code{music}).

@lilypond[verbatim,quote]
\layout {
  \override TabVoice.TabNoteHead.property-defaults.fonts.serif =
    "Linux Libertine O"
}

\new TabStaff { c' d' e' \deadNote c' }
@end lilypond

Et voici comment opérer sur cette propriété @code{fonts} dans le cadre
d'un @emph{markup} :

@lilypond[verbatim,quote]
\markup \override #'(fonts . ((serif . "Linux Libertine O")
                              (typewriter . "DejaVu Sans Mono"))) {
  Copyright © John Doe \typewriter john@doe.org
}
@end lilypond

@morerefs
Manuel de notation :
@ref{Font markup,Fonte},
@ref{Replacing the notation font},
@ref{Font families},
@ref{Finding fonts},
@ref{Selecting font and font size}.
@endmorerefs
