[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

1.8 Texte

@translationof Text

[image of music]

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


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

1.8.1 Ajout de texte

@translationof Writing text

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

Note : 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 Codage du texte.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Vue d’ensemble des objets textuels

@translationof Text objects overview

Les objets textuels se saisissent soit comme de simples chaînes de caractères entre quillemets informatique, soit dans un bloc \markup qui acceptte une mise en forme fine du texte et des réhaussements graphiques comme indiqué dans Mise en forme du texte.

En tant que tels, les blocs markup peuvent s’utiliser :

De nombreux autres objets basés sur du texte peuvent se saisir sous forme de bloc markup même si ce n’esp pas leur usage premier.

Il est en fait possible d’utiliser \markup pour personnaliser l’apparence de pratiquement n’importe quel objet graphique (grob) en appliquant une dérogation soit à sa propriété text s’il en dispose ou de sa propriété stencil. Une partie de la logique qui rend ceci possible est expliquée dans (essay)Flexibilité architecturale section ‘Flexibilité architecturale’ dans Essai.

L’exemple qui suit illustre l’ubiquité des blocs 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.

 
\header { title = \markup "Header" }

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

\markup \box "Top-level markup"

\score {
  <<
    \new ChordNames
    \with {
      majorSevenSymbol = \markup "majorSevenSymbol"
    }
    \chordmode { c1:maj7 }
    \new Staff {
      \tempo \markup "MetronomeMark"
      \mark \markup \smaller "RehearsalMark"
      \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 \text "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 }
  >>
}

[image of music]

Voir aussi

Manuel de notation : Commentaires textuels, Doigtés, Gravure des accords, Indication textuelle avec extension, Indications textuelles, Info-bulle, Mise en forme du texte, Nuances, Personnalisation des indications de nuance, Texte indépendant, Vue d’ensemble de la musique vocale.

Essai sur la gravure musicale automatisée : (essay)Flexibilité architecturale section ‘Flexibilité architecturale’ dans Essai.

Morceaux choisis : (snippets)Text section ‘Text’ dans Morceaux choisis.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Commentaires textuels

@translationof Text scripts

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. Direction et positionnement.

 
\relative { a'8^"pizz." g f e a4-"scherz." f }

[image of music]

Cette syntaxe est en fait un raccourci. Des constructions plus élaborées d’annotation peuvent être obtenues en ayant recours à un bloc \markup et selon les préceptes énoncés dans Mise en forme du texte.

 
\relative {
  a'8^\markup { \italic pizz. } g f e
  a4_\markup { \tiny scherz. \bold molto } f }

[image of music]

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.

 
\relative {
  a'8^"pizz." g f e
  \textLengthOn
  a4_"scherzando" f
}

[image of music]

En plus d’indications textuelles, les notes peuvent se voir attacher des articulations, comme indiqué au chapitre Articulations et ornements.

Pour de plus amples détails sur la manière de combiner indications textuelles et articulations, reportez-vous au chapitre (learning)Positionnement des objets section ‘Positionnement des objets’ dans Manuel d’initiation.

Commandes prédéfinies

\textLengthOn, \textLengthOff.

Voir aussi

Manuel d’initiation : (learning)Positionnement des objets section ‘Positionnement des objets’ dans Manuel d’initiation.

Manuel de notation : Articulations et ornements, Direction et positionnement, Mise en forme du texte.

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.

Problèmes connus et avertissements

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

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

[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Indication textuelle avec extension

@translationof Text spanners

Certaines indications d’interprétation comme rallentando, accelerando ou 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 », se dessinent entre deux notes à l’aide de la syntaxe suivante :

 
\relative {
  \override TextSpanner.bound-details.left.text = "rit."
  b'1\startTextSpan
  e,\stopTextSpan
}

[image of music]

Le texte à imprimer est spécifié en tant que propriété de l’objet 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 \markup – voir Mise en forme du texte.

 
\relative {
  \override TextSpanner.bound-details.left.text =
    \markup { \upright "rit." }
  b'1\startTextSpan c
  e,\stopTextSpan
}

[image of music]

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 Styles de ligne.

Commandes prédéfinies

\textSpannerUp, \textSpannerDown, \textSpannerNeutral.

Morceaux choisis

Extensions de nuance postfix

Les lignes d’extension des commandes \cresc, \dim et \decresc peuvent désormais être personnalisées facilement sous forme d’opérateurs postfix. Soufflets et (de)crescendos peuvent cohabiter. \< et \> produiront par défaut des soufflets, alors que \cresc, etc. produiront une indication textuelle avec extension.

 
% Some sample text dynamic spanners, to be used as postfix operators
crpoco =
#(make-music 'CrescendoEvent
             'span-direction START
             'span-type 'text
             'span-text "cresc. poco a poco")

\relative c' {
  c4\cresc d4 e4 f4 |
  g4 a4\! b4\crpoco c4 |
  c4 d4 e4 f4 |
  g4 a4\! b4\< c4 |
  g4\dim a4 b4\decresc c4\!
}

[image of music]

Personnalisation des extenseurs de nuance postfix

Il s’agit de fonctions postfix pour personnaliser l’extension des crescendos textuels. L’extension devrait débuter sur la première note de la mesure. Il faut utiliser -\mycresc – comme une articulation – sous peine que le départ de l’extension n’apparaisse qu’à la note suivante.

 
% Two functions for (de)crescendo spanners where you can explicitly give the
% spanner text.
mycresc =
#(define-music-function (mymarkup) (markup?)
   (make-music 'CrescendoEvent
               'span-direction START
               'span-type 'text
               'span-text mymarkup))
mydecresc =
#(define-music-function (mymarkup) (markup?)
   (make-music 'DecrescendoEvent
               'span-direction START
               'span-type 'text
               'span-text mymarkup))

\relative c' {
  c4-\mycresc "custom cresc" c4 c4 c4 |
  c4 c4 c4 c4 |
  c4-\mydecresc "custom decresc" c4 c4 c4 |
  c4 c4\! c4 c4
}

[image of music]

Voir aussi

Manuel de notation : Mise en forme du texte, Nuances, Styles de ligne.

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis, (snippets)Expressive marks section ‘Signes d’interprétation’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextSpanner section ‘TextSpanner’ dans Référence des propriétés internes.

Problèmes connus et avertissements

LilyPond ne peut traiter qu’un seul extenseur à la fois par voix.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Indications textuelles

@translationof Text marks

La commande \mark est tout d’abord conçue pour les Indications de repère.

 
\relative {
  \mark "Verse"
  c'2 g'
  \bar "||"
  \mark "Chorus"
  g2 c,
  \bar "|."
}

[image of music]

Cette syntaxe rend possible l’adjonction de n’importe quel texte à une barre de mesure. Ce texte peut être mis en forme de différentes manières dès lors qu’est utilisé un bloc \markup, comme indiqué au chapitre Mise en forme du texte.

 
\relative {
  <c' e>1
  \mark \markup { \italic { colla parte } }
  <d f>2 <e g>
  <c f aes>1
}

[image of music]

Elle peut aussi servir à insérer des signes de coda ou de segno, ou bien un point d’orgue, au-dessus d’une barre de mesure. Couplez-la alors à la commande \markup pour avoir accès au symbole approprié, selon les indications contenues au chapitre Notation musicale dans du texte formaté.

 
\relative {
  <bes' f>2 <aes d>
  \mark \markup { \musicglyph "scripts.ufermata" }
  <e g>1
}

[image of music]

Le résultat de \mark n’apparaîtra que sur la portée supérieure d’un système. Si vous introduisez la commande \mark au moment d’une barre de mesure, la marque se placera au-dessus de la barre. Si vous y faites appel au milieu d’une mesure, cette marque sera positionnée entre les notes. Si elle intervient en début de ligne, elle sera placée juste avant la première note de cette portée. Enfin, une marque qui tomberait sur un saut de ligne sera imprimée au début de la ligne suivante.

 
\relative c'' {
  \mark "Allegro"
  c1 c
  \mark "assai" \break
  c  c
}

[image of music]

Commandes prédéfinies

\markLengthOn, \markLengthOff.

Morceaux choisis

Indication d’un repère en fin de ligne

Les indications de repère peuvent être imprimées à la fin d’une ligne plutôt qu’en tête de la suivante. L’alignement sur la barre de mesure devra alors s’effectuer par l’extrémité droite de l’indication.

 
\relative c'' {
  g2 c
  d,2 a'
  \once \override Score.RehearsalMark.break-visibility = #end-of-line-visible
  \once \override Score.RehearsalMark.self-alignment-X = #RIGHT
  \mark "D.C. al Fine"
  \break
  g2 b,
  c1 \bar "||"
}

[image of music]

Impression des indications sur toutes les portées d’un système

Bien que ces indications textuelles ne soient habituellement imprimées qu’au niveau de la portée supérieure d’un système, leur affectation peut être répercutée à chacune des portées.

 
\score {
  <<
    \new Staff { c''1 \mark "molto" c'' }
    \new Staff { c'1 \mark "molto" c' }
  >>
  \layout {
    \context {
      \Score
      \remove "Mark_engraver"
      \remove "Staff_collecting_engraver"
    }
    \context {
      \Staff
      \consists "Mark_engraver"
      \consists "Staff_collecting_engraver"
    }
  }
}

[image of music]

Voir aussi

Manuel de notation : Indications de repère, La fonte Emmentaler, Mise en forme du texte, Notation musicale dans du texte formaté.

Morceaux choisis: (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)MarkEvent section ‘MarkEvent’ dans Référence des propriétés internes, (internals)Mark_engraver section ‘Mark_engraver’ dans Référence des propriétés internes, (internals)RehearsalMark section ‘RehearsalMark’ dans Référence des propriétés internes.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Texte indépendant

@translationof Separate text

Un bloc \markup peut exister en lui-même, indépendamment de tout bloc \score, et venir en préambule par exemple – voir le chapitre Structure de fichier à ce propos.

 
\markup {
  Tomorrow, and tomorrow, and tomorrow...
}

[image of music]

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 Plusieurs partitions dans un même ouvrage.

 
\score {
  c'1
}
\markup {
  Tomorrow, and tomorrow, and tomorrow...
}
\score {
  c'1
}

[image of music]

Les blocs de textes peuvent s’étendre sur plusieurs pages, ce qui 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 Texte avec sauts de page.

Commandes prédéfinies

\markup, \markuplist.

Morceaux choisis

Bloc de texte indépendant sur deux colonnes

L’utilisation de la commande \markup permet de distribuer un bloc de texte indépendant sur plusieurs colonnes.

 
\markup {
  \fill-line {
    \hspace #1
    \column {
      \line { O sacrum convivium }
      \line { in quo Christus sumitur, }
      \line { recolitur memoria passionis ejus, }
      \line { mens impletur gratia, }
      \line { futurae gloriae nobis pignus datur. }
      \line { Amen. }
    }
    \hspace #2
    \column \italic {
      \line { O sacred feast }
      \line { in which Christ is received, }
      \line { the memory of His Passion is renewed, }
      \line { the mind is filled with grace, }
      \line { and a pledge of future glory is given to us. }
      \line { Amen. }
    }
    \hspace #1
  }
}

[image of music]

Voir aussi

Manuel de notation : Mise en forme du texte, Plusieurs partitions dans un même ouvrage, Structure de fichier, Texte avec sauts de page.

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

1.8.2 Mise en forme du texte

@translationof Formatting text

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.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Introduction au formatage de texte

@translationof Text markup introduction

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
}

[image of music]

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
}

[image of music]

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" } }
}

[image of music]

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
}

[image of music]

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 (extending)Fonctions pour markups section ‘Fonctions pour markups’ dans Extension de LilyPond.

Voir aussi

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

Manuel d’extension des fonctionnalités : (extending)Fonctions pour markups section ‘Fonctions pour markups’ dans Extension de LilyPond

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

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Problèmes connus et avertissements

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


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Sélection de la fonte et de la taille

@translationof Selecting font and font size

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
}

[image of music]

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 }
}

[image of music]

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 }
}

[image of music]

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 }
}

[image of music]

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 }
}

[image of music]

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" }

[image of music]

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) }  }
  }
}

[image of music]

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

[image of music]

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 }
    }
  }
}

[image of music]

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 : (notation)Font section ‘Fonte’ dans Manuel de notation, Fontes, Indications de reprise manuelles, Personnalisation des indications de nuance.

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

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.

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.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Alignement du texte

@translationof Text alignment

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 (learning)Déplacement d’objets section ‘Déplacement d'objets’ dans Manuel d’initiation.

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.

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

[image of music]

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 }
}

[image of music]

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 {
    \null
    \lower #4 \bold { Très modéré }
  }
  a
  d,^\markup {
    \raise #4 \italic { Une forêt. }
  }
  a'4 a g2 a
}

[image of music]

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.

 
\relative {
  d'2^\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
}

[image of music]

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 }
  }
}

[image of music]

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 }
}

[image of music]

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 }
  }
}

[image of music]

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)
    }
  }
}

[image of music]

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

Voir aussi

Manuel d’initiation : (learning)Déplacement d’objets section ‘Déplacement d'objets’ dans Manuel d’initiation.

Manuel de notation : (notation)Align section ‘Alignement’ dans Manuel de notation, Indications textuelles.

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

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Éléments graphiques dans du texte formaté

@translationof Graphic notation inside markup

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
  }
}

[image of music]

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."
}

[image of music]

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
  }
}

[image of music]

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'

[image of music]

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

Voir aussi

Manuel de notation : (notation)Align section ‘Alignement’ dans Manuel de notation, Annotations éditoriales, Dimensions, (notation)Graphic section ‘Graphique’ dans Manuel de notation.

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

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Notation musicale dans du texte formaté

@translationof Music notation inside markup

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'

[image of music]

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
  }
}

[image of music]

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" }
}

[image of music]

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"
  }
}

[image of music]

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
}

[image of music]

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

Voir aussi

Manuel de notation : La fonte Emmentaler, (notation)Music section ‘Musique’ dans Manuel de notation, Tout savoir sur les fontes.

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

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.

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


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Texte avec sauts de page

@translationof Page wrapping text

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

[image of music]

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

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 : (extending)Définition d’une nouvelle commande de liste de markups section ‘Définition d'une nouvelle commande de liste de markups’ dans Extension de LilyPond.

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

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.

Référence des propriétés internes : (internals)TextScript section ‘TextScript’ dans Référence des propriétés internes.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

1.8.3 Fontes

@translationof Fonts

Ce chapitre est consacré aux fontes et polices de caractère, à leur gestion. Vous y apprendrez aussi comment changer de fonte en cours de partition.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Tout savoir sur les fontes

@translationof Fonts explained

La gestion des fontes est assurée par plusieurs bibliothèques : FontConfig se charge de répertorier les différentes fontes disponibles ; quant à Pango, elle se charge plus particulièrement de leur rendu.

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

 
#(ly:font-config-add-font "chemin/au/fichier-fonte.otf")

#(ly:font-config-add-directory "chemin/au/dossier/")

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.

Une fois qu’elles ont été détectées, les fontes se sélectionnent selon les méthodes indiquées dans Attribution d’une fonte en particulier et Choix des fontes par défaut. Dès lors que la liste affichée est exhaustive, l’instruction #(ly:font-config-display-fonts) permettra de vérifier quelles fontes auront été détectées ainsi que leur nom exact, celui-ci pouvant être différent du nom du fichier.

Les fontes musicales peuvent se décrire comme un jeu de glyphes spécifiques regroupés dans plusieurs familles. L’exemple qui suit montre la syntaxe à utiliser pour accéder, en mode markup, aux différents glyphes Feta non textuels de LilyPond.

 
a'1^\markup {
  \vcenter {
    \override #'(font-encoding . fetaBraces)
    \lookup "brace120"
    \override #'(font-encoding . fetaText)
    \column { 1 3 sf }
    \override #'(font-encoding . fetaMusic)
    \lookup "noteheads.s0petrucci"
  }
}

[image of music]

Tous ces glyphes, à l’exception des accolades qui sont regroupées dans fetaBraces, sont accessibles avec la syntaxe indiquée dans Notation musicale dans du texte formaté.

Une remarque s’impose au sujet des glyphes contenus dans fetaBraces : chacun d’eux est formé du mot brace auquel est accolé un numéro d’ordre. Lorsque vous désirez imprimer une accolade, vous devez la « chercher » par son numéro d’ordre – d’où la fonction \lookup de l’exemple ci-dessus –, tout en sachant qu’il est compris entre 0 (la plus petite) et 575 (la plus grande). Vous serez souvent amené à procéder par tâtonnement pour arriver au résultat optimal. Par ailleurs, fetaBraces ne comporte que des accolades ouvrantes. Pour obtenir une accolade fermante, il suffit d’appliquer une rotation au glyphe sélectionné, comme indiqué à la rubrique Rotation des objets.

Vous disposez de trois familles de fontes textuelles : roman pour la police sérif ou avec empattement, une police sans empattement (sans sérif) et une police à chasse fixe (monospace ou typewriter).

Pour le moteur svg :

FamilleFonte par défaut
romanserif
sanssans-serif
typewritermonospace

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

Pour les autres moteurs :

FamilleFonte par défaut (alias)Listes de définition des alias
romanLilyPond SerifTeX Gyre Schola, C059, Century SchoolBook URW, Century Schoolbook L, DejaVu Serif, ..., serif
sansLilyPond Sans SerifTeX Gyre Heros, Nimbus Sans, Nimbus Sans L, DejaVu Sans, ..., sans-serif
typewriterLilyPond MonospaceTeX Gyre Cursor, Nimbus Mono PS, Nimbus Mono, Nimbus Mono L, DejaVu Sans Mono, ..., monospace

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 00-lilypond-fonts.conf. Lorsqu’un caractère est absent de la première fonte listée, il sera remplacé par celui de la fonte suivante. Pour plus de détails sur les définitions des alias, consultez le fichier 00-lilypond-fonts.conf dans le répertoire d’installation.

Chaque famille dispose en principe de différents styles et niveaux de gras. 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 à font-size correspond à la correction à apporter à la taille par défaut.

 
\override Score.RehearsalMark.font-family = #'typewriter
\mark \markup "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

[image of music]

Cette syntaxe s’applique aussi en mode markup, bien que celui-ci dispose d’une syntaxe allégée comme nous l’avons vu dans Sélection de la fonte et de la taille :

 
\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
    }
  }
}

[image of music]

Le recours aux fontes OpenType permet d’utiliser certaines fonctionnalités de ces fontes. Toutefois, les fontes OpenType ne disposent pas toutes de l’intégralité de ces fonctions. Dans le cas où la fonctionnalité demandée n’est pas disponible dans la fonte choisie, cette fonctionnalité est tout bonnement ignorée.

 
% Vraies petites capitales
\markup { Style normal : Hello HELLO }
\markup { \caps { Petites capitales : Hello } }
\markup { \override #'(font-features . ("smcp"))
          { Vraies petites capitales : Hello } }

% Styles numériques
\markup { Style numérique normal : 0123456789 }
\markup { \override #'(font-features . ("onum"))
          { Style numérique ancien : 0123456789 } }

% Alternatives stylistiques
\markup { \override #'(font-features . ("salt 0"))
          { Alternative stylistique 0 : εφπρθ } }
\markup { \override #'(font-features . ("salt 1"))
          { Alternative stylistique 1 : εφπρθ } }

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

[image of music]

Une liste exhaustive des fonctionnalités des fontes OpenType est disponible à l’adresse https://www.microsoft.com/typography/otspec/featurelist.htm

Les différents types de fonctionnalité des fontes OpenType sont recensées dans le message http://lists.gnu.org/archive/html/lilypond-devel/2017-08/msg00004.html

En plus de pouvoir jongler entre les différentes fontes prédéfinies, LilyPond vous permet d’en utiliser d’autres, ce qui fait l’objet des deux prochaines parties : Attribution d’une fonte en particulier et Choix des fontes par défaut.

Voir aussi

Manuel de notation : La fonte Emmentaler, Notation musicale dans du texte formaté, Rotation des objets, Sélection de la fonte et de la taille, (notation)Font section ‘Fonte’ dans Manuel de notation.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Attribution d’une fonte en particulier

@translationof Single entry fonts

Vous pouvez utiliser n’importe quelle police installée sur votre système, dès lors qu’elle est accessible par Fontconfig et que vous respectez la syntaxe suivante :

 
\override Staff.TimeSignature.font-name = "Bitstream Charter"
\override Staff.TimeSignature.font-size = #2
\time 3/4

a'1_\markup {
  \override #'(font-name . "Bitstream Vera Sans,sans-serif, Oblique Bold")
    { Vera Oblique Bold }
}

[image of music]

font-name peut se décrire sous la forme d’une liste de polices séparées par une virgule, une espace et une liste de styles. Dès lors que la police présente dans la liste est installée et comporte le glyphe requis, elle sera utilisée ; c’est la suivante dans la liste qui sera utilisée dans le cas contraire.

LilyPond, lancé avec l’option suivante, affiche la liste de toutes les polices disponibles sur votre machine :

 
lilypond -dshow-available-fonts

Voir aussi

Manuel de notation : Choix des fontes par défaut, Tout savoir sur les fontes.

Morceaux choisis : (snippets)Text section ‘Texte’ dans Morceaux choisis.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Choix des fontes par défaut

@translationof Entire document fonts

Vous pouvez tout à fait préférer un autre jeu de polices par défaut que celui de LilyPond. Il vous faudra alors spécifier les différentes familles, en respectant l’ordre roman, sans empattement et monospace, comme dans l’exemple suivant ; ces fontes seront automatiquement mises à l’échelle de la taille globale des portées. Tout comme indiqué dans Attribution d’une fonte en particulier, il peut s’agir d’une liste de polices séparées par une virgule, à ceci près qu’il n’est pas possible de spécifier de style. Pour plus d’explications sur les fontes, relisez Tout savoir sur les fontes.

 
\paper  {
  #(define fonts
    (make-pango-font-tree "Times New Roman"
                          "Nimbus Sans,Nimbus Sans L"
                          "Luxi Mono"
                           (/ staff-height pt 20)))
}

\relative c'{
  c1-\markup {
    roman,
    \sans sans,
    \typewriter typewriter. }
}

[image of music]

Note : make-pango-font-tree réinitialise les fontes musicales à leur valeur par défaut, à savoir Emmentaler.

La syntaxe suivante permet de substituer une fonte particulière tout en laissant les autres à leur valeur par défaut. L’exemple ci-dessous produit les mêmes effets que celui utilisant make-pango-font-tree. De même qu’avec make-pango-font-tree, il est possible de fournir une liste de fontes séparées par une virgule pour les catégories roman, sans et typewriter. Dès lors que la taille de portée reste à sa valeur par défaut de 20 pt, l’instruction #:factor (/ staff-height pt 20) n’est pas nécessaire.

 
\paper {
  #(define fonts
    (set-global-fonts
     #:roman "Times New Roman"
     #:sans "Nimbus Sans,Nimbus Sans L"
     #:typewriter "Luxi Mono"
     #:factor (/ staff-height pt 20) ; inutile si taille de portée par défaut
    ))
}

Il est aussi posible de substituer les fontes musicales. L’exemple ci-dessous produit les mêmes effets que ceux qui précèdent dans la mesure où les fontes musicales sont fixées à leur valeur par défaut. Pour de plus amples informations, voir Changement des fontes musicales.

 
\paper {
  #(define fonts
    (set-global-fonts
     #:music "emmentaler"            ; défaut
     #:brace "emmentaler"            ; défaut
     #:roman "Times New Roman"
     #:sans "Nimbus Sans,Nimbus Sans L"
     #:typewriter "Luxi Mono"
     #:factor (/ staff-height pt 20) ; inutile si taille de portée par défaut
    ))
}

En tout état de cause, tout appel à set-global-fonts réinitialise aussi bien les fontes musicales que les fontes textuelles. Dès lors que l’une de ces catégories n’est pas mentionnée sera utilisée la fonte par défaut y afférente.
Par ailleurs, chaque appel à set-global-fonts affecte les fontes du bloc \book qui le suit ; chaque bloc \book consécutif peut donc disposer de son propre jeu de fontes grâce à un simple appel à set-global-fonts, comme ici :

 
\paper {
  #(define fonts
    (set-global-fonts
     …
    ))
}
\book {
  …
}

\paper {
  #(define fonts
    (set-global-fonts
     …
    ))
}
\book {
  …
}

Voir aussi

Manuel de notation : Attribution d’une fonte en particulier, (notation)Font section ‘Fonte’ dans Manuel de notation, Changement des fontes musicales, Sélection de la fonte et de la taille, Tout savoir sur les fontes.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]

Ce document a été généré le le 13 juillet 2020 par gub en utilisant texi2html 1.82.

Autres langues : English, català, deutsch, español, italiano, 日本語.
À propos de la sélection automatique de la langue.