[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Texte indépendant ] | [Plus haut: Texte ] | [ Introduction au formatage de texte > ] |
1.8.2 Mise en forme du texte
Nous allons voir dans les lignes qui suivent la manière de mettre en forme du texte à l’aide de la syntaxe propre au mode markup.
Introduction au formatage de texte | ||
Sélection de la fonte et de la taille | ||
Alignement du texte | ||
Éléments graphiques dans du texte formaté | ||
Notation musicale dans du texte formaté |
Introduction au formatage de texte
Un bloc \markup
ou \markuplist
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.
En mode markup, les mots s’écrivent tels quels. Un mot isolé ne requiert pas de guillemets.
\markup intenso
Une suite de mots peut se regrouper en les bornant par des guillemets
informatiques "
.
\markup "molto intenso"
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 ‘\’ ou un ‘#’ – 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 }
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 markup est fournie dans l’annexe Commandes pour markup (en anglais).
\markup \italic "string. assai" \markup \with-color "red" intenso
Les commandes de markup peuvent être imbriquées. Un bloc markup sera clôturé dès lors que toutes les commandes qu’il contient auront reçu leurs arguments.
\markup \with-color "red" \italic intenso
Plusieurs expressions markup peuvent se regrouper par des accolades pour former une liste de markups. En l’absence de formatage particulier, les éléments d’une liste de markups sont affichés en enfilade.
\markup { molto \italic intenso }
Certaines commandes n’attendent pas un simple markup, mais une liste de markups, ce qui permet des présentations plus élaborées qu’une simple enfilade.
\markup \center-column { \bold "Des Simplicius Simplicissimus Jugend" "Karl Amadeus Hartmann" }
De plus, certaines commandes ne renvoient pas un markup, mais une liste de markups. Leur résultat peut alors s’utiliser là où on attendait une liste de markup. Une liste de ces commandes est fournie à l’annexe Commandes pour liste de markups (en anglais).
\markup \string-lines "Twinkle, twinkle, little star, How I wonder what you are!"
\markup \center-column \string-lines "Twinkle, twinkle, little star, How I wonder what you are!"
Les éléments d’une liste composite de markups sont tout bonnement traités comme des éléments de la liste principale.
\markup \center-column { \bold "Des Simplicius Simplicissimus Jugend" { Karl Amadeus \smallCaps Hartmann } }
Plusieurs éléments d’une liste de markups seront mis en rang sur
une même ligne s’ils sont regroupés à l’aide de la commande \line
.
\markup \center-column { \bold "Des Simplicius Simplicissimus Jugend" \line { Karl Amadeus \smallCaps Hartmann } }
Le comportement des commandes prenant en argument des markups mais s’appliquent à des listes de markups constitue une fonctionnalité spéciale. Lorsque leur dernier argument est une liste et non un markup, chacun des éléments de cette liste se voit appliquer le traitement de la commande.
\markup \box { Karl Amadeus \smallCaps Hartmann }
Dans ce cas, le résultat est par contre une liste de markup qui peut donc être passée à une commande attendant une liste de markups ou une commande attendant un markup, avec à nouveau le comportement que nous venons de voir.
\markup \center-column \box { Karl Amadeus \smallCaps Hartmann } \markup \rotate #30 \box { Karl Amadeus \smallCaps Hartmann }
L’application de la commande \line
à une liste de markups
permet qu’lle soit traitee comme un argument markup unique.
\markup \box { Karl Amadeus \smallCaps Hartmann } \markup \box \line { Karl Amadeus \smallCaps Hartmann }
Lorsque l’intégralité du contenu d’une expression \markup
est une liste de markups, elle est implicitement reproduite
avec la commande \line
. Ses éléments sont donc empilés
horizontalement et groupés dans un seul bloc de texte insécable.
La commande \markuplist
agit différemment : elle attend une
liste de markups et affiche individuellement les éléments
markups sur la page, les empilant verticalement, autorisant
par ailleurs les sauts de page. L’exemple ci-dessous illustre
cette différence.
\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. }
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 }
La syntaxe de la commande \etc
permet de définir des raccourcis
personnalisés utilisables dans le cadre des commandes \markup
.
\markup reddish = \markup \with-color "tomato" \etc \markup { molto \reddish intenso }
Le fonctionnement interne de ces commandes et la façon d’en implémenter de nouveaux est abordée dans Fonctions pour markups.
Voir aussi
Manuel de notation : Commandes pour liste de markups, Commandes pour markup, Vue d’ensemble des objets textuels.
Manuel d’extension des fonctionnalités : Fonctions pour markups
Fichiers d’initialisation : ‘scm/define-markup-commands.scm’, ‘scm/markup.scm’.
Morceaux choisis : Texte.
Référence des propriétés internes : TextScript.
Problèmes connus et avertissements
Les messages d’erreur de syntaxe en mode markup sont peu explicites.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Introduction au formatage de texte ] | [Plus haut: Mise en forme du texte ] | [ Alignement du texte > ] |
Sélection de la fonte et de la taille
Le mode markup autorise des changements élémentaires de la fonte :
\relative { d''1^\markup { \bold { Più mosso } \italic { non troppo \underline Vivo } } r2 r4 r8 d,_\markup { \italic quasi \smallCaps Tromba } f1 d2 r }
La taille des caractères se modifie, relativement à la taille globale des portées, de différentes manières.
Vous pouvez adopter l’une des tailles prédéfinies, comme ici :
\relative b' { b1_\markup { \huge Sinfonia } b1^\markup { \teeny da } b1-\markup { \normalsize camera } }
Vous pouvez la modifier relativement à sa valeur précédente :
\relative b' { b1_\markup { \larger Sinfonia } b1^\markup { \smaller da } b1-\markup { \magnify #0.6 camera } }
Vous pouvez l’augmenter ou la diminuer par rapport à la taille globale de portée :
\relative b' { b1_\markup { \fontsize #-2 Sinfonia } b1^\markup { \fontsize #1 da } b1-\markup { \fontsize #3 camera } }
Vous pouvez lui attribuer une valeur arbitraire quelle que soit la taille de portée globale :
\relative b' { b1_\markup { \abs-fontsize #20 Sinfonia } b1^\markup { \abs-fontsize #8 da } b1-\markup { \abs-fontsize #14 camera } }
Lorsque le texte comporte des espaces, mieux vaut le borner par des guillemets informatiques ; s’en suivra une meilleure adéquation entre la taille des espaces et celle des autres caractères :
\markup \fontsize #6 \bold { Sinfonia da camera } \markup \fontsize #6 \bold { "Sinfonia da camera" }
Vous pouvez imprimer du texte en indice ou en exposant. Celui-ci sera dans une taille plus petite, mais rien ne s’oppose à ce que vous lui affectiez une taille normale :
\markup { \column { \line { 1 \super st movement } \line { 1 \normal-size-super st movement \sub { (part two) } } } }
Le mode markup vous permet de sélectionner d’autres familles de fontes. Par défaut, LilyPond utilise une police avec empattement, du type roman, et tout changement doit être explicite. Dans la dernière ligne de l’exemple qui suit, vous noterez qu’il n’y a aucune différence entre les premier et deuxième mots.
\markup { \column { \line { Act \number 1 } \line { \sans { Scene I. } } \line { \typewriter { Verona. An open place. } } \line { Enter \roman Valentine and Proteus. } } }
Certaines familles de police spécifiques aux nombres ou aux nuances par exemple, ne disposent pas de tous les caractères, comme nous l’avons vu dans les chapitres Personnalisation des indications de nuance et Indications de reprise manuelles.
Lorsqu’un changement survient au milieu d’un mot, il se peut qu’un espacement supplémentaire apparaisse. Il suffit en pareil cas de concaténer les différents éléments :
\markup { \column { \line { \concat { 1 \super st } movement } \line { \concat { \dynamic p , } \italic { con dolce espressione } } } }
Une liste des différentes commandes permettant de changer de fonte ou d’utiliser des fontes personnalisées est disponible à l’annexe Font.
Pour savoir comment personnaliser des fontes, reportez-vous au chapitre Fontes.
Commandes prédéfinies
\teeny
,
\tiny
,
\small
,
\normalsize
,
\large
,
\huge
,
\smaller
,
\larger
.
Voir aussi
Manuel de notation : Fonte, Fontes, Indications de reprise manuelles, Personnalisation des indications de nuance.
Fichiers d’initialisation : ‘scm/define-markup-commands.scm’.
Morceaux choisis : Texte.
Référence des propriétés internes : TextScript.
Problèmes connus et avertissements
Le recours aux commandes \teeny
, \tiny
, \small
,
\normalsize
, \large
et \huge
produiront des
espacements nettement moins réguliers que si vous utilisez
\fontsize
.
Alignement du texte
Cette partie traite de la manière de positionner du texte en mode markup. On déplace l’intégralité d’un objet markup en utilisant la syntaxe décrite au chapitre Déplacement d'objets.
Les objets de type markup peuvent s’aligner de différentes manières. Une indication textuelle est par défaut alignée sur son extrémité gauche. Dans l’exemple qui suit, il n’y a aucune différence entre les deux premiers markups. Cet exemple indique aussi différentes syntaxes pour les commandes d’alignement.
\relative { d''1-\markup { poco } f d-\markup { \left-align poco } f d-\markup { \center-align { poco } } f d-\markup \right-align { poco } }
L’alignement horizontal peut être ajusté à l’aide d’une valeur numérique :
\relative { a'1-\markup { \halign #-1 poco } e' a,-\markup { \halign #0 poco } e' a,-\markup { \halign #0.5 poco } e' a,-\markup { \halign #2 poco } }
Enfin, les mots et tout autre objet peuvent se déplacer en les faisant précéder d’un décalage. Un décalage négatif est possible, ce qui aura pour effet de déplacer les objets qui le suivent dans la direction opposée. Bien que le décalage soit normalement invisible, des commandes spécifiques permettent de le mettre en évidence comme dans l’exemple ci-dessous :
\relative { d''1-\markup { poco } f d-\markup { \with-color #darkred \box \hspace #4 poco } f d-\markup { \with-color #darkred \box \hspace #-4 poco } f d-\markup { \with-color #darkred \box \hspace #10 poco } }
Certains objets possèdent leurs propres procédures d’alignement, qui annuleront toute spécification d’alignement que vous pourriez leur affecter. La solution consiste alors à déplacer l’intégralité de ces objets markup, comme indiqué par exemple au chapitre Indications textuelles.
L’alignement vertical est quant à lui un peu plus compliqué. Comme nous l’avons vu ci-avant, les objets markup peuvent être déplacés dans leur intégralité. Il est néanmoins possible de déplacer certains éléments spécifiques au sein d’un bloc markup. En pareil cas, l’élément à déplacer doit être précédé d’un « point d’ancrage » – un autre élément du markup ou un objet invisible. L’exemple qui suit illustre ces deux possibilités. Vous noterez par ailleurs que le dernier markup, dépourvu de point d’ancrage, n’est de ce fait pas déplacé.
\relative { d'2^\markup { Acte I \raise #2 { Scène 1 } } a' g_\markup { \lower #4 \bold { Très modéré } } a d,^\markup \raise #4 \italic { Une forêt. } a'4 a g2 a }
Certaines commandes permettent de régler l’alignement des objets textuels en mode markup, tant au niveau horizontal que vertical.
\relative { d'2^\markup { Acte I \translate #'(-1 . 2) "Scène 1" } a' g_\markup { \general-align #Y #3.2 \bold "Très modéré" } a d,^\markup \translate-scaled #'(-1 . 2) \teeny { "Une forêt." } a'4 a g2 a }
Ici aussi, un décalage (positif ou négatif) constitue un moyen efficace de positionner verticalement des objets empilés dans un markup :
\relative { d'2^\markup { Acte I \column { \with-color #darkred \box \vspace #-1 "Scène 1" } } a' g_\markup \column { \with-color #darkred \box \vspace #1 "Très modéré" } a d,^\markup \column { "Une forêt." \with-color #darkred \box \vspace #2 } a'4 a g2 a }
Un objet de type markup peut contenir plusieurs lignes de texte. Dans l’exemple suivant, chaque élément ou expression ira se placer sur sa propre ligne, tantôt alignée à gauche, tantôt centrée.
\markup { \column { a "b c" \line { d e f } } \hspace #10 \center-column { a "b c" \line { d e f } } }
Pareillement, une liste d’éléments ou d’expressions sera répartie sur une ligne entière, voire même centrée sur toute la page s’il n’y a qu’un seul élément. De telles expressions peuvent à leur tour contenir du texte multiligne ou une autre expression markup.
\markup { \fill-line { \line { William S. Gilbert } \center-column { \huge \smallCaps "The Mikado" or \smallCaps "The Town of Titipu" } \line { Sir Arthur Sullivan } } } \markup { \fill-line { 1885 } }
Les éléments peuvent se répartir sur une largeur spécifiée par une
dérogation à la propriété line-width
. Celle-ci est réglé par
défaut à #f
, autrement dit l’entièreté de la ligne :
\markup { \column { \fill-line { left center right } \null \override #'(line-width . 30) \fill-line { left center right } } }
Les indications textuelles, lorsqu’elles sont relativement longues, peuvent se répartir sur plusieurs lignes en fonction de la largeur de ligne. Le texte sera alors soit aligné à gauche, soit justifié, comme le montre l’exemple suivant :
\markup { \column { \line \smallCaps { La vida breve } \line \bold { Acto I } \wordwrap \italic { (La escena representa el corral de una casa de gitanos en el Albaicín de Granada. Al fondo una puerta por la que se ve el negro interior de una Fragua, iluminado por los rojos resplandores del fuego.) } \hspace #0 \line \bold { Acto II } \override #'(line-width . 50) \justify \italic { (Calle de Granada. Fachada de la casa de Carmela y su hermano Manuel con grandes ventanas abiertas a través de las que se ve el patio donde se celebra una alegre fiesta) } } }
Une liste des différentes commandes permettant d’aligner du texte en mode markup est disponible à l’annexe Align.
Voir aussi
Manuel d’initiation : Déplacement d'objets.
Manuel de notation : Alignement, Indications textuelles.
Fichiers d’initialisation : ‘scm/define-markup-commands.scm’.
Morceaux choisis : Texte.
Référence des propriétés internes : TextScript.
Éléments graphiques dans du texte formaté
Vous pouvez, grâce au mode markup, ajouter divers objets graphiques à votre partition.
Certaines commandes de markup permettent d’ornementer des éléments textuels avec des graphismes, à l’instar de l’exemple suivant :
\markup \fill-line { \center-column { \circle Jack \box "in the box" \null \line { Erik Satie \hspace #3 \bracket "1866 - 1925" } \null \rounded-box \bold Prelude } }
Certaines directives peuvent nécessiter d’accroître l’espacement autour du texte – voir l’annexe Align pour une liste des différentes commandes particulières au mode markup ainsi que leur description.
\markup \fill-line { \center-column { \box "Charles Ives (1874 - 1954)" \null \box \pad-markup #2 "THE UNANSWERED QUESTION" \box \pad-x #8 "A Cosmic Landscape" \null } } \markup \column { \line { \hspace #10 \box \pad-to-box #'(-5 . 20) #'(0 . 5) \bold "Largo to Presto" } \box \pad-around #3 "String quartet keeps very even time." }
Vous pouvez imprimer certains graphismes ou symboles sans qu’il n’y ait de texte. Ces objets peuvent même se combiner, à l’instar de n’importe quelle expression markup.
\markup { \combine \draw-circle #4 #0.4 ##f \filled-box #'(-4 . 4) #'(-0.5 . 0.5) #1 \hspace #5 \center-column { \triangle ##t \combine \draw-line #'(0 . 4) \arrow-head #Y #DOWN ##f } }
Des fonctionnalités graphiques avancées vous permettent même d’inclure
dans une partition un fichier image converti au format PostScript
encapsulé (extension eps
), ou bien de tracer un graphique
directement dans le fichier source à partir d’instructions PostScript
pures. Nous vous conseillons, en pareil cas, de toujours spécifier les
dimensions du dessin, comme dans ce qui suit :
c'1^\markup { \combine \epsfile #X #10 "./context-example.eps" \with-dimensions #'(0 . 6) #'(0 . 10) \postscript " -2 3 translate 2.7 2 scale newpath 2 -1 moveto 4 -2 4 1 1 arct 4 2 3 3 1 arct 0 4 0 3 1 arct 0 0 1 -1 1 arct closepath stroke" } c'
L’annexe Graphic répertorie les différentes commandes en matière de graphisme.
Voir aussi
Manuel de notation : Alignement, Annotations éditoriales, Dimensions, Graphique.
Fichiers d’initialisation : ‘scm/define-markup-commands.scm’, ‘scm/stencil.scm’.
Morceaux choisis : Texte.
Référence des propriétés internes : TextScript.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Éléments graphiques dans du texte formaté ] | [Plus haut: Mise en forme du texte ] | [ Fontes > ] |
Notation musicale dans du texte formaté
Divers éléments de notation peuvent orner une partition, au moyen d’un objet markup.
Notes et altérations sont données à l’aide d’instructions markup :
a'2 a'^\markup { \note {4} #1 = \note-by-number #1 #1 #1.5 } b'1_\markup { \natural \semiflat \flat \sesquiflat \doubleflat } \glissando a'1_\markup { \natural \semisharp \sharp \sesquisharp \doublesharp } \glissando b'
Le mode markup permet d’accéder à d’autres objets de notation :
\relative { g1 bes ees\finger \markup \tied-lyric "4~1" fis_\markup { \dynamic rf } bes^\markup { \beam #8 #0.1 #0.5 } cis d-\markup { \markalphabet #8 \markletter #8 } }
En règle générale, tout symbole musical peut être inclus dans un markup, comme le montre l’exemple qui suit. Ces différents symboles sont répertoriés dans l’annexe La fonte Emmentaler.
\relative { c''2 c'^\markup { \musicglyph "eight" } c,4 c,8._\markup { \musicglyph "clefs.G_change" } c16 c2^\markup { \musicglyph "timesig.neomensural94" } }
La rubrique Fontes musicales contient d’autres informations sur l’impression de glyphes non alphabétiques, tels que des crochets ou accolades.
Le mode markup supporte aussi les diagrammes spécifiques à certains instruments :
\relative { c''1^\markup { \fret-diagram-terse "x;x;o;2;3;2;" } c^\markup { \harp-pedal "^-v|--ov^" } c c^\markup { \combine \musicglyph "accordion.discant" \combine \raise #0.5 \musicglyph "accordion.dot" \raise #1.5 \musicglyph "accordion.dot" } }
La documentation sur ces diagrammes se trouve à l’annexe Instrument Specific Markup.
Rien ne s’oppose à ce qu’une étiquette ne comporte une partition.
\relative { c'4 d^\markup { \score { \relative { c'4 d e f } \layout { } } } e f | c d e f }
Les différentes commandes markup relatives à la notation musicale sont répertoriées à l’annexe Music.
Voir aussi
Manuel de notation : La fonte Emmentaler, Musique, Fontes musicales.
Fichiers d’initialisation : ‘scm/define-markup-commands.scm’, ‘scm/fret-diagrams.scm’, ‘scm/harp-pedals.scm’.
Morceaux choisis : Texte.
Référence des propriétés internes : TextScript.
Problèmes connus et avertissements
L’espacement vertical d’un \score
contenu dans un objet
markup se contrôle par la propriété baseline-skip
. Tout
réglage au sein d’un bloc \paper
est ignoré.
[ << Notation musicale générale ] | [Racine][Table des matières][Index] | [ Notation spécialisée >> ] |
[ < Éléments graphiques dans du texte formaté ] | [Plus haut: Mise en forme du texte ] | [ Fontes > ] |