Previous: \set vs. \override, Up: The \override command
There are a few classes of difficult adjustments.
\override
s.
In other words, an \override
always affects all pieces of a
broken spanner. To change only one part of a spanner at a line break,
it is necessary to hook into the formatting process. The
after-line-breaking
callback contains the Scheme procedure that
is called after the line breaks have been determined, and layout
objects have been split over different systems.
In the following example, we define a procedure
my-callback
. This procedure
extra-offset
.
This procedure is installed into Tie, so the last part of the broken tie is translated up.
#(define (my-callback grob) (let* ( ; have we been split? (orig (ly:grob-original grob)) ; if yes, get the split pieces (our siblings) (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '() ))) (if (and (>= (length siblings) 2) (eq? (car (last-pair siblings)) grob)) (ly:grob-set-property! grob 'extra-offset '(-2 . 5))))) \relative c'' { \override Tie #'after-line-breaking = #my-callback c1 ~ \break c2 ~ c }
When applying this trick, the new after-line-breaking
callback
should also call the old one after-line-breaking
, if there is
one. For example, if using this with Hairpin
,
ly:hairpin::after-line-breaking
should also be called.
\override
for
technical reasons. Examples of those are NonMusicalPaperColumn
and PaperColumn
. They can be changed with the
\outputProperty
function, which works similar to \once
\override
, but uses a different syntax,
\outputProperty #"Score.NonMusicalPaperColumn" % Grob name #'line-break-system-details % Property name #'((next-padding . 20)) % Value
Previous: \set vs. \override, Up: The \override command
This page is for LilyPond-2.10.33 (stable-branch).