diff --git a/Documentation/user/spacing.itely b/Documentation/user/spacing.itely index 8145251..0183e5a 100644 --- a/Documentation/user/spacing.itely +++ b/Documentation/user/spacing.itely @@ -211,6 +211,13 @@ top-most of the next system. Default address@hidden Increasing this will put systems whose bounding boxes almost touch farther apart. address@hidden page-breaking-between-system-padding address@hidden between-system-padding +This variable, if set, tricks the page breaker into thinking that address@hidden is set to something different than it +really is. For example, if this variable is set to something substantially +larger than @code{between-system-padding}, then the page-breaker will put +fewer systems on each page. @funindex horizontal-shift @item horizontal-shift @@ -559,12 +566,6 @@ This makes the following 28 measures (assuming 4/4 time) be broken every Internals: @internalsref{LineBreakEvent}. -A linebreaking configuration can now be saved as a @code{.ly} file -automatically. This allows vertical alignments to be stretched to -fit pages in a second formatting run. This is fairly new and -complicated. More details are available in address@hidden - @refbugs @@ -841,7 +842,6 @@ staves inside a system. * Vertical spacing inside a system:: * Vertical spacing between systems:: * Explicit staff and system positioning:: -* Two-pass vertical spacing:: * Vertical collision avoidance:: @end menu @@ -881,6 +881,61 @@ first number is generally negative. The numbers need not match; for example, the staff can be made larger at the bottom by setting it to @code{(-6 . 4)}. +After page breaks are determined, the vertical spacing within each +system is reevaluated in order to fill the page more evenly; if a page +has space left over, systems are stretched in order to fill that space. +The amount of stretching can be configured though the @code{max-stretch} +property of the @internalsref{VerticalAlignment} grob. To disable this +stretching entirely, set @code{max-stretch} to zero. + +In some situations, you may want to stretch most of a system while +leaving some parts fixed. For example, if a piano part occurs in the +middle of an orchestral score, you may want to leave the piano staves +close to each other while stretching the rest of the score. The address@hidden property of address@hidden can be used to achieve this. When set +to @code{##t}, this property keeps its staff (or line of lyrics) from +moving relative to the one directly above it. In the example above, +you would override @code{keep-fixed-while-stretching} to @code{##t} in +the second piano staff: + address@hidden +#(set-default-paper-size "a6") +#(set-global-staff-size 14.0) + +\book { +\paper { + ragged-last-bottom = ##f +} + +\score { +\new GrandStaff +<< + \new StaffGroup + << + \new Staff {c' d' e' f'} + \new Staff {c' d' e' f'} + \new Staff {c' d' e' f'} + >> + + \new PianoStaff + << + \new Staff {c' d' e' f'} + \new Staff \with { + \override VerticalAxisGroup #'keep-fixed-while-stretching = ##t + } + {c' d' e' f'} + >> + + \new StaffGroup + << + \new Staff {c' d' e' f'} + \new Staff {c' d' e' f'} + >> +>> +} +} address@hidden lilypond @seealso @@ -1112,62 +1167,6 @@ to print staves or systems on top of one another. Reasonable values passed to these different settings will avoid this. @end itemize - address@hidden Two-pass vertical spacing address@hidden Two-pass vertical spacing - -In order to automatically stretch systems so that they should fill the -space left on a page, a two-pass technique can be used: - address@hidden address@hidden In the first pass, the amount of vertical space used to increase -the height of each system is computed and dumped to a file. address@hidden In the second pass, spacing inside the systems are -stretched according to the data in the page layout file. address@hidden enumerate - -The @code{ragged-bottom} property adds space between systems, while -the two-pass technique adds space between staves inside a system. - -To allow this behaviour, a @code{tweak-key} variable has to be set in -each score @code{\layout} block, and the tweaks included in each score -music, using the @code{\scoreTweak} music function. - address@hidden address@hidden -%% include the generated page layout file: -\includePageLayoutFile - -\score { - \new StaffGroup << - \new Staff << - %% Include this score tweaks: - \scoreTweak "scoreA" - { \clef french c''1 \break c''1 } - >> - \new Staff { \clef soprano g'1 g'1 } - \new Staff { \clef mezzosoprano e'1 e'1 } - \new Staff { \clef alto g1 g1 } - \new Staff { \clef bass c1 c1 } - >> - \header { - piece = "Score with tweaks" - } - %% Define how to name the tweaks for this score: - \layout { #(define tweak-key "scoreA") } -} address@hidden verbatim address@hidden quotation - -For the first pass, the @code{dump-tweaks} option should be set to -generate the page layout file. - address@hidden -lilypond -dbackend=null -d dump-tweaks .ly -lilypond .ly address@hidden example - - @node Vertical collision avoidance @subsection Vertical collision avoidance