]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/spacing.itely
Merge branch 'master' into translation
[lilypond.git] / Documentation / notation / spacing.itely
index d3cfa42ff17af0a4f8256ef8a2b76a58b9fe0f23..daf43ec540aec955bf7cfa3d5a5b5bef0ebcb2a1 100644 (file)
@@ -570,20 +570,20 @@ the distance between two (title or top-level) markups.
 @funindex last-bottom-spacing
 
 the distance from the last system or top-level markup on a page to
-the bottom of the printable area (i.e. the top of the bottom
+the bottom of the printable area (i.e., the top of the bottom
 margin).
 
 @item top-system-spacing
 @funindex top-system-spacing
 
-the distance from the top of the printable area (i.e. the bottom
+the distance from the top of the printable area (i.e., the bottom
 of the top margin) to the first system on a page, when there is no
 (title or top-level) markup between the two.
 
 @item top-markup-spacing
 @funindex top-markup-spacing
 
-the distance from the top of the printable area (i.e. the bottom
+the distance from the top of the printable area (i.e., the bottom
 of the top margin) to the first (title or top-level) markup on a
 page, when there is no system between the two.
 @end table
@@ -637,11 +637,11 @@ Also see @code{check-consistency}.
 When specified in a @code{\paper} block this defines the horizontal
 extent available for the staff lines in un-indented systems.  If left
 unspecified, the paper's @code{line-width} is determined from
-@code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}
+@code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}.
 If the paper's @code{line-width} is specified, and both
-@code{left-margin} and @code{right-margin} are not, then the
-margins will be updated to center the systems on the page
-automatically.  Also see @code{check-consistency}.
+@code{left-margin} and @code{right-margin} are not, then the margins
+will be updated to center the systems on the page automatically.  Also
+see @code{check-consistency}.
 
 @code{line-width}s for individual scores can be specified in the
 scores' @code{\layout} blocks.  These values control the width of the
@@ -892,8 +892,9 @@ Default values not listed here are defined in
 
 The page-breaking algorithm to use.  Choices are
 @code{ly:minimal-breaking}, @code{ly:page-turn-breaking},
-@code{ly:one-line-breaking}, @code{ly:one-line-auto-height-breaking},
-and @code{ly:optimal-breaking} (the default).
+@code{ly:one-page-breaking}, @code{ly:one-line-breaking},
+@code{ly:one-line-auto-height-breaking}, and @code{ly:optimal-breaking}
+(the default).
 
 @item page-breaking-system-system-spacing
 @funindex page-breaking-system-system-spacing
@@ -927,7 +928,7 @@ scores (if there are two or more scores), or by ending a score on an
 even-numbered page.  The values of the following three variables may
 be increased to make these actions less likely.
 
-The values are penalties, i.e. the higher the value the less likely
+The values are penalties, i.e., the higher the value the less likely
 will be the associated action relative to other choices.
 
 @table @code
@@ -968,7 +969,9 @@ Notation Reference:
 @ref{Optimal page breaking},
 @ref{Optimal page turning},
 @ref{Minimal page breaking},
-@ref{One-line page breaking}.
+@ref{One-page page breaking},
+@ref{One-line page breaking},
+@ref{One-line-auto-height page breaking}.
 
 Installed Files:
 @file{ly/paper-defaults-init.ly}.
@@ -1350,10 +1353,11 @@ reducing the thickness of the staff lines.
 
 @subheading Automatic font weight at different sizes
 
-The Feta font provides musical symbols at eight different
-sizes.  Each font is tuned for a different staff size: at a smaller size
-the font becomes heavier, to match the relatively heavier staff lines.
-The recommended font sizes are listed in the following table:
+The Emmentaler font provides the set of @emph{Feta} musical glyphs in
+eight different sizes; each one tuned for a different staff size.  The
+smaller the glyph size, the @qq{heavier} it becomes, so as to match the
+relatively thicker staff lines.  Recommended glyphs sizes are listed in
+the following table:
 
 @multitable @columnfractions .15 .2 .22 .2
 @item @b{font name} @tab @b{staff height (pt)} @tab @b{staff height (mm)} @tab @b{use}
@@ -1369,7 +1373,8 @@ The recommended font sizes are listed in the following table:
 
 @seealso
 Notation Reference:
-@ref{Selecting notation font size}.
+@ref{Selecting notation font size},
+@ref{The Emmentaler font}.
 
 Snippets:
 @rlsr{Spacing}.
@@ -1414,26 +1419,28 @@ To manually force a line break at a bar line, use the
 }
 @end lilypond
 
-By default, a @code{\break} in the middle of a measure is ignored,
-and a warning is printed.  To force a line break in the middle of
-a measure, add an invisible bar line with @w{@samp{\bar ""}}:
+By default, a @code{\break} command inserted in the @q{middle} of a
+measure will be ignored (and a warning message will be output during the
+compilation of the LilyPond file).  Adding an invisible bar line
+-- @w{@samp{\bar ""}} -- before the @code{\break} command will force the
+issue:
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c'' {
   c4 c c
-  \bar "" \break
+  \bar ""
+  \break
   c |
   c4 c c c |
 }
 @end lilypond
 
-A @code{\break} occurring at a bar line is also ignored if the
-previous measure ends in the middle of a note, such as when a
-tuplet begins and ends in different measures.  To allow
-@code{\break} commands to work in these situations, remove the
-@code{Forbid_line_break_engraver} from the @code{Voice} context.
-Note that manually forced line breaks have to be added in parallel
-with the music:
+A @code{\break} command that occurrs at a bar line will also ignored if
+the previous measure ends in the middle of a note (e.g., when a tuplet
+begins in one measure and ends in another).  In this case remove the
+@code{Forbid_line_break_engraver} from the @code{Voice} context and,
+use a simultaneous music construction inserting the @code{\break} at the
+appropriate place in the second @q{voice}:
 
 @lilypond[quote,ragged-right,verbatim]
 \new Voice \with {
@@ -1446,9 +1453,9 @@ with the music:
 }
 @end lilypond
 
-Similarly, line breaks are normally forbidden when beams cross bar
-lines.  This behavior can be changed by setting
-@code{\override Beam.breakable = ##t}:
+Similarly, by default, line breaks are ignored when beams cross bar
+lines.  Use the @code{\override Beam.breakable = ##t} command to force
+this:
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c'' {
@@ -1458,7 +1465,7 @@ lines.  This behavior can be changed by setting
 }
 @end lilypond
 
-The @code{\noBreak} command forbids a line break at the bar line
+The @code{\noBreak} command will prevent a line break at the bar line
 where it is inserted.
 
 Within a score, automatic line breaking is prevented within music
@@ -1558,6 +1565,7 @@ how to modify them.
 * Manual page breaking::
 * Optimal page breaking::
 * Minimal page breaking::
+* One-page page breaking::
 * One-line page breaking::
 * One-line-auto-height page breaking::
 * Optimal page turning::
@@ -1704,6 +1712,26 @@ Snippets:
 @rlsr{Spacing}.
 
 
+@node One-page page breaking
+@unnumberedsubsubsec One-page page breaking
+
+@funindex ly:one-page-breaking
+
+The @code{ly:one-page-breaking} function is a special-purpose
+page breaking algorithm that automatically adjusts the page height to
+fit the music, so that everything fits on a single page.  The
+@code{paper-height} variable in the paper block is ignored, but other
+settings work as usual.  In particular, the spacing between the last
+system (or top level markup) and the footer can be customized with
+@code{last-bottom-spacing} in the paper block.  The width of the page
+is left unmodified by default but can be set with @code{paper-width}
+in the paper block.
+
+@knownissues
+@code{ly:one-page-breaking} is not currently compatible with
+@code{\bookpart}.
+
+
 @node One-line page breaking
 @unnumberedsubsubsec One-line page breaking
 
@@ -1797,18 +1825,19 @@ set it to something @q{very large}.
 @end example
 
 @funindex minimumRepeatLengthForPageTurn
-With volta repeats, the @code{Page_turn_engraver} will only
-allow a page turn during the repeat if there is enough time at the
-beginning and end of the repeat to turn the page back.  If the
-repeat is very short, the @code{Page_turn_engraver} can also be
-used to disable page turns by setting a value for the context
-property @code{minimumRepeatLengthForPageTurn} where as
-@code{Page_turn_engraver} only allows turns in repeats whose
-duration is longer than this value.
-
-The page turning commands, @code{\pageTurn}, @code{\noPageTurn}
-and @code{\allowPageTurn}, may also be used at top-level, in
-top-level markups and between scores.
+
+When using volta repeats, the @code{Page_turn_engraver} will only allow
+a page turn during the repeat if there is enough time at the beginning
+and end of the repeat to turn the page back.  If the repeat is too
+short then the @code{Page_turn_engraver} can be used to @emph{disable}
+page turns by setting an appropriate value for the context property
+@code{minimumRepeatLengthForPageTurn}.  In this case the
+@code{Page_turn_engraver} will only allows turns in repeats whose
+duration is longer than the value specified.
+
+The page turning commands, @code{\pageTurn}, @code{\noPageTurn} and
+@code{\allowPageTurn}, may also be used at top-level, in top-level
+markups and between scores.
 
 @predefined
 @funindex \pageTurn
@@ -1940,7 +1969,7 @@ non-staff line if @code{staff-affinity} is @code{UP}.
 
 Each distance is measured between the @emph{reference points} of
 the two items.  The reference point for a staff is the vertical
-center of its @code{StaffSymbol} (i.e. the middle line if
+center of its @code{StaffSymbol} (i.e., the middle line if
 @code{line-count} is odd; the middle space if @code{line-count} is
 even).  The reference points for individual non-staff lines are
 given in the following table:
@@ -2104,7 +2133,7 @@ non-staff line.  Choices are @code{UP}, @code{DOWN}, and
 placed equidistant between the two nearest staves on either side,
 unless collisions or other spacing constraints prevent this.
 Adjacent non-staff lines should have non-increasing
-@code{staff-affinity} from top to bottom, e.g. a non-staff line
+@code{staff-affinity} from top to bottom, e.g., a non-staff line
 set to @code{UP} should not immediately follow one that is set to
 @code{DOWN}.  Non-staff lines at the top of a system should use
 @code{DOWN}; those at the bottom should use @code{UP}.  Setting
@@ -2330,7 +2359,7 @@ Internals Reference:
 
 @emph{Non-staff lines} (such as @code{Lyrics}, @code{ChordNames},
 etc.) are contexts whose layout objects are engraved like staves
-(i.e. in horizontal lines within systems).  Specifically,
+(i.e., in horizontal lines within systems).  Specifically,
 non-staff lines are non-staff contexts that contain the
 @rinternals{Axis_group_engraver}.
 
@@ -2411,11 +2440,12 @@ padding, @code{NonMusicalPaperColumn.line-break-system-details}
 can specify exact vertical positions on the page.
 
 @code{NonMusicalPaperColumn.line-break-system-details} accepts
-an associative list of three different settings:
+an associative list of four different settings:
 
 @itemize
 @item @code{X-offset}
 @item @code{Y-offset}
+@item @code{extra-offset}
 @item @code{alignment-distances}
 @end itemize
 
@@ -2484,16 +2514,16 @@ by looking at an example that includes no overrides at all.
 }
 @end lilypond
 
-This score isolates line- and page-breaking information in a dedicated
-voice.  This technique of creating a breaks voice will help keep layout
-separate from music entry as our example becomes more complicated.
-See @ref{Breaks}.
+This score isolates both line-breaking and page-breaking information in
+a dedicated voice.  This technique of creating a breaks voice will help
+keep layout separate from music entry as our example becomes more
+complicated.  Also see @ref{Breaks}.
 
-Explicit @code{\breaks} evenly divide the music into six measures per
-line.  Vertical spacing results from LilyPond's defaults.  To set
-the vertical startpoint of each system explicitly, we can set
-the @code{Y-offset} pair in the @code{line-break-system-details}
-attribute of the @code{NonMusicalPaperColumn} grob:
+By using explicit @code{\break} commands, the music is divided into five
+measures per line.  Vertical spacing is from LilyPond's own defaults but
+the vertical startpoint of each system is set explicitly using the
+@code{Y-offset} pair in the @code{line-break-system-details} attribute
+of the @code{NonMusicalPaperColumn} grob:
 
 @lilypond[verbatim,quote,staffsize=16]
 \header { tagline = ##f }
@@ -2528,6 +2558,41 @@ potentially many values, but that we set only one value here.  Note,
 too, that the @code{Y-offset} property here determines the exact vertical
 position on the page at which each new system will render.
 
+In contrast to the absolute positioning available through
+@code{Y-offset} and @code{X-offset}, relative positioning is possible
+with the @code{extra-offset} property of
+@code{line-break-system-details}.  Placement is relative to the
+default layout or to the absolute positioning created by setting
+@code{X-offset} and @code{Y-offset}.  The property @code{extra-offset}
+accepts a @code{pair} consisting of displacements along the X-axis and
+Y-axis.
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+  \score {
+    <<
+      \new Staff <<
+        \new Voice {
+          s1*5 \break
+          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
+            #'((extra-offset . (0 . 10)))
+          s1*5 \break
+          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
+            #'((extra-offset . (0 . 10)))
+          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
+
 Now that we have set the vertical startpoint of each system
 explicitly, we can also set the vertical distances between staves
 within each system manually.  We do this using the @code{alignment-distances}
@@ -2613,9 +2678,10 @@ Some points to consider:
 do not count as a staff.
 
 @item The units of the numbers passed to @code{X-offset},
-@code{Y-offset} and @code{alignment-distances} are interpreted as multiples
-of the distance between adjacent staff lines.  Positive values move staves
-and lyrics up, negative values move staves and lyrics down.
+@code{Y-offset}, @code{extra-offset} and @code{alignment-distances} are
+interpreted as multiples of the distance between adjacent staff lines.
+Positive values move staves and lyrics up, negative values move staves
+and lyrics down.
 
 @item Because the @code{NonMusicalPaperColumn.line-break-system-details}
 settings given here allow the positioning of staves and systems anywhere
@@ -2724,7 +2790,7 @@ Snippets:
 
 @menu
 * Horizontal spacing overview::
-* New spacing area::
+* New spacing section::
 * Changing horizontal spacing::
 * Line width::
 * Proportional notation::
@@ -2795,17 +2861,17 @@ to the example above, they would be followed by half a NHW:
 \relative { c''2 c4. c8 | c4. c16[ c] c4. c8 | c8 c c4 c c }
 @end lilypond
 
+As explained in the @emph{Essay on automated music engraving}, stem
+directions will influence spacing (see @ressay{Optical spacing}) and can
+be adjusted using the @code{stem-spacing-correction} property of the
+@rinternals{NoteSpacing} object (which are generated for every
+@rinternals{Voice} context).
+
+The @code{StaffSpacing} object (generated in @rinternals{Staff} context)
+contains the same property for controlling the stem/bar line spacing.
 
-In the @emph{Essay on automated music engraving}, it was explained
-that stem directions influence spacing (see
-@ressay{Optical spacing}).  This is controlled with the
-@code{stem-spacing-correction} property in the
-@rinternals{NoteSpacing}, object.  These are generated for every
-@rinternals{Voice} context.  The @code{StaffSpacing} object
-(generated in @rinternals{Staff} context) contains the same
-property for controlling the stem/bar line spacing.  The following
-example shows these corrections, once with default settings, and
-once with exaggerated corrections:
+The following example shows this; once with the default settings and
+once with an exaggerated adjustment:
 
 @lilypond[quote,ragged-right]
 \fixed c' {
@@ -2845,21 +2911,23 @@ adjusting the padding value as necessary.
 No work-around exists for decreasing the amount of space.
 
 
-@node New spacing area
-@subsection New spacing area
+@node New spacing section
+@subsection New spacing section
 
 @funindex \newSpacingSection
-@cindex new spacing area
-@cindex spacing area, new
+@cindex new spacing section
+@cindex spacing section, new
 @cindex notes, spacing horizontally
 
-New sections with different spacing parameters can be started with
-@code{newSpacingSection}.  This is useful when there are
-sections with a different notions of long and short notes.
+New sections with different spacing parameters can be started with the
+@code{newSpacingSection} command.  This is useful for sections with
+different notions of @q{long} and @q{short} notes.  The
+@code{\newSpacingSection} command creates a new @code{SpacingSpanner}
+object at that musical moment.
 
-In the following example, the time signature change introduces a new
-section, and hence the 16ths notes are automatically spaced slightly
-wider.
+In the following example the time signature change introduces a new
+section, and the 16ths notes are automatically spaced slightly wider
+apart.
 
 @lilypond[verbatim,quote]
 \relative c' {
@@ -2872,14 +2940,12 @@ wider.
 }
 @end lilypond
 
-The @code{\newSpacingSection} command creates a new
-@code{SpacingSpanner} object at that musical moment.
 If the automatic spacing adjustments do not give the required spacing,
 manual @code{\override}s may be applied to its properties.  These must
 be applied at the same musical moment as the @code{\newSpacingSection}
-command itself.  They will then affect the spacing of all the following
+command itself and will then affect the spacing of all the following
 music until the properties are changed in a new spacing section, for
-example,
+example:
 
 @lilypond[verbatim,quote]
 \relative c' {
@@ -3280,7 +3346,7 @@ means that, by default, @code{uniform-stretching} is either turned on for the
 entire score or turned off for the entire score.  We can, however,
 override this behavior and turn on different spacing features at
 different places in the score.  We do this with the command
-@code{\newSpacingSection}.  See @ref{New spacing area}, for more info.
+@code{\newSpacingSection}.  See @ref{New spacing section}, for more info.
 
 Next we examine the effects of the @code{Separating_line_group_engraver} and
 see why proportional scores frequently remove this engraver.  The following
@@ -3376,7 +3442,7 @@ for these related settings.
 
 @seealso
 Notation Reference:
-@ref{New spacing area}.
+@ref{New spacing section}.
 
 Snippets:
 @rlsr{Spacing}.