5.3.5 \set
ou \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é : 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
.