version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.11.51"
+@c \version "2.12.0"
@ignore
GDP TODO list
Two functions are available for changing the paper size:
@code{set-default-paper-size} and @code{set-paper-size}.
-@code{set-default-paper-size} may be placed in a @code{\paper}
-block or in the toplevel scope, and @code{set-paper-size} must be
-placed in a @code{\paper} block:
+@code{set-default-paper-size} must be placed in the toplevel
+scope, and @code{set-paper-size} must be placed in a @code{\paper}
+block:
@example
#(set-default-paper-size "a4")
@seealso
-
Installed Files:
@file{scm/@/paper@/.scm}.
@seealso
-
Notation Reference:
@ref{Vertical spacing between systems}.
@seealso
-
Snippets:
@rlsr{Spacing}.
will result in the first page number remaining as is or being
increased by one. Default: @code{##f}.
+@ignore
+
+FIXME: this variable is used, but I don't know what it does. -pm
+@item blank-after-score-page-force
+@funindex blank-after-score-page-force
+
+Default: @code{2}.
+
+@end ignore
+
@item blank-last-page-force
@funindex blank-last-page-force
never consider blank pages in the middle of a score. Default:
@code{5}.
-@item blank-after-score-page-force
-@funindex blank-after-score-page-force
-
-TODO. Default: @code{2}.
-
@item first-page-number
@funindex first-page-number
The value of the page number on the first page. Default:
@code{#1}.
-@item packed
-@funindex packed
-
-TODO
-
@item page-breaking-between-system-padding
@funindex page-breaking-between-system-padding
@item page-count
@funindex page-count
-TODO
+The number of pages to be used for a score. Default: unset.
@item page-limit-inter-system-space
@funindex page-limit-inter-system-space
(horizontal) spacing. High values will make page spacing more
important. Default: @code{#10}.
-@item printallheaders
-@funindex printallheaders
+@item print-all-headers
+@funindex print-all-headers
If set to true, this will print all headers for each \score in the
output. Normally only the piece and opus header variables are
Pieces that amply fill two pages or more should have this set to
true.
+It also affects the last page of book parts, ie parts of a book created
+with @code{\bookpart} blocks.
+
@item ragged-right
@funindex ragged-right
If the score has only one system, the default value is @code{##t}.
-@item systemSeparatorMarkup
-@funindex systemSeparatorMarkup
+@item system-separator-markup
+@funindex system-separator-markup
A markup object that is inserted between systems. This is often
used for orchestral scores. Default: unset.
\relative { c1 \break c1 }
}
\paper {
- systemSeparatorMarkup = \slashSeparator
+ system-separator-markup = \slashSeparator
}
}
@end lilypond
@seealso
-
Snippets:
@rlsr{Spacing}.
@rinternals{StaffSymbol}) can be used to tune the size for individual
staves. The sizes of individual staves are relative to the global size.
-@example
-
-@end example
-
@seealso
-
Notation Reference:
@ref{Selecting notation font size}.
@seealso
-
Notation Reference:
@ref{Changing context default settings}.
@predefined
-
@funindex \break
@code{\break},
@funindex \noBreak
@code{\noBreak}.
+@endpredefined
@seealso
-
Internals Reference:
@rinternals{LineBreakEvent}.
@code{optimal-page-breaks}. If you are having trouble with the new page
breakers, you can enable the old one as a workaround.
+@funindex \bookpart
-@predefined
+When a book has many scores and pages, the page breaking problem may be
+difficult to solve, requiring large processing time and memory. To ease
+the page breaking process, @code{\bookpart} blocks are used to divide
+the book into several parts: the page breaking occurs separately on each
+part. Different page breaking functions may also be used in different
+book parts.
+@example
+\bookpart @{
+ \header @{
+ subtitle = "Preface"
+ @}
+ \paper @{
+ %% In a part consisting mostly of text,
+ %% ly:minimal-breaking may be prefered
+ #(define page-breaking ly:minimal-breaking)
+ @}
+ \markup @{ @dots{} @}
+ @dots{}
+@}
+\bookpart @{
+ %% In this part, consisting of music, the default optimal
+ %% page breaking function is used.
+ \header @{
+ subtitle = "First movement"
+ @}
+ \score @{ @dots{} @}
+ @dots{}
+@}
+@end example
+
+
+@predefined
@funindex \pageBreak
@code{\pageBreak},
@funindex \noPageBreak
@code{\noPageBreak}.
+@endpredefined
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@predefined
-
@funindex \pageTurn
@code{\pageTurn},
@funindex \noPageTurn
@code{\noPageTurn},
@funindex \allowPageTurn
@code{\allowPageTurn}.
+@endpredefined
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Notation Reference:
@ref{Vertical spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
To understand how each of these different settings work, we begin
by looking at an example that includes no overrides at all.
-@lilypond[quote,ragged-right]
-\new Score <<
- \new Staff <<
- \new Voice {
- s1 * 6 \break
- s1 * 6 \break
- s1 * 6 \break
- }
- \new Voice { \repeat unfold 18 { c'4 c'4 c'4 c'4 } }
- >>
- \new Staff {
- \repeat unfold 18 { d'4 d'4 d'4 d'4 }
+@c \book { } is required in these examples to ensure the spacing
+@c overrides can be seen between systems. -np
+
+@lilypond[quote]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ s1*5 \break
+ s1*5 \break
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
}
->>
+}
@end lilypond
This score isolates line- and page-breaking information in a dedicated
the @code{Y-offset} pair in the @code{line-break-system-details}
attribute of the @code{NonMusicalPaperColumn} grob:
-@lilypond[quote,ragged-right]
-\new Score <<
- \new Staff <<
- \new Voice {
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 0))
- s1 * 6 \break
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 40))
- s1 * 6 \break
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 80))
- s1 * 6 \break
- }
- \new Voice { \repeat unfold 18 { c'4 c'4 c'4 c'4 } }
- >>
- \new Staff {
- \repeat unfold 18 { d'4 d'4 d'4 d'4 }
+@lilypond[quote]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 0))
+ s1*5 \break
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 40))
+ s1*5 \break
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 80))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
}
->>
+}
@end lilypond
Note that @code{line-break-system-details} takes an associative list of
within each system manually. We do this using the @code{alignment-offsets}
subproperty of @code{line-break-system-details}.
-@lilypond[quote,ragged-right]
-\new Score <<
- \new Staff <<
- \new Voice {
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 20)
- (alignment-offsets . (0 -15)))
- s1 * 6 \break
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 60)
- (alignment-offsets . (0 -15)))
- s1 * 6 \break
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 100)
- (alignment-offsets . (0 -15)))
- s1 * 6 \break
- }
- \new Voice { \repeat unfold 18 { c'4 c'4 c'4 c'4 } }
- >>
- \new Staff {
- \repeat unfold 18 { d'4 d'4 d'4 d'4 }
+@lilypond[quote]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 20)
+ (alignment-offsets . (0 -15)))
+ s1*5 \break
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 60)
+ (alignment-offsets . (0 -15)))
+ s1*5 \break
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 100)
+ (alignment-offsets . (0 -15)))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
}
->>
+}
@end lilypond
Note that here we assign two different values to the
every system and every staff. Finally, note that @code{alignment-offsets}
specifies the vertical positioning of staves but not of staff groups.
-@lilypond[quote,ragged-right]
-\new Score <<
- \new Staff <<
- \new Voice {
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 0)
- (alignment-offsets . (0 -30 -40)))
- s1 * 6 \break
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 60)
- (alignment-offsets . (0 -10 -20)))
- s1 * 6 \break
- \overrideProperty #"Score.NonMusicalPaperColumn"
- #'line-break-system-details #'((Y-offset . 100)
- (alignment-offsets . (0 -10, -40)))
- s1 * 6 \break
- }
- \new Voice { \repeat unfold 18 { c'4 c'4 c'4 c'4 } }
- >>
- \new StaffGroup <<
- \new Staff {
- \repeat unfold 18 { d'4 d'4 d'4 d'4 }
- }
- \new Staff {
- \repeat unfold 18 { e'4 e'4 e'4 e'4 }
- }
- >>
->>
+@lilypond[quote]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 0)
+ (alignment-offsets . (0 -30 -40)))
+ s1*5 \break
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 60)
+ (alignment-offsets . (0 -10 -20)))
+ s1*5 \break
+ \overrideProperty #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details #'((Y-offset . 100)
+ (alignment-offsets . (0 -10 -40)))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new StaffGroup <<
+ \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
+ \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
+ >>
+ >>
+ }
+}
@end lilypond
Some points to consider:
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
c^"This text is placed close to the previous text"
@end lilypond
-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
+By default, outside-staff objects are placed only to avoid
+a horizontal collision with previously-positioned grobs. This
can lead to situations in which objects are placed very close to each
-other horizontally. Setting @code{outside-staff-horizontal-padding}
+other horizontally. The vertical spacing between staffs can
+also be set so that outside staff objects are interleaved.
+Setting @code{outside-staff-horizontal-padding}
causes an object to be offset vertically so that such a situation
doesn't occur.
@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
% the markup is too close to the following note
-c2^"Text"
+c4^"Text"
+c4
c''2
% setting outside-staff-horizontal-padding fixes this
R1
\once \override TextScript #'outside-staff-horizontal-padding = #1
-c,,2^"Text"
+c,,4^"Text"
+c4
c''2
@end lilypond
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Notation Reference:
@ref{New spacing area}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Notation Reference:
@ref{Page formatting},
@ref{Changing horizontal spacing}.