Referencia de la notación de GNU LilyPond: 3.1.5 Estructura del archivo

### 3.1.5 Estructura del archivo

Un archivo ‘`.ly`’ puede contener cualquier número de expresiones del nivel superior, donde una expresión del nivel superior es una de las siguientes posibilidades:

- Una definición de salida, como `\paper`, `\midi` y `\layout`. Tal definición en el nivel más alto cambia los ajustes predeterminados para todo el libro. Si se introduce más de una de estas definiciones del mismo tipo en el nivel más alto, las definiciones se combinan, pero en situaciones de conflicto las definiciones más tardías tienen preferencia. Para ver los detalles sobre cómo afecta al bloque `\layout`, consulte El bloque `\layout`.
- Una expresión directa de Scheme, como `#(set-default-paper-size "a7" 'landscape)` o `#(ly:set-option 'point-and-click #f)`.
- Un bloque `\header`. Esto establece el bloque de encabezamiento global (es decir, al principio del archivo). Es el bloque que contiene los ajustes predeterminados de los campos de encabezamientos como el compositor, título, etc. para todos los libros que están dentro del archivo (véase Explicación de los títulos).
- Un bloque `\score`. Esta partitura se reúne con otras partituras del nivel superior, y se combina con ellas formando un `\book` (libro) único. Este comportamiento se puede cambiar estableciendo el valor de la variable `toplevel-score-handler` en el nivel superior (el handler predeterminado se define en el archivo ‘`../scm/lily-library.scm`’ y su valor se establece en el archivo ‘`../ly/declarations-init.ly`’.)
- Un bloque `\book` combina lógicamente varios movimientos (es decir, varios bloques `\score`) en un solo documento. Si hay varias partituras `\score`, se crea un solo archivo de salida para cada bloque `\book`, en el que se concatenan todos los movimientos correspondientes. La única razón para especificar explícitamente bloques `\book` en un archivo de entrada ‘`.ly`’ es si queremos crear varios archivos de salida a partir de un único archivo de entrada. Una excepción se da dentro de los documentos de lilypond-book, en los que tenemos que escribir explícitamente un bloque `\book` si queremos tener más de una única partitura `\score` o marcado `\markup` en el mismo ejemplo. Se puede cambiar este comportamiento estableciendo el valor de la variable `toplevel-book-handler` en el nivel superior. El handler predeterminado se define en el archivo de inicio ‘`../scm/lily.scm`’.
- Un bloque `\bookpart`. Un libro puede dividirse en varias partes, utilizando bloques `\bookpart`, con objeto de facilitar la inserción de saltos de página o usar distintos ajustes de `\paper` en las distintas partes.
- Una expresión musical compuesta, como

  >     { c'4 d' e'2 }

  Esto añade la pieza al `\score` y la conforma dentro de un libro único junto a todas las demás partituras `\score` y expresiones musicales del nivel superior. En otras palabras, un archivo que contiene sólo la expresión musical anterior se traduce a

  >     \book {
  >       \score {
  >         \new Staff {
  >           \new Voice {
  >             { c'4 d' e'2 }
  >           }
  >         }
  >         \layout { }
  >       }
  >       \paper { }
  >       \header { }
  >     }

  Se puede cambiar este comportamiento estableciendo el valor de la variable `toplevel-music-handler` en el nivel más alto. El handler predeterminado se define en el archivo de inicio ‘`../scm/lily.scm`’.

- Un texto de marcado, por ejemplo una estrofa

  >     \markup {
  >        2.  Estrofa dos, línea uno
  >     }

  Los textos de marcado se colocan encima, en medio o debajo de las partituras o expresiones musicales, según donde aparezcan escritos.

- Una variable, como

  >     fulano = { c4 d e d }

  Esto se puede utilizar más tarde en el archivo escribiendo `\fulano`. El nombre de las variables ha de ser exclusivamente alfabético; sin números, guiones ni barras bajas.

El ejemplo siguiente muestra tres cosas que se pueden introducir en el nivel superior:

>     \layout {
>       % No justificar la salida
>       ragged-right = ##t
>     }

>     \header {
>        title = "Do-re-mi"
>     }

>     { c'4 d' e2 }

En cualquier punto del archivo se pueden introducir cualquiera de las instrucciones léxicas siguientes:

- `\version`
- `\include`
- `\sourcefilename`
- `\sourcefileline`
- Un comentario de una línea, determinado por un símbolo `%` al principio.
- Un comentario de varias líneas, delimitado por `%{ … %}`.

Por lo general se ignoran los espacios entre elementos del flujo de entrada, y se pueden omitir o aumentar tranquilamente para mejorar la legibilidad. Sin embargo, los espacios se deben utilizar siempre para evitar errores, en las siguientes situaciones:

- Alrededor de todas y cada una de las llaves curvas de apertura y cierre.
- A continuación de las instrucciones y variables, es decir, todos los elementos que comienzan con un signo `\` de barra invertida.
- A continuación de todo elemento que se deba interpretar como expresión de Scheme, es decir, todo elemento que comience por un signo `#`.
- Para separar los elementos de una expresión de Scheme.
- Dentro de `lyricmode` antes y después de las instrucciones `\set` y `\override`.

#### Véase también

Manual de aprendizaje: Cómo funcionan los archivos de entrada de LilyPond.

Referencia de la notación: Explicación de los títulos, El bloque `\layout`.

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