3.2.4 Table des matières
La commande \markuplines \table-of-contents vous permettra de
générer une table des matières. Les éléments qui la composeront sont
créés par la commande \tocItem, insérée indépendamment ou au sein
d’une expression musicale.
\markuplines \table-of-contents
\pageBreak
\tocItem \markup "Premier mouvement"
\score {
{
c'4 % ...
\tocItem \markup "Passage spécifique du premier mouvement"
d'4 % ...
}
}
\tocItem \markup "Second mouvement"
\score {
{
e'4 % ...
}
}
Les markups dévolus à la mise en forme de la table des matières
se définissent dans le bloc \paper. Il s’agit par défaut de
tocTitleMarkup pour le titre de la table, et de
tocItemMarkup pour ses éléments – composés de leur libellé et
numéro de page. Vous pouvez bien entendu personnaliser ces
variables :
\paper {
%% Translate the toc title into French:
tocTitleMarkup = \markup \huge \column {
\fill-line { \null "Table des matières" \null }
\hspace #1
}
%% use larger font size
tocItemMarkup = \markup \large \fill-line {
\fromproperty #'toc:text \fromproperty #'toc:page
}
}
Notez bien la manière de référencer le libellé et le numéro de page dans
la définition de tocItemMarkup.
N’hésitez pas à définir vous-même d’autres commandes et markups afin de construire une table plus élaborée :
-
commencez par définir une nouvelle variable de type
markupau sein du bloc\paper, - puis définissez une fonction musicale chargée d’insérer un élément de la table à partir de cette variable.
Dans l’exemple qui suit, nous avons créé un nouveau style d’élément dans le but de mentionner les actes dans la table des matières d’un opéra :
\paper {
tocActMarkup = \markup \large \column {
\hspace #1
\fill-line { \null \italic \fromproperty #'toc:text \null }
\hspace #1
}
}
tocAct =
#(define-music-function (parser location text) (markup?)
(add-toc-item! 'tocActMarkup text))
L’élément et son numéro de page peuvent se rejoindre par une ligne pointillée :
\header { tagline = ##f }
\paper {
tocItemMarkup = \tocItemWithDotsMarkup
}
\book {
\markuplines \table-of-contents
\tocItem \markup { Allegro }
\tocItem \markup { Largo }
\markup \null
}
Voir aussi
Fichiers d’initialisation : ‘../ly/toc-init.ly’.