GNU LilyPond – Manuel de notation : 5.3.6 \set vs. \override
Description: GNU LilyPond – Manuel de notation: 5.3.6 \set vs. \override
Keywords: GNU LilyPond – Manuel de notation: 5.3.6 \set vs. \override

### 5.3.6 `\set` vs. `\override`

Si les propriétés peuvent être modifiées de deux façons, par les commandes `\set` et `\override`, c’est qu’il y a deux types de propriétés.

Les contextes peuvent avoir des propriétés, dont les noms commencent par une minuscule puis comprennent une ou plusieurs majuscules (de style `totoTutu`). Elles ont surtout trait à la notation des éléments musicaux : par exemple, `localKeySignature` permet de choisir s’il faut ou non imprimer une altération, ou `measurePosition` permet de choisir quand il faut imprimer une barre de mesure. Ces propriétés de contextes sont appelées à changer au long de l’interprétation de la partition : `measurePosition` en est un exemple évident. Ces propriétés doivent être modifiées avec la commande `\set`.

Il existe un type particulier de propriétés : les descriptions d’éléments. Ces propriétés, dont les noms commencent par une majuscule, puis comprennent une ou plusieurs majuscules (de style `TotoTata`), contiennent les réglages ‘par défaut’ pour les objets graphiques. Ces réglages sont sous forme de liste Scheme ; on peut les consulter dans le fichier ‘`scm/define-grobs.scm`’. Les descriptions d’éléments doivent être modifiées avec la commande `\override`.

`\override` est en fait un raccourci :

>     \override contexte.objet #'propriété = #valeur

est plus ou moins l’équivalent de

>     \set contexte.objet #'propriété = #(cons (cons 'propriété valeur) <valeur précédente de contexte)

La valeur de `context` (la liste Scheme, ou ‘alist’) sert à initialiser les propriétés des objets un par un. Les objets eux-même ont leurs propriétés, dont les noms, dans la tradition du langage Scheme, comprennent un trait d’union (`toto-titi`). Ces propriétés internes changent constamment au cours de la mise en page : en fait, la gravure d’une page n’est autre que le calcul de toutes ces propriétés, au moyen de fonctions de rappel.

La propriété `fontSize` est une exception : c’est un raccourci, qui équivaudrait à saisir `\override … #'font-size` pour tous les objets textuels. Dans la mesure où il s’agit d’une manipulation très courante, une propriété spéciale a été créée. Elle doit être modifiée avec la commande `\set`.

Other languages: English, español.

#### Manuel de notation