Previous: Two-pass vertical spacing, Up: Vertical spacing
Intuitively, there are some objects in musical notation that belong to the staff and there are other objects that should be placed outside the staff. Objects belonging outside the staff include things such as rehearsal marks, text and dynamic markings (from now on, these will be called outside-staff objects). LilyPond's rule for the vertical placement of outside-staff objects is to place them as close to the staff as possible but not so close that they collide with another object.
LilyPond uses the outside-staff-priority
property to determine
whether a grob is an outside-staff object: if outside-staff-priority
is a number, the grob is an outside-staff object. In addition,
outside-staff-priority
tells LilyPond in which order the objects
should be placed.
First, LilyPond places all the objects that do not belong outside
the staff. Then it sorts the outside-staff objects according to their
outside-staff-priority
(in increasing order). One by one, LilyPond
takes the outside-staff objects and places them so that they do
not collide with any objects that have already been placed. That
is, if two outside-staff grobs are competing for the same space, the one
with the lower outside-staff-priority
will be placed closer to
the staff.
c4_"Text"\pp r2. \once \override TextScript #'outside-staff-priority = #1 c4_"Text"\pp % this time the text will be closer to the staff r2. % by setting outside-staff-priority to a non-number, % we disable the automatic collision avoidance \once \override TextScript #'outside-staff-priority = ##f \once \override DynamicLineSpanner #'outside-staff-priority = ##f c4_"Text"\pp % now they will collide
The vertical padding between an outside-staff object and the
previously-positioned grobs can be controlled with
outside-staff-padding
.
\once \override TextScript #'outside-staff-padding = #0 a'^"This text is placed very close to the note" \once \override TextScript #'outside-staff-padding = #3 c^"This text is padded away from the previous text" c^"This text is placed close to the previous text"
TODO: this example doesn't work any more ?
By default, outside-staff objects are placed without regard to
their horizontal distance from the previously-positioned grobs. This
can lead to situations in which objects are placed very close to each
other horizontally. Setting outside-staff-horizontal-padding
causes an object to be offset vertically so that such a situation
doesn't occur.
% the markup is too close to the following note c2^"Text" c''2 % setting outside-staff-horizontal-padding fixes this R1 \once \override TextScript #'outside-staff-horizontal-padding = #1 c,,2^"Text" c''2
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.