5.5.1 Allineamento degli oggetti
Gli oggetti grafici che supportano l’interfaccia self-alignment-interface
e/o l’interfaccia side-position-interface
possono essere allineati a un
oggetto disposto precedentemente in vari modi. L’elenco di questi oggetti è
consultabile in
self-alignment-interface e
side-position-interface.
Tutti gli oggetti grafici hanno un punto di riferimento, un’estensione orizzontale e una verticale. L’estensione orizzontale è una coppia di numeri che determina gli spostamenti dal punto di riferimento dei margini sinistro e destro (gli spostamenti a sinistra sono negativi). L’estensione verticale è una coppia di numeri che determina lo spostamento dal punto di riferimento ai margini inferiore e superiore (gli spostamenti in giù sono negativi).
La posizione di un oggetto su un rigo è dato dai valori delle proprietà
X-offset
e Y-offset
. Il valore di X-offset
dà lo
spostamento dalla coordinata X del punto di riferimento dell’oggetto genitore,
mentre il valore di Y-offset
dà lo spostamento dalla linea centrale del
rigo. I valori di X-offset
e Y-offset
possono essere impostati
direttamente oppure possono essere impostati per essere calcolati dalle
procedure in modo da consentire un allineamento con l’oggetto genitore.
Nota: Molti oggetti hanno speciali questioni di posizionamento che fanno
sì che qualsiasi impostazione di X-offset
o Y-offset
sia
ignorata o modificata, anche se l’oggetto supporta l’interfaccia
self-alignment-interface
. Sovrascrivendo le proprietà X-offset
o Y-offset
su un valore fisso la rispettiva proprietà
self-alignment
verrà ignorata.
Per esempio, un’alterazione può essere riposizionata verticalmente impostando
Y-offset
ma qualsiasi modifica di X-offset
non avrà effetto.
I segni di chiamata possono essere allineati con oggetti spezzabili come
stanghette, simboli di chiave, simboli di indicazione di tempo e armature
di chiave. Ci sono proprietà speciali elencate nell’interfaccia
break-aligned-interface
per posizionare i segni di chiamata su tali
oggetti.
Vedi anche
Guida alla notazione:
Uso di break-alignable-interface
.
Estendere LilyPond: Callback functions.
Impostazione diretta di X-offset e Y-offset | ||
Uso di side-position-interface | ||
Uso di self-alignment-interface | ||
Uso di break-alignable-interface |
Impostazione diretta di X-offset
e Y-offset
Si possono assegnare valori numerici alle prietà X-offset
e
Y-offset
di molti oggetti. L’esempio seguente mostra tre note
con la posizione predefinita della diteggiatura e le posizioni con X-offset
e Y-offset
modificate.
a'-3 a' -\tweak X-offset #0 -\tweak Y-offset #0 -3 a' -\tweak X-offset #-1 -\tweak Y-offset #1 -3
Uso di side-position-interface
Un oggetto che supporta l’interfaccia side-position-interface
può
essere posizionato accanto al suo oggetto genitore in modo che i margini
indicati dei due oggetti si tocchino. L’oggetto può essere posizionato
sopra, sotto, a destra o a sinistra dell’oggetto genitore. Quest’ultimo
non può essere specificato; è invece determinato dall’ordine degli elementi
nel flusso di input. La maggior parte degli oggetti ha la testa di nota
associata come oggetto genitore.
I valori delle proprietà side-axis
e direction
determinano
dove l’oggetto deve essere posizionato, in questo modo:
Proprietà
side-axis
Proprietà
direction
Posizionamento
0
-1
sinistra
0
1
destra
1
-1
sotto
1
1
sopra
Quando side-axis
è 0
, X-offset
deve essere impostato
sulla procedura ly:side-position-interface::x-aligned-side
.
Questa procedura restituirà il valore corretto di X-offset
per
porre l’oggetto al lato sinistro o destro dell’oggetto genitore in base
al valore di direction
.
Quando side-axis
è 1
, Y-offset
deve essere impostato
sulla procedura ly:side-position-interface::y-aligned-side
.
Questa procedura restituirà il valore corretto di Y-offset
per
porre l’oggetto sopra o sotto l’oggetto genitore in base al valore di
direction
.
Uso di self-alignment-interface
Autoallineamento orizzontale degli oggetti
L’allineamento orizzontale di un oggetto che supporta l’interfaccia
self-alignment-interface
è regolato dal valore della proprietà
self-alignment-X
, purché la proprietà X-offset
dell’oggetto
sia impostata su ly:self-alignment-interface::x-aligned-on-self
.
A self-alignment-X
può essere assegnato qualsiasi numero reale,
in unità di metà del totale dell’estensione X dell’oggetto. Valori
negativi spostano l’oggetto a destra, valori positivi lo spostano a
sinistra. Un valore di 0
centra l’oggetto sul punto di riferimento
del suo oggetto genitore, un valore di -1
allinea il margine
sinistro dell’oggetto al punto di riferimento del suo genitore, e un
valore di 1
allinea il margine destro dell’oggetto al punto di
riferimento del suo genitore. I simboli LEFT
, CENTER
e
RIGHT
possono essere usati al posto dei valori -1
,
0
e 1
, rispettivamente.
Normalmente si usa il comando \override
per modificare il valore
di self-alignment-X
, ma il comando \tweak
può essere utile
per allineare separatamente varie annotazioni su una singola nota:
a' -\tweak self-alignment-X #-1 ^"allineato a sinistra" -\tweak self-alignment-X #0 ^"allineato al centro" -\tweak self-alignment-X #RIGHT ^"allineato a destra" -\tweak self-alignment-X #-2.5 ^"allineato ancora più a destra"
Autoallineamento verticale degli oggetti
Gli oggetti possono essere allineati verticalmente in un modo analogo
al loro allineamento orizzontale se la proprietà Y-offset
è
impostata su ly:self-alignment-interface::y-aligned-on-self
.
Tuttavia altri meccanismi sono spesso implicati nell’allineamento
verticale: il valore di Y-offset
è solo una delle variabili
da prendere in considerazione. Ciò potrebbe rendere complicato
l’aggiustamento del valore di alcuni oggetti.
Le unità sono soltanto la metà dell’estensione verticale dell’oggetto, che
è di solito piuttosto piccola, dunque potrebbero essere necessari grossi
numeri. Un valore di -1
allinea il margine inferiore dell’oggetto
al punto di riferimento dell’oggetto genitore, un valore di 0
allinea il centro dell’oggetto al punto di riferimento del genitore,
e un valore di 1
allinea il margine superiore dell’oggetto
al punto di riferimento del genitore. I simboli DOWN
,
CENTER
e UP
possono essere usati al posto di -1
,
0
e 1
, rispettivamente.
Autoallineamento degli oggetti in entrambe le direzioni
Impostando sia X-offset
che Y-offset
, un oggetto può essere
allineato in entrambe le direzioni simultaneamente.
L’esempio seguente mostra come aggiustare un segno di diteggiatura in modo che stia vicino alla testa di nota.
a' -\tweak self-alignment-X #0.5 % sposta orizzontalmente a sinistra -\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self -\tweak self-alignment-Y #-1 % sposta verticalmente in su -3 % terzo dito
Uso di break-alignable-interface
I segni di chiamata e i numeri di battuta possono essere allineati con oggetti
della notazione diversi dalle stanghette. Questi oggetti comprendono
ambitus
, breathing-sign
, clef
, custos
, staff-bar
,
left-edge
, key-cancellation
, key-signature
e
time-signature
.
Ogni tipo di oggetto ha il suo punto di riferimento predefinito, al quale i segni di chiamata sono allineati:
% Il segno di chiamata sarà allineato al margine destro della chiave \override Score.RehearsalMark.break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" e'1 % Il segno di chiamata sarà allineato al margine sinistro dell'indicazione di tempo \override Score.RehearsalMark.break-align-symbols = #'(time-signature) \key a \major \clef treble \time 3/4 \mark "↓" e'2. % Il segno di chiamata sarà centrato sul segno di respiro \override Score.RehearsalMark.break-align-symbols = #'(breathing-sign) \key a \major \clef treble \time 4/4 e'1 \breathe \mark "↓"
Si può specificare un elenco dei possibili oggetti a cui allineare. Se
alcuni oggetti sono invisibili in quel punto a causa dell’impostazione
di break-visibility
o di impostazioni esplicite della visibilità
di tonalità e chiavi, il segno di chiamata o il numero di battuta viene
allineato al primo oggetto dell’elenco che è visibile. Se nessun oggetto
dell’elenco è visibile, l’oggetto è allineato alla stanghetta. Se la
stanghetta è invisibile, l’oggetto viene allineato al punto in cui si
dovrebbe trovare la stanghetta.
% Il segno di chiamata sarà allineato al margine destro dell'armatura di chiave \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e'1 % Il segno di chiamata sarà allineato al margine destro della chiave \set Staff.explicitKeySignatureVisibility = #all-invisible \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef bass \mark "↓" gis,1 % Il segno di chiamata sarà centrato sopra la stanghetta \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.explicitClefVisibility = #all-invisible \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e'1
L’allineamento del segno di chiamata relativo all’oggetto della notazione può essere modificato, come evidenziato nell’esempio seguente. In una partitura con molteplici righi, questa impostazione deve essere fatta per tutti i righi.
% Il segno di chiamata sarà allineato al margine destro dell'armatura di chiave \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e'1 % Il segno di chiamata sarà centrato sopra l'armatura di chiave \once \override Score.KeySignature.break-align-anchor-alignment = #CENTER \mark "↓" \key a \major e'1 % Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave \once \override Score.KeySignature.break-align-anchor-alignment = #LEFT \key a \major \mark "↓" e'1
Il segno di chiamata può anche essere spostato a destra o a sinistra del margine sinistro di una quantità arbitraria. Le unità sono gli spazi rigo:
% Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave % e poi spostato a destra di 3.5 spazi rigo \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \once \override Score.KeySignature.break-align-anchor = #3.5 \key a \major \mark "↓" e'1 % Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave % e poi spostato a sinistra di 2 spazi rigo \once \override Score.KeySignature.break-align-anchor = #-2 \key a \major \mark "↓" e'1