GNU LilyPond – Manuel de notation: 3.2.6 Table des matières

### 3.2.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 label text))

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`’.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).