nächstes: , aufwärts: Kollision von Objekten


4.5.1 Verschieben von Objekten

Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht perfekt. Einige Notationselemente können sich überschneiden. Das ist nicht schön, kann aber (in den meisten Fällen) sehr einfach korrigiert werden.

TODO: Mit den neuen Abstandseigenschaften seit Version 2.12 sind die jeweiligen Beispiele nicht mehr relevant. Sie zeigen jedoch immer noch machtvolle Eigenschaften von LilyPond und verbleiben deshalb in der Dokumentation, bis jemand bessere Beispiel zur Verfügung stellt.

     
       % temporary code to break this example:
       \override TextScript #'outside-staff-priority = ##f
     e4^\markup{ \italic ritenuto } g b e

[image of music]

Die einfachste Lösung ist es, Abstände zwischen Objekt und Note zu vergrößern (genauso auch für Fingersätze oder Dynamikzeichen). In LilyPond wird das durch Veränderung der padding (Füllungs)-Eigenschaft erreicht, ihre Maßeinheit sind Notenzeilenabstände. Für die meisten Objekte ist der Wert etwa 1.0 oder weniger (das unterscheidet sich von Objekt zu Objekt). Hier soll der Abstand vergrößert werden, also scheint 1.5 eine gute Wahl.

     
       % temporary code to break this example:
       \override TextScript #'outside-staff-priority = ##f
     \once \override TextScript #'padding = #1.5
     e4^\markup{ \italic ritenuto } g b e

[image of music]

Das sieht besser aus, ist aber noch nicht groß genug. Nach einigen Experimenten wird darum 2.3 genommen für diesen Fall. Diese Zahl ist aber nur das Resultat einigen Probierens und persönlicher Geschmack. Probieren Sie selber ein wenig herum und entscheiden Sie nach eigenem Geschmack.

Die staff-padding-Eigenschaft ist der vorigen sehr ähnlich. padding entscheidet über den minimalen Abstand zwischen einem Objekt und dem nächsten anderen Objekt (meistens eine Note oder Notenzeile); staff-padding entscheidet über den minimalen Abstand zwischen einem Objekt und dem Notensystem. Das ist nur ein kleiner Unterschied, aber hier wird das Verhalten demonstriert:

     
       % temporary code to break this example:
       \override TextScript #'outside-staff-priority = ##f
     c4^"piu mosso" b a b
     \once \override TextScript #'padding = #4.6
     c4^"piu mosso" d e f
     \once \override TextScript #'staff-padding = #4.6
     c4^"piu mosso" fis a g
     \break
     c'4^"piu mosso" b a b
     \once \override TextScript #'padding = #4.6
     c4^"piu mosso" d e f
     \once \override TextScript #'staff-padding = #4.6
     c4^"piu mosso" fis a g

[image of music]

Eine andere Lösung ermöglicht vollständige Kontrolle über die Positionierung eines Objektes sowohl horizontal als auch vertikal. Das wird mit der extra-offset (Zusätzlicher-Abstand)-Eigenschaft erreicht. Das ist etwas komplizierter und kann andere Probleme mit sich ziehen. Wenn Objekte mit dieser Eigenschaft verschoben werden, heißt das, dass LilyPond sie erst setzt, nachdem alle anderen Objekte positioniert worden sind. Deshalb können sich die Objekte am Ende überlagern.

     
       % temporary code to break this example:
       \override TextScript #'outside-staff-priority = ##f
     \once \override TextScript #'extra-offset = #'( 1.0 . -1.0 )
     e4^\markup{ \italic ritenuto } g b e

[image of music]

Bei Verwendung von extra-offset bestimmt die erste Zahl über die horizontale Verschiebung (nach links ist negativ), die zweite Zahl bestimmt die vertikale Verschiebung (nach oben ist positiv). Nach einigen Experimenten wurden hier folgende Werte für gut befunden:

     
       % temporary code to break this example:
       \override TextScript #'outside-staff-priority = ##f
     \once \override TextScript #'extra-offset = #'( -1.6 . 1.0 )
     e4^\markup{ \italic ritenuto } g b e

[image of music]

Auch diese Zahlen sind nur Resultat einigen Herumprobierens und Vergleichens der Ergebnisse. Sie wollen den Text vielleicht etwas höher oder etwas mehr nach links setzen. Versuchen Sie es selber und vergleichen Sie das Ergebnis.

Eine letzte Warnung: in diesem Kapitel haben wir den Befehl

\once \override TextScript ...

benutzt. Dieser Befehl verändert die Anzeige des Textes für die nächste Note. Wenn die Note keinen Text zugeordnet hat, wird auch nichts verändert (und es wird nicht nach dem nächsten Text gesucht). Um das Verhalten zu verändern, so dass alles, was nach dem Befehl kommt, verändert wird, müssen Sie den Befehl \once weglassen. Um die Veränderung zu stoppen, benutzen Sie den Befehl \revert. Das wird genauer im Kapitel Der override-Befehl erklärt.

     
       % temporary code to break this example:
       \override TextScript #'outside-staff-priority = ##f
     c4^"piu mosso" b
     \once \override TextScript #'padding = #4.6
       a4 b
     c4^"piu mosso" d e f
     \once \override TextScript #'padding = #4.6
     c4^"piu mosso" d e f
     c4^"piu mosso" d e f
     \break
     \override TextScript #'padding = #4.6
     c4^"piu mosso" d e f
     c4^"piu mosso" d e f
     \revert TextScript #'padding
     c4^"piu mosso" d e f

[image of music]

Siehe auch

Der override-Befehl, Übliche Optimierungen.

Diese Seite ist für LilyPond-2.11.58 (Entwicklungszweig).

Fehler bitte an http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs melden.

Ihre Vorschläge für die Dokumentation sind willkommen.

Andere Sprachen: English, français, español.