]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/notation/spacing.itely
use trap to remove tmp directory on failure to avoid hiding mpost
[lilypond.git] / Documentation / notation / spacing.itely
index c1603fb22bf03baa99874500c8bbac1fa36e578a..05509f51f0e211cccd8bef1b95ea35701cff088b 100644 (file)
@@ -191,74 +191,86 @@ Installed Files:
 @funindex \paper
 
 @menu
-* Setting paper size::
+* Setting the paper size::
 * Automatic scaling to paper size::
 @end menu
 
 
-@node Setting paper size
-@unnumberedsubsubsec Setting paper size
+@node Setting the paper size
+@unnumberedsubsubsec Setting the paper size
 
-Two functions are available for changing the paper size:
-@code{set-default-paper-size} and @code{set-paper-size}.
-@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:
+@q{A4} is the default value when no explicit paper size is set. However,
+there are two functions that can be used to change it
+@code{set-default-paper-size},
 
 @example
-#(set-default-paper-size "a4")
+#(set-default-paper-size "quarto")
 @end example
 
+which must always be placed at the toplevel scope. and
+@code{set-paper-size},
+
 @example
 \paper @{
-  #(set-paper-size "a4")
+  #(set-paper-size "tabloid")
 @}
 @end example
 
-@noindent
-In the toplevel scope, the @code{set-default-paper-size} function
-can safely be called anywhere before the first @code{\paper}
-block.  Within a @code{\paper} block, the safest place to call
-@code{set-paper-size} is at the top, above the list of variable
-declarations.  The reasons for this are discussed in
-@ref{Automatic scaling to paper size}.
+which must always be placed in a @code{\paper} block.
 
-@code{set-default-paper-size} sets the size of all pages, whereas
-@code{set-paper-size} only sets the size of the pages that the
-@code{\paper} block applies to.  For example, if the @code{\paper}
-block is at the top of the file, then it will apply the paper size
-to all pages.  If the @code{\paper} block is inside a
+If the @code{set-default-paper-size} function is used in the toplevel
+scope, it must come before the any @code{\paper} block.
+@code{set-default-paper-size} sets the paper size for all pages,
+whereas @code{set-paper-size} only sets the paper size for the pages
+that the @code{\paper} block applies to.  For example, if the
+@code{\paper} block is at the top of the file, then it will apply the
+paper size to all pages.  If the @code{\paper} block is inside a
 @code{\book}, then the paper size will only apply to that book.
 
-Common paper sizes are available, including @code{a4},
-@code{letter}, @code{legal}, and @code{11x17} (also known as
-tabloid).  Many more paper sizes are supported by default.  For
-details, see @file{scm/paper.scm}, and search for the
-definition of @code{paper-alist}.
+When the @code{set-paper-size} function is used, it must be
+placed @emph{before} any other functions used within the same
+@code{\paper} block.  See @ref{Automatic scaling to paper size}.
 
-@c TODO add a new appendix for paper sizes (auto-generated) -pm
+Paper sizes are defined in @file{scm/paper.scm}, and while it is
+possible to add custom sizes, they will be overwritten on subsequent
+software updates.  The available paper sizes are listed in
+@ref{Predefined paper sizes}.
 
-@warning{The default paper size is @code{a4}.}
+@c An appendix entry exists for paper sizes but is not auto-generated
 
-Extra sizes may be added by editing the definition of
-@code{paper-alist} in the initialization file
-@file{scm/paper.scm}, however they will be overridden on a
-subsequent install.
+The following command can be used in the file to add a custom paper size
+which can then be used with @code{set-default-paper-size} or
+@code{set-paper-size} as appropriate,
+
+@example
+#(set! paper-alist (cons '("my size" . (cons (* 15 in) (* 3 in))) paper-alist))
+
+\paper @{
+  #(set-paper-size "my size")
+@}
+@end example
 
-@cindex orientation
-@cindex landscape
+The units @code{in} (inches), @code{cm} (centimeters) and @code{mm}
+(millimeters) can all be used.
 
-If the symbol @code{'landscape} is supplied as an argument to
-@code{set-default-paper-size}, pages will be rotated by 90
-degrees, and wider line widths will be set accordingly.
+@cindex paper size, orientation
+@cindex page, orientation
+@cindex paper size, landscape
+
+If the symbol @code{'landscape} is added to the paper size function,
+pages will be rotated by 90 degrees, and wider line widths will be set
+accordingly.
 
 @example
 #(set-default-paper-size "a6" 'landscape)
 @end example
 
+The music output will @emph{not} be rotated, just the paper size.
+
 @seealso
 Notation Reference:
-@ref{Automatic scaling to paper size}.
+@ref{Automatic scaling to paper size},
+@ref{Predefined paper sizes}.
 
 Installed Files:
 @file{scm/paper.scm}.
@@ -277,7 +289,7 @@ that the automatic scaling is not triggered by setting the
 @code{paper-width} can influence other values (this is separate
 from scaling and is discussed below).  The
 @code{set-default-paper-size} and @code{set-paper-size} functions
-are described in @ref{Setting paper size}.
+are described in @ref{Setting the paper size}.
 
 The vertical dimensions affected by automatic scaling are
 @code{top-margin} and @code{bottom-margin} (see
@@ -349,7 +361,7 @@ example orchestral scores.
 
 If set to false, systems will spread vertically down the last
 page.  Pieces that amply fill two pages or more should have this
-set to true.  It also affects the last page of book parts, i.e.
+set to false.  It also affects the last page of book parts, i.e.
 parts of a book created with @code{\bookpart} blocks.
 
 @end table
@@ -365,7 +377,6 @@ Snippets:
 @rlsr{Spacing}.
 
 @knownissues
-
 The titles (from the @code{\header} block) are treated as a
 system, so @code{ragged-bottom} and @code{ragged-last-bottom} will
 add space between the titles and the first system of the score.
@@ -468,6 +479,10 @@ collisions.
 
 @end itemize
 
+For multi-page scores with a ragged bottom on the last page, the last
+page uses the same spacing as the preceding page, provided there is
+enough space for that.
+
 Specific methods for modifying alists are discussed in
 @ref{Modifying alists}.  The following example demonstrates the
 two ways these alists can be modified.  The first declaration
@@ -676,7 +691,6 @@ Installed Files:
 @file{ly/paper-defaults-init.ly}.
 
 @knownissues
-
 Explicitly defined paper-sizes will override any user-defined left or
 right margin settings.
 
@@ -987,7 +1001,6 @@ sensible default, for example:
 
 @end table
 
-
 @seealso
 Installed Files:
 @file{ly/titling-init.ly}.
@@ -995,9 +1008,7 @@ Installed Files:
 Snippets:
 @rlsr{Spacing}.
 
-
 @knownissues
-
 The default page header puts the page number and the @code{instrument}
 field from the @code{\header} block on a line.
 
@@ -1074,7 +1085,6 @@ Here is an example @code{\layout} block:
 @}
 @end example
 
-
 @seealso
 Notation Reference:
 @ref{Changing context default settings}.
@@ -1176,7 +1186,6 @@ These fonts are available in any sizes.  The context property
 @rinternals{StaffSymbol}) can be used to tune the size for individual
 staves.  The sizes of individual staves are relative to the global size.
 
-
 @seealso
 Notation Reference:
 @ref{Selecting notation font size}.
@@ -1184,9 +1193,7 @@ Notation Reference:
 Snippets:
 @rlsr{Spacing}.
 
-
 @knownissues
-
 @code{layout-set-staff-size} does not change the distance between the
 staff lines.
 
@@ -1325,7 +1332,6 @@ complicated.  More details are available in
 @code{\noBreak}.
 @endpredefined
 
-
 @seealso
 Notation Reference:
 @ref{\paper variables for line breaking}.
@@ -1410,7 +1416,6 @@ book parts.
 @code{\noPageBreak}.
 @endpredefined
 
-
 @seealso
 Notation Reference:
 @ref{\paper variables for page breaking}.
@@ -1429,7 +1434,6 @@ determining page breaks.  It attempts to find a page breaking that minimizes
 cramping and stretching, both horizontally and vertically.  Unlike
 @code{ly:page-turn-breaking}, it has no concept of page turns.
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -1500,7 +1504,6 @@ The page turning commands, @code{\pageTurn}, @code{\noPageTurn} and
 @code{\allowPageTurn}, may also be used at top-level, between scores and
 top-level markups.
 
-
 @predefined
 @funindex \pageTurn
 @code{\pageTurn},
@@ -1510,14 +1513,11 @@ top-level markups.
 @code{\allowPageTurn}.
 @endpredefined
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
 
-
 @knownissues
-
 There should only be one @code{Page_turn_engraver} in a score.  If there is more
 than one, they will interfere with each other.
 
@@ -1539,7 +1539,6 @@ too slow or memory demanding, or a lot of texts.  It is enabled using:
 @}
 @end example
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -1591,7 +1590,6 @@ music = \relative c'' { c8 c c c }
 }
 @end lilypond
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -1678,7 +1676,6 @@ music = \relative c'' { c4 c c c }
 }
 @end lilypond
 
-
 @seealso
 Notation Reference:
 @ref{Vertical spacing}.
@@ -2039,15 +2036,15 @@ Notation Reference:
 @ref{Flexible vertical spacing \paper variables},
 @ref{Modifying alists}.
 
+Installed Files:
+@file{ly/engraver-init.ly},
+@file{scm/define-grobs.scm}.
+
 Internals Reference:
 @rinternals{Contexts},
 @rinternals{VerticalAxisGroup},
 @rinternals{StaffGrouper}.
 
-Installed Files:
-@file{ly/engraver-init.ly},
-@file{scm/define-grobs.scm}.
-
 
 @node Spacing of ungrouped staves
 @unnumberedsubsubsec Spacing of ungrouped staves
@@ -2249,7 +2246,6 @@ able to stretch much more than usual:
 >>
 @end lilypond
 
-
 @seealso
 Installed Files:
 @file{ly/engraver-init.ly},
@@ -2493,7 +2489,6 @@ to print staves or systems on top of one another.  Reasonable values
 passed to these different settings will avoid this.
 @end itemize
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -2578,7 +2573,6 @@ c4
 c''2
 @end lilypond
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -2687,8 +2681,10 @@ once with exaggerated corrections:
 
 Proportional notation is supported; see @ref{Proportional notation}.
 
-
 @seealso
+Essay on automated music engraving:
+@ressay{Optical spacing}.
+
 Snippets:
 @rlsr{Spacing}.
 
@@ -2698,15 +2694,11 @@ Internals Reference:
 @rinternals{StaffSpacing},
 @rinternals{NonMusicalPaperColumn}.
 
-Essay on automated music engraving:
-@ressay{Optical spacing}.
-
-
 @knownissues
-
 There is no convenient mechanism to manually override spacing.  The
 following work-around may be used to insert extra space into a score,
 adjusting the padding value as necessary.
+
 @example
  \override Score.NonMusicalPaperColumn #'padding = #10
 @end example
@@ -2737,7 +2729,6 @@ The @code{\newSpacingSection} command creates a new
 @code{SpacingSpanner} object, and hence new @code{\override}s
 may be used in that location.
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -2829,7 +2820,6 @@ regard for clefs, bar lines, and grace notes,
 \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c32] }
 @end lilypond
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -2883,7 +2873,6 @@ paragraph, the last line simply takes its natural horizontal length.
 @}
 @end example
 
-
 @seealso
 Snippets:
 @rlsr{Spacing}.
@@ -3270,7 +3259,6 @@ mark both rhythmic start- and stop-points, and allow spanning elements
 to break across systems and pages.  See the respective parts of the manual
 for these related settings.
 
-
 @seealso
 Notation Reference:
 @ref{New spacing area}.
@@ -3345,7 +3333,6 @@ 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
 Notation Reference:
 @ref{Setting the staff size}.
@@ -3393,6 +3380,16 @@ assignment will force a layout with 10 systems.
 @}
 @end example
 
+@item
+Force the number of pages.  For example, the following
+assignment will force a layout with 2 pages.
+
+@example
+\paper @{
+  page-count = #2
+@}
+@end example
+
 @item
 Avoid (or reduce) objects that increase the vertical size of a
 system.  For example, volta repeats (or alternate repeats) require
@@ -3455,7 +3452,6 @@ block so that it applies to the whole score.
 
 @end itemize
 
-
 @seealso
 Notation Reference:
 @ref{Page layout},