Referencia de la notación de GNU LilyPond: 3.2.6 Índice general

### 3.2.6 Índice general

Se puede insertar un índice general o tabla de contenidos utilizando la instrucción `\markuplist \table-of-contents`. Los elementos que deben aparecer en la tabla de contenidos se introducen con la instrucción `\tocItem`, que se puede usar en el nivel más alto de la jerarquía del código, o dentro de una expresión musical.

    \markuplist \table-of-contents
    \pageBreak

    \tocItem \markup "Primera partitura"
    \score {
      {
        c'4  % ...
        \tocItem \markup "Un punto concreto dentro de la primera partitura"
        d'4  % ...
      }
    }

    \tocItem \markup "Segunda partitura"
    \score {
      {
        e'4 % ...
        \tocItem actI \markup "Act I"
        f'4 % ...
        \tocItem actI.sceneI \markup "Scene 1"
        g'4 % ...
        \tocItem actI.sceneI.recitativo \markup "Recit."
        a'4 % ...
      }
    }

De manera opcional se puede asociar una etiqueta con un elemento en particular o con una lista jerárquica de etiquetas existentes, terminando con la etiqueta de ese elemento. Esta última posibilidad nos permite marcar el elemento como un ‘hijo’ de los elementos etiquetados precedentes, haciendo así aparente la estructura de la partitura en el índice general.

Los elementos de marcado que se usan para dar formato al índice general o tabla de contenidos se encuentran definidos dentro del bloque `\paper`. Hay tres elementos de marcado ‘predefinidos’ disponibles:

- `tocTitleMarkup`

  Utilizado para dar formato al título del índice general.

      tocTitleMarkup = \markup \huge \column {
        \fill-line { \null "Índice general" \null }
        \null
      }

- `tocItemMarkup`

  Usado para dar formato a los elementos del índice general.

      tocItemMarkup = \markup \fill-line {
        \fromproperty #'toc:text \fromproperty #'toc:page
      }

- `tocFormatMarkup`

  Cómo se formatean las entradas del nivel superior de la tabla (si existen varios niveles jerárquicos). Esto es un procedimiento en realidad, como se explica en Construcción de elementos de marcado en Scheme.

      tocFormatMarkup = #make-bold-markup

- `tocIndentMarkup`

  Usado para definir cómo la jerarquía del esquema general se hace aparente. Este elemento de marcado se imprime ninguna, una o varias veces dependiendo del nivel de cada entrada.

      tocIndentMarkup = \markup \hspace #4

Cualquiera de estas variables puede modificarse.

He aquí un ejemplo que traduce el título del índice general al francés:

    \paper {
      tocTitleMarkup = \markup \huge \column {
        \fill-line { \null "Table des matières" \null }
        \hspace #1
      }

A continuación aparece un ejemplo que modifica el tamaño de fuente tipográfica de los elementos del índice general:

    tocItemMarkup = \markup \large \fill-line {
      \fromproperty #'toc:text \fromproperty #'toc:page
    }

Observe la forma en que nos referimos al texto y al número de página del elemento de índice, dentro de la definición `tocItemMarkup`.

La instrucción `\tocItemWithDotsMarkup` se puede incluir dentro de `tocItemMarkup` para llenar la línea con puntos entre un elemento del índice general y su número de página correspondiente:

    \header { tagline = ##f }
    \paper {
      tocItemMarkup = \tocItemWithDotsMarkup
    }

    \book {
      \markuplist \table-of-contents
      \tocItem \markup { Allegro }
      \tocItem \markup { Largo }
      \markup \null
    }

Además del mecanismo incorporado de construcción del índice general, las instrucciones predefinidas pueden definirse también para que construyan un índice general más personalizado con diferentes elementos de marcado. En el ejemplo siguiente se define un estilo nuevo para introducir los actos y escenas de una ópera en el índice general:

Una nueva variable de marcado (llamada `tocActMarkup`) se define en el bloque `\paper`:

    \paper {
      tocActMarkup = \markup \large \column {
        \hspace #1
        \fill-line { \null \italic \fromproperty #'toc:text \null }
        \hspace #1
      }
    }

A continuación se crea una función musical personalizada (`tocAct`), que usa la nueva definición de marcado `tocActMarkup`, y permite especificar una etiqueta para cada acto.

    tocAct =
      #(define-music-function (label text) (symbol? markup?)
         (add-toc-item! 'tocActMarkup text label))

Usando estas definiciones personalizadas y modificando algunas de las definiciones existentes, el archivo fuente se podría escribir entonces de la manera siguiente:

El ejemplo anterior muestra también cómo usar la instrucción de marcado `\fill-with-pattern` dentro del contexto de un índice general o tabla de contenidos.

#### Véase también

Archivos de inicio: ‘`ly/toc-init.ly`’.

#### Instrucciones predefinidas

`\table-of-contents`, `\tocItem`, `tocItemMarkup`, `tocTitleMarkup`, `tocFormatMarkup`, `tocIndentMarkup`.

#### LilyPond — Referencia de la notación v2.24.4 (rama estable).