LilyPond Benutzerhandbuch: 5.5.1 Objekte ausrichten

### 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

#### 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, 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, 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

Andere Sprachen: English, español, 日本語.

#### LilyPond – Notationsreferenz