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
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
+
+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
+@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}.
@rinternals{SpacingSpanner},
@rinternals{NoteSpacing},
@rinternals{StaffSpacing},
-@rinternals{SeparationItem}.
+@rinternals{NonMusicalPaperColumn}.
@knownissues
There is no convenient mechanism to manually override spacing. The
-following work-around may be used to insert extra space into a score.
+following work-around may be used to insert extra space into a score,
+adjusting the padding value as necessary.
@example
- \once \override Score.SeparationItem #'padding = #1
+ \override Score.NonMusicalPaperColumn #'padding = #10
@end example
No work-around exists for decreasing the amount of space.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Snippets:
@rlsr{Spacing}.
@seealso
-
Notation Reference:
@ref{New spacing area}.
}
@end lilypond
+
@noindent
-All layout dimensions are displayed in staff spaces, regardless of
-the units specified in the @code{\paper} or @code{\layout} block.
-For example, @code{paper-height} has a value of 59.75 staff
-spaces, using the default staff size of 20 points, which is
-equivalent to 148 millimeters, the height of @code{a6} paper in
-landscape orientation. The pairs (@var{a},@var{b}) are intervals,
-where @var{a} is the lower edge and @var{b} the upper edge of the
-interval.
+All layout dimensions are displayed in staff-spaces, regardless
+of the units specified in the @code{\paper} or @code{\layout} block.
+In the above example, @code{paper-height} has a value of 59.75
+@code{staff-spaces}, and the @code{staff-size} is 20 points (the
+default value). Note that:
+@multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm}
-@seealso
+@item 1 point
+@tab = (25.4/72.27) mm
+
+@item 1 staff-space
+@tab = (@code{staff-size})/4 pts
+@item
+@tab = (@code{staff-size})/4 * (25.4/72.27) mm
+@end multitable
+
+@noindent
+In this case, one @code{staff-space} is approximately equal to
+1.757mm. Thus the @code{paper-height} measurement of 59.75
+@code{staff-spaces} is equivalent to 105 millimeters, the height
+of @code{a6} paper in landscape orientation. The pairs
+(@var{a},@var{b}) are intervals, where @var{a} is the lower
+edge and @var{b} the upper edge of the interval.
+
+
+@seealso
+@ref{Setting the staff size}
Snippets:
@rlsr{Spacing}.
@end example
@item
-Force the number of systems. For example, if the default layout
-has 11 systems, the following assignment will force a layout with
-10 systems.
+Force the number of systems. This can help in two ways. Just
+setting a value, even the same value as the number of systems
+being typeset by default, will sometimes cause more systems to
+be fitted onto each page, as an estimation step is then bypassed,
+giving a more accurate fit to each page. Also, forcing an actual
+reduction in the number of systems may save a further page. For
+example, if the default layout has 11 systems, the following
+assignment will force a layout with 10 systems.
@example
\paper @{
@seealso
-
Notation Reference:
@ref{Page formatting},
@ref{Changing horizontal spacing}.