GNU LilyPond – Manuel de notation: 3.2.5 Structure de fichier

### 3.2.5 Structure de fichier

Un fichier `.ly` peut contenir un certain nombre d’expressions de haut niveau. Les expressions de haut niveau sont les suivantes :

- Une définition de sortie, comme `\paper`, `\midi` et `\layout`. Ces définitions, lorsqu’elles se trouvent à un niveau supérieur, s’appliqueront à l’intégralité de l’ouvrage. Si l’une de ces expression apparaît à plusieurs reprises à un niveau supérieur, les différents contenus seront combinés, à ceci près qu’en cas de déclarations conflictuelles, la dernière aura préséance. Des informations complémentaires sont disponibles à la rubrique Le bloc `\layout`.
- Une expression Scheme pure, telle que `#(set-default-paper-size "a7" 'landscape)` ou `#(ly:set-option 'point-and-click #f)`.
- Un bloc `\header`, dont le contenu sera valide pour tout le fichier. Il comporte en général les valeurs par défaut des champs de titrage, tels le titre ou l’auteur entre autres, communs à tous les blocs `\book` inclus dans le fichier – voir Généralités en matière de titrages.
- Un bloc `\score` pour la partition. Cette partition sera assemblée avec les autres partitions se trouvant au même niveau pour composer le `\book`. Vous pouvez modifier ce comportement à l’aide de la variable `toplevel-score-handler` placée en tête. Le gestionnaire par défaut est défini dans le fichier d’initialisation ‘`../scm/lily.scm`’, et les réglages par défaut dans le fichier ‘`../ly/declarations-init.ly`’.
- Un bloc `\book` permet de regrouper naturellement plusieurs mouvements – autrement dit plusieurs blocs `\score` – dans un même document. Lorsqu’il y a plusieurs `\score`, LilyPond génère un seul fichier dans lequel les mouvements sont mis les uns à la suite des autres, ce pour chacun des blocs `\book` rencontrés. La seule raison qui peut vous demander d’expliciter plusieurs blocs `\book` dans un fichier ‘`.ly`’ est lorsque vous avez besoin de générer différents documents à partir d’une même source. La présence explicite d’un bloc `\book` est aussi nécessaire lorsque vous travaillez sur un document `lilypond-book` qui reprendrait plusieurs `\score` ou `\markup` dans un même extrait. Vous pouvez modifier ce comportement à l’aide de la variable `toplevel-book-handler` placée en tête. Le gestionnaire par défaut est défini dans le fichier d’initialisation ‘`../scm/lily.scm`’.
- Un bloc `\bookpart`. Un ouvrage peut se découper en plusieurs parties à l’aide de blocs `\bookpart`, aussi bien pour alléger le travail de l’algorithme de calcul des sauts de page, que si les réglages du bloc `\paper` diffèrent d’une partie à l’autre.
- Une expression musicale telle que

  >     { c'4 d' e'2 }

  Ce bout de code sera placé dans un `\score` et intégré à l’ouvrage en même temps que tous les autres `\score` ou expressions musicales. En d’autres termes, un fichier qui ne contiendrait que cette simple expression musicale sera traduit en

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

  Vous pouvez modifier ce comportement à l’aide de la variable `toplevel-music-handler` placée en tête. Le gestionnaire par défaut est défini dans le fichier d’initialisation ‘`../scm/lily.scm`’.

- Du texte sous forme de markup comme les paroles d’un couplet

  >     \markup {
  >        2.  Le première ligne du deuxième couplet.
  >     }

  De tels markups seront imprimés là où ils apparaissent, avant, après ou entre les expressions musicales.

- Une variable, ou identificateur, telle que

  >     toto = { c4 d e d }

  Vous pourrez la réutiliser plus loin dans votre fichier en saisissant simplement `\toto`. Le nom des identificateurs ne doit pas comporter de chiffre (ASCII), de succession de caractères souligné (`_`) ou de tiret ni aucune espace. Tous les autres caractères Unicode sont permis, aussi bien latins, grecs, chinois que cyrilliques. Les souligné ou tiret isolés sont autorisés. Autrement dit, les variables `CorIII` ou `αβγXII` sont valides.

  Toute combinaison de caractères est permise dès lors que le nom de la variable est borné par des guillemets informatiques. En pareil cas, les antislashes et guillemets doivent être « échappés » par un antislash. Sont donc valides : `"toto tutu"`, `"a-b-c"` et `"Cor 3"`.

Voici trois éléments que vous pouvez placer à un niveau supérieur :

>     \layout {
>       % pas en pleine largeur
>       ragged-right = ##t
>     }

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

>     { c'4 d' e2 }

Vous pouvez placer, n’importe où dans votre fichier, les instructions suivantes :

- `\version`
- `\include`
- `\sourcefilename`
- `\sourcefileline`
- Une ligne de commentaire, introduite par le signe `%`.
- Un bloc de commentaire, délimité par `%{ … %}`.

Vous pouvez insérer des espaces dans votre fichier source afin de lui apporter une meilleure lisibilité. Les espaces superflus sont normalement ignorés. Notez cependant qu’il est des cas où l’espace est requis pour éviter tout risque d’erreur :

- Autour d’une accolade, qu’elle soit ouvrante ou fermante ;
- Après chaque commande ou variable, autrement dit tout élément qui commence par un `\` ;
- Après tout élément qui sera interprété comme une expression Scheme, autrement dit tout élément qui commence par un `#` ;
- Pour séparer les éléments d’une expression Scheme ;
- En mode parole – `lyricmode` – avant et après les commandes `\override` et `\set`.

#### Voir aussi

Manuel d’initiation : Organisation des fichiers LilyPond.

Manuel de notation : Généralités en matière de titrages, Le bloc `\layout`.

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