5.5.1 Objekte ausrichten
Graphische Objekte, die das self-alignment-interface
und/obder
das side-position-interface
unterstützen, können an einem
vorher gesetzten Objekt auf verschiedene Weise ausgerichtet werden.
Eine Liste derartiger Objekte findet sich in
self-alignment-interface und
side-position-interface.
Alle graphischen Objekte haben einen Referenzpunkt, eine horizontale Ausdehnung und eine vertikale Ausdehnung. Die horizontale Ausdehnung ist ein Zahlenpaar, mit dem die Verschiebung der rechten und linken Ecken ausgehend vom Referenzpunkt angegeben werden, wobei Verschiebungen nach links mit negativen Zahlen notiert werden. Die vertikale Ausdehnung ist ein Zahlenpaar, das die Verschiebung der unteren und oberen Ränder vom Referenzpunkt ausgehend angibt, wobei Verschiebungen nach unten mit negativen Zahlen notiert werden.
Die Position eines Objektes auf dem Notensystem wird mit Werten
von X-offset
und Y-offset
angegeben. Der Wert von
X-offset
gibt die Verschiebung von der X-Koordinate des
Referenzpunkts des Elternobjektes an, der Wert von Y-offset
die Verschiebung ausgehend von der Mittellinie des Notensystemes.
Die Werte von X-offset
und Y-offset
können direkt
bestimmt werden oder durch Prozeduren errechnet werden, sodass
eine Ausrichtung mit dem Elternobjekt erreicht werden kann.
Achtung: Viele Objekte brauchen besondere Überlegungen zu ihrer
Position, weshalb in manchen Fällen manuell gesetzte Werte von
X-offset
oder Y-offset
ignoriert oder verändert
werden können, obwohl das Objekt das
self-alignment-interface
unterstützt. Wenn man X-offset
oder Y-offset
auf einen festen Wert setzt, wird die entsprechende
self-alignment
-Eigenschaft ignoriert.
Ein Versetzungszeichen beispielsweise kann vertikal durch Veränderung
von Y-offset
verschoben werden, aber Änderungen von
X-offset
haben keine Auswirkung.
Übungszeichen können an trennbaren Objekten (wie Taktstrichen,
Schlüsseln, Taktarten und Tonartvorzeichen) ausgerichtet werden.
In break-aligned-interface
finden sich besondere Eigenschaften,
mit denen Übungszeichen an derartigen Objekten ausgerichtet werden können.
Siehe auch
Notationshandbuch:
Benutzung des break-alignable-interface
.
Erweitern: Callback functions.
X-offset und Y-offset direkt setzen | ||
Das side-position-interface benutzen | ||
Das self-alignment-interface benutzen | ||
Benutzung des break-alignable-interface |
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < Objekte ausrichten ] | [ Nach oben : Objekte ausrichten ] | [ Das side-position-interface benutzen > ] |
X-offset
und Y-offset
direkt setzen
Numerische Werte können den X-offset
- und Y-offset
-Eigenschaften
vieler Objekte zugewiesen werden. Das folgende Beispiel zeigt
drei Noten mit der Standardposition von Fingersatzanweisungen
und die Positionen, wenn X-offset
und Y-offset
verändert werden.
a'-3 a' -\tweak X-offset #0 -\tweak Y-offset #0 -3 a' -\tweak X-offset #-1 -\tweak Y-offset #1 -3
Das side-position-interface
benutzen
Ein Objekt, das die side-position-interface
-Schnittstelle
unterstützt, kann neben sein Elternobjekt gesetzt werden,
sodass zwei definierte Enden der Objekte sich berühren.
Das Objekt kann über, unter, rechts oder links vom
Ursprungsobjekt positioniert werden. Das Ursprungsobjekt
kann nicht definiert werden: es ergibt sich aus der Reihenfolge
der Objekte in der Eingabe. Die meisten Objekte haben
einen Notenkopf als Ursprung assoziiert.
Die Werte von side-axis
und direction
bestimmen,
wo das Objekt platziert werden soll, wie in der Tabelle
zu sehen:
side-axis - | direction - | |
---|---|---|
Eigenschaft | Eigenschaft | Platzierung |
0 | -1 | links |
0 | 1 | rechts |
1 | -1 | unten |
1 | 1 | oben |
Wenn side-axis
gleich 0
ist, sollte X-offset
auf die Prozedur ly:side-position-interface::x-aligned-side
gesetzt werden. Diese Prozedur errechnet den richtigen Wert für
X-offset
, sodass das Objekt auf der rechten oder linken
Seite des Ursprungs angeordnet wird, entsprechend dem Wert
der direction
-Eigenschaft.
Wenn side-axis
gleich 1
ist, sollte Y-offset
auf die Prozedur ly:side-position-interface::y-aligned-side
gesetzt werden. Diese Prozedur errechnet den richtigen Wert für
Y-offset
, sodass das Objekt über oder unter dem Ursprungsobjekt
angeordnet wird, entsprechend dem Wert der direction
-Eigenschaft.
Das self-alignment-interface
benutzen
Selbstausrichtende Objekte horizontal
Die horizontale Ausrichtung eines Objektes, das die
self-alignment-interface
-(Selbstausrichtungs)-Schnittstelle
unterstützt, wird durch den Wert von self-alignment-X
kontrolliert, vorausgesetzt die Eigenschaft X-offset
des
Objektes ist auf ly:self-alignment-interface::x-aligned-on-self
gesetzt. self-alignment-X
kann eine beliebige reale
Zahl zugewiesen werden, in Einheiten der Hälfte der
X-Gesamtausdehnung des Objekts. Negative Werte verschieben
das Objekt nach rechts, positive nach links. Ein Wert von
0
zentriert das Objekt auf dem Referenzpunkt des
Ursprungs, ein Wert von -1
richtet die linke Ecke des
Objekts am Referenzpunkt des Ursprungsobjektes aus, ein
Wert von 1
richtet die rechte Ecke des Objektes am
Referenzpunkt des Ursprungsobjektes aus. Die Symbole
LEFT
, CENTER
und RIGHT
können anstelle
von -1
, 0
und 1
eingesetzt werden.
Normalerweise würde der \override
-Befehl benutzt werden, um
die Werte von self-alignment-X
zu verändern, aber der
\tweak
-Befehl kann benutzen, um verschiedene Anmerkungen
an einer einzigen Note auszurichten:
a' -\tweak self-alignment-X #-1 ^"left-aligned" -\tweak self-alignment-X #0 ^"center-aligned" -\tweak self-alignment-X #RIGHT ^"right-aligned" -\tweak self-alignment-X #-2.5 ^"aligned further to the right"
Objekte vertikal automatisch ausrichten
Objekte können auf ähnliche Weise auch vertikal aneinander
ausgerichtet werden, wenn ihre Y-offset
-Eigenschaft
auf ly:self-alignment-interface::y-aligned-on-self
gesetzt ist. Oft greifen jedoch auch andere Mechanismen
bei der vertikalen Ausrichtung ein: Der Wert von
Y-offset
ist nur eine der Variablen, die für die
Berechnung benutzt werden. Darum ist es kompliziert, den
Wert für einige Objekte richtig anzupassen. Die Einheiten
sind Halbe der vertikalen Ausdehnung des Objektes, welche
normalerweise recht klein ist, sodass ziemlich große Werte
erforderlich sein können. Der Wert -1
richtet die
untere Kante des Objekts am Referenzpunkt des Ursprungsobjektes
aus, der Wert 0
richtet die Mitte des Objekts am
Referenzpunkt des Ursprungsobjektes aus und der Wert 1
richtet die Oberkante des Objektes am Referenzpunkt des
Ursprungsobjektes aus. Die Symbole DOWN
, CENTER
und UP
können anstelle von -1
, 0
und 1
benutzt werden.
Automatische Ausrichtung in beide Richtungen
Indem sowohl X-offset
als auch Y-offset
eingestellt
werden, kann ein Objekt gleichzeitig in beiden Richtungen ausgerichtet
werden.
Das folgende Beispiel zeigt, wie man eine Fingersatzanweisung so ausrichtet, dass sie nah am Notenkopf bleibt.
a' -\tweak self-alignment-X #0.5 % move horizontally left -\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self -\tweak self-alignment-Y #-1 % move vertically up -3 % third finger
Benutzung des break-alignable-interface
Übungszeichen und Taktzahlen können an Notationsobjekten (ausschließlich
Taktstriche) ausgerichtet werden. Zu diesen Objekten gehören
ambitus
, breathing-sign
, clef
, custos
,
staff-bar
, left-edge
, key-cancellation
,
key-signature
und time-signature
.
Standardmäßig werden Übungszeichen und Taktzahlen horizontal über dem Objekt zentriert:
% The RehearsalMark will be centered above the Clef \override Score.RehearsalMark.break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" e1 % The RehearsalMark will be centered above the TimeSignature \override Score.RehearsalMark.break-align-symbols = #'(time-signature) \key a \major \clef treble \time 3/4 \mark "↓" e2. % The rehearsal mark will be centered above the Breath Mark \override Score.RehearsalMark.break-align-symbols = #'(breathing-sign) \key a \major \clef treble \time 4/4 e1 \breathe \mark "↓"
Eine Liste von möglichen Objekten zur Ausrichtung kann definiert
werden. Wenn eins dieser Objekte an der aktuellen Stelle unsichtbar
ist (etwa durch Einstellung von break-visibility
oder die
expliziten Sichtbarkeitseinstellungen von Taktart und Vorzeichen),
werden Übungszeichen und Taktzahlen an dem ersten Objekt in der
Liste ausgerichtet, dass sichtbar ist. Wenn keine Objekte in der
Liste sichtbar sind, wird das Objekt am Taktstrich ausgerichtet.
Wenn der Taktstrich unsichtbar ist, wird das Objekt an der Stelle
ausgerichtet, an der sich der Taktstrich befinden würde.
% The RehearsalMark will be centered above the Key Signature \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e1 % The RehearsalMark will be centered above the Clef \set Staff.explicitKeySignatureVisibility = #all-invisible \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef bass \mark "↓" gis,,1 % The rehearsal mark will be centered above the Bar Line \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
Die Ausrichtung des Übungszeichen relativ zum Notationsobjekt kann verändert werden, wie das nächste Beispiel zeigt. In einer Partitur mit vielen Systemen würde man diese Einstellung für alle Systeme vornehmen.
% The RehearsalMark will be centered above the KeySignature \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e1 % The RehearsalMark will be aligned with the left edge of the KeySignature \once \override Score.KeySignature.break-align-anchor-alignment = #LEFT \mark "↓" \key a \major e1 % The RehearsalMark will be aligned with the right edge of the KeySignature \once \override Score.KeySignature.break-align-anchor-alignment = #RIGHT \key a \major \mark "↓" e1
Das Übungszeichen kann auch nach rechts oder links um einen beliebigen Wert verschoben werden. Die Einheiten sind in Notenlinienzwischenräumen:
% The RehearsalMark will be aligned with the left edge of the KeySignature % and then shifted right by 3.5 staff-spaces \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \once \override Score.KeySignature.break-align-anchor = #3.5 \key a \major \mark "↓" e1 % The RehearsalMark will be aligned with the left edge of the KeySignature % and then shifted left by 2 staff-spaces \once \override Score.KeySignature.break-align-anchor = #-2 \key a \major \mark "↓" e1