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

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

[image of music]


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-
EigenschaftEigenschaftPlatzierung
0-1links
01rechts
1-1unten
11oben

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"

[image of music]

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

[image of music]


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 "↓"

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]


LilyPond – Notationsreferenz v2.23.82 (Entwicklungszweig).