3.3.6 Table des matières
La commande \markuplist \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.
\markuplist \table-of-contents \pageBreak \tocItem \markup "Première partie" \score { { c'4 % ... \tocItem \markup "Passage spécifique de la première partie" d'4 % ... } } \tocItem \markup "Seconde partie" \score { { e'4 % ... \tocItem actI \markup "Acte I" f'4 % ... \tocItem actI.sceneI \markup "Scène 1" g'4 % ... \tocItem actI.sceneI.recitativo \markup "Récit." a'4 % ... } }
Un libellé peut, facultativement, être associé à un élément particulier ou de façon hiérarchique dans une liste de libellés existants, terminant alors par le libellé de cet élément. Ce dernier cas permet de marquer l’élément comme « enfant » d’éléments précédemment libellés et ainsi laisser transparaître la structure de la partition dans la table des matières.
Les markups dévolus à la mise en forme de la table des matières
se définissent dans le bloc \paper
. LilyPond dispose de trois
markups prédéfinis :
-
tocTitleMarkup
Utilisé pour mettre en forme le titre de la table des matières.
tocTitleMarkup = \markup \huge \column { \fill-line { \null "Table of Contents" \null } \null }
-
tocItemMarkup
Utilisé pour mettre en forme les éléments au sein de la table des matières.
tocItemMarkup = \markup \fill-line { \fromproperty #'toc:text \fromproperty #'toc:page }
-
tocFormatMarkup
Utilisé pour mettre en forme les entrées de premier niveau dans la table des matières si tant est qu’existent plusieurs niveaux hiérarchiques. Il s’agit ici d’une procédure, comme abordé dans Construction d'un markup en Scheme.
tocFormatMarkup = #make-bold-markup
-
tocIndentMarkup
Utilisé pour définir comment sera mise en évidence la hiérarchie. Ce markup sera imprimé zéro, une ou plusieurs fois selon le niveau de chacune des entrées.
tocIndentMarkup = \markup \hspace #4
Toutes ces variables sont adaptables.
Voici comment, par exemple, franciser le titre :
\paper { tocTitleMarkup = \markup \huge \column { \fill-line { \null "Table des matières" \null } \hspace #1 }
L’exemple suivant illustre la manière de modifier la taille des éléments de la table des matières :
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
.
Grâce à la commande \tocItemWithDotsMarkup
, l’élément et son
numéro de page peuvent se rejoindre par une ligne pointillée :
\header { tagline = ##f } \paper { tocItemMarkup = \tocItemWithDotsMarkup } \book { \markuplist \table-of-contents \tocItem \markup { Allegro } \tocItem \markup { Largo } \markup \null }
Au-delà de ces mécanismes de mise en forme, il est posssible de définir d’autres commandes et markups afin de construire une table plus élaborée. Dans l’exemple qui suit, nous créons un nouveau style d’élément dans le but de mentionner les actes et scènes dans la table des matières d’un opéra :
Commençons par définir une nouvelle variable de type markup
–
appelée tocActMarkup
– au sein du bloc \paper
.
\paper { tocActMarkup = \markup \large \column { \hspace #1 \fill-line { \null \italic \fromproperty #'toc:text \null } \hspace #1 } }
Créons ensuite une fonction musicale (tocAct
) utilisant la
nouvelle définition de markup tocActMarkup
, tout en lui
autorisant de définir un libellé pour chaque acte.
tocAct = #(define-music-function (label text) (symbol? markup?) (add-toc-item! 'tocActMarkup text label))
Dans un fichier LilyPond, l’utilisation de cette définition personnalisée, avec quelques adaptations aux réglages par défaut, pourrait ressembler à ceci :
Cet exemple illustre par ailleurs l’utilisation de la commande
\fill-with-pattern
dans le cadre d’une table des matières.
Commandes prédéfinies
\table-of-contents
,
\tocItem
,
tocItemMarkup
,
tocTitleMarkup
,
tocFormatMarkup
,
tocIndentMarkup
.
Voir aussi
Fichiers d’initialisation : ‘../ly/toc-init.ly’.