Previous: \set vs. \override, Up: The \override command
There are a few classes of difficult adjustments.
\overrides.
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.25 (stable-branch).