]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/notation/spacing.itely
Doc: NR 4.1.2: Setting alist keys properly.
[lilypond.git] / Documentation / notation / spacing.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2
3 @ignore
4     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.13.36"
12
13 @ignore
14 GDP TODO list
15
16 Negative numbers are allowed:
17 > Are you sure? The following works well
18 > \paper{
19 >   first-page-number = -2
20 > }
21 > and prints page number -1 on the second page, for example.
22
23
24 In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it
25 states:
26
27 "@code{layout-set-staff-size} does not change the distance between
28 the
29 staff lines."
30
31 Could we add a sentence:
32 "Use instead the pair               fontSize = #@var{N}
33             \override StaffSymbol #'staff-space = #(magstep
34 @var{N})
35 inside the Staff context to change the size of the font and the
36 distance between
37 staff lines accordingly."
38
39 Actually I found, that the @internalsref{StaffSymbol} at line 481
40 sends to an incomplete
41 documentation.  The property staff-space is not explained here.  I
42 thought Y-extent might be of
43 help, but it is in turn explained by x-space which again is
44 missing from the list.  Who has the
45 knowledge to fix this?
46
47
48 Clarify
49 http://code.google.com/p/lilypond/issues/detail?id=68
50
51 @end ignore
52
53
54 @node Spacing issues
55 @chapter Spacing issues
56
57 The global paper layout is determined by three factors: the page layout, the
58 line breaks, and the spacing.  These all influence each other.  The
59 choice of spacing determines how densely each system of music is set.
60 This influences where line breaks are chosen, and thus ultimately, how
61 many pages a piece of music takes.
62
63 Globally speaking, this procedure happens in four steps: first,
64 flexible distances (@q{springs}) are chosen, based on durations.  All
65 possible line breaking combinations are tried, and a @q{badness} score
66 is calculated for each.  Then the height of each possible system is
67 estimated.  Finally, a page breaking and line breaking combination is chosen
68 so that neither the horizontal nor the vertical spacing is too cramped
69 or stretched.
70
71 Settings which influence layout may be placed in two blocks.
72 The @code{\paper @{...@}} block is placed outside any
73 @code{\score @{...@}} blocks and contains settings that
74 relate to the entire document.  The @code{\layout @{...@}}
75 block is placed within a @code{\score @{...@}} block and
76 contains settings for that particular score.  If you have
77 only one @code{\score @{...@}} block the two have the same
78 effect.  In general the commands shown in this chapter can
79 be placed in either.
80
81 @menu
82 * Paper and pages::
83 * Music layout::
84 * Breaks::
85 * Vertical spacing::
86 * Horizontal spacing::
87 * Fitting music onto fewer pages::
88 @end menu
89
90
91 @node Paper and pages
92 @section Paper and pages
93
94 This section deals with the boundaries that define the area
95 within which music can be printed.
96
97 @menu
98 * Paper size::
99 * Page formatting::
100 @end menu
101
102
103 @node Paper size
104 @subsection Paper size
105
106 @cindex paper size
107 @cindex page size
108
109 Two functions are available for changing the paper size:
110 @code{set-default-paper-size} and @code{set-paper-size}.
111 @code{set-default-paper-size} must be placed in the toplevel
112 scope, and @code{set-paper-size} must be placed in a @code{\paper}
113 block:
114
115 @example
116 #(set-default-paper-size "a4")
117 @end example
118
119 @example
120 \paper @{
121   #(set-paper-size "a4")
122 @}
123 @end example
124
125 @noindent
126 @code{set-default-paper-size} sets the size of all pages, whereas
127 @code{set-paper-size} only sets the size of the pages that the
128 @code{\paper} block applies to.  For example, if the @code{\paper}
129 block is at the top of the file, then it will apply the paper size
130 to all pages.  If the @code{\paper} block is inside a
131 @code{\book}, then the paper size will only apply to that book.
132
133 Common paper sizes are available, including @code{a4},
134 @code{letter}, @code{legal}, and @code{11x17} (also known as
135 tabloid).  Many more paper sizes are supported by default.  For
136 details, see @file{scm/@/paper@/.scm}, and search for the
137 definition of @code{paper-alist}.
138
139 @c TODO add a new appendix for paper sizes (auto-generated) -pm
140
141 @warning{The default paper size is @code{a4}.}
142
143 Extra sizes may be added by editing the definition of
144 @code{paper-alist} in the initialization file
145 @file{scm/@/paper@/.scm}, however they will be overridden on a
146 subsequent install.
147
148 @cindex orientation
149 @cindex landscape
150
151 If the symbol @code{'landscape} is supplied as an argument to
152 @code{set-default-paper-size}, pages will be rotated by 90
153 degrees, and wider line widths will be set accordingly.
154
155 @example
156 #(set-default-paper-size "a6" 'landscape)
157 @end example
158
159 Setting the paper size will adjust a number of @code{\paper}
160 variables, such as margins.  To use a particular paper size with
161 altered @code{\paper} variables, set the paper size before setting
162 the variables.
163
164
165 @seealso
166 Installed Files:
167 @file{scm/@/paper@/.scm}.
168
169 Snippets:
170 @rlsr{Spacing}.
171
172
173 @node Page formatting
174 @subsection Page formatting
175
176 @funindex \paper
177
178 Margins, headers, and footers and other layout variables are
179 automatically set according to the paper size.
180
181 Default margin values are accessible in
182 @file{ly/@/paper@/-defaults@/-init@/.ly}.  They apply to the default
183 paper size (a4, unless specified differently) and are scaled
184 accordingly for other paper sizes.
185
186 This section lists and describes a number of paper variables that
187 may be altered.
188
189 @menu
190 * Vertical dimensions::
191 * Horizontal dimensions::
192 * Other layout variables::
193 @end menu
194
195
196 @node Vertical dimensions
197 @unnumberedsubsubsec Vertical dimensions
198
199
200 @subsubheading Fixed vertical dimensions
201
202 @table @code
203 @item paper-height
204 @funindex paper-height
205
206 The height of the page.  Default: the height of the current paper
207 size.  For details, see @ref{Paper size}.
208
209 @item top-margin
210 @funindex top-margin
211
212 The margin between the top of the page and the top of the
213 printable area.  Default: @code{5\mm}.
214
215 @item bottom-margin
216 @funindex bottom-margin
217
218 The margin between the bottom of the printable area and the bottom
219 of the page.  Default: @code{6\mm}.
220
221 @end table
222
223
224 @subsubheading Flexible vertical dimensions
225
226 In most cases, it is preferable for the vertical distances between
227 certain items (such as margins, titles, systems, and separate
228 scores) to be flexible, so that they stretch and compress nicely
229 according to each situation.  A number of @code{\paper} variables
230 (listed below) are available to fine-tune the stretching behavior
231 of these dimensions.
232
233 Each of these variables is an associative list containing four
234 @emph{keys}:
235
236 @itemize
237 @item @code{padding} -- the minimum required amount of
238 unobstructed vertical whitespace between two items.  This can be
239 thought of as the minimum height of an unobstructed (invisible)
240 rectangle that extends from the leftmost to the rightmost point of
241 the combined items.
242
243 @item @code{space} -- the default vertical distance between the
244 @emph{reference points} of the two items, when no collisions would
245 result, and no stretching or compressing is in effect.  The
246 reference point of a title or markup is its highest point, and the
247 reference point of a system is the middle line of the nearest
248 staff.  Values for @code{space} that are less than either
249 @code{padding} or @code{minimum-distance} are not meaningful,
250 since the resulting space will never be less than either
251 @code{padding} or @code{minimum-distance}.
252
253 @item @code{minimum-distance} -- the minimum required vertical
254 distance between the reference points of the two items, when
255 compressing is in effect.  Values for @code{minimum-distance} that
256 are less than @code{padding} are not meaningful, since the
257 resulting space will never be less than @code{padding.}
258
259 @item @code{stretchability} -- the stretchable space's propensity
260 to stretch.  If zero, the space will not stretch (unless
261 collisions would result).  When positive, the significance of a
262 particular dimension's @code{stretchability} value lies only in
263 its relation to the @code{stretchability} values of the other
264 dimensions.  For example, if one dimension has twice the
265 @code{stretchability} of another, it will stretch twice as easily.
266 Values should be non-negative and finite.  The value @code{+inf.0}
267 triggers a @code{programming_error} and is ignored, but
268 @code{1.0e7} can be used for an almost infinitely stretchable
269 spring.  If unset, the default value is set to @code{space}.  Note
270 that the stretchable space's propensity to @emph{compress} cannot
271 be directly set by the user and is equal to
272 (@code{space}@tie{}@minus{}@tie{}@code{minimum-distance}).
273
274 @end itemize
275
276 If a page has a ragged bottom, the resulting distance is the
277 largest of:
278
279 @itemize
280 @item @code{space},
281 @item @code{minimum-distance}, and
282 @item @code{padding} plus the smallest distance necessary to
283 eliminate collisions.
284 @end itemize
285
286 To set or modify a single key for a dimension variable, use a
287 nested declaration:
288
289 @example
290 \paper @{
291   system-system-spacing #'space = #10
292 @}
293 @end example
294
295 This will update the specified key without altering any other keys
296 already set for the same variable.  To completely re-define a
297 variable with one declaration, define it as an alist:
298
299 @example
300 \paper @{
301   system-system-spacing =
302     #'((padding . 1)
303        (space . 12)
304        (minimum-distance . 8)
305        (stretchability . 12))
306 @}
307 @end example
308
309 However, note that any keys not listed in an alist definition will
310 still be overwritten; they will be reset to zero (except
311 @code{stretchability}, which takes the value of @code{space}).
312 Thus the following two declarations are equivalent:
313
314 @example
315 system-system-spacing =
316   #'((space . 10))
317
318 system-system-spacing =
319   #'((padding . 0)
320      (space . 10)
321      (minimum-distance . 0)
322      (stretchability . 10))
323 @end example
324
325 One possibly unintended consequence of the above example is the
326 removal of the default values for @code{padding} and
327 @code{minimum-distance}.  Defining a variable as an alist (of any
328 size) will always reset all its default key-values.  Default
329 settings for the flexible vertical @code{\paper} dimensions are
330 defined in @file{ly/paper-defaults-init.ly}.
331
332 The names of the flexible vertical dimension variables follow the
333 format @code{@var{upper}-@var{lower}-spacing}, where
334 @code{@var{upper}} and @code{@var{lower}} are the items to be
335 spaced.  Each distance is measured between the reference points of
336 the two items: the reference point of a title or markup is its
337 highest point, and the reference point of a system is the middle
338 line of the nearest staff.  Note that in these variable names, the
339 term @q{@code{markup}} refers to both @i{title markups}
340 (@code{bookTitleMarkup} or @code{scoreTitleMarkup}) and
341 @i{top-level markups} (see @ref{File structure}).
342
343 The flexible vertical dimension variables are:
344
345
346 @table @code
347
348 @item markup-system-spacing
349 @funindex markup-system-spacing
350
351 the distance between a (title or top-level) markup and the system
352 that follows it.
353
354 @item score-markup-spacing
355 @funindex score-markup-spacing
356
357 the distance between the last system of a score and the (title or
358 top-level) markup that follows it.
359
360 @item score-system-spacing
361 @funindex score-system-spacing
362
363 the distance between the last system of a score and the first
364 system of the score that follows it, when no (title or top-level)
365 markup exists between them.
366
367 @item system-system-spacing
368 @funindex system-system-spacing
369
370 the distance between two systems in the same score.
371
372 @item markup-markup-spacing
373 @funindex markup-markup-spacing
374
375 the distance between two (title or top-level) markups.
376
377 @item last-bottom-spacing
378 @funindex last-bottom-spacing
379
380 the distance from the last system or top-level markup on a page to
381 the bottom of the printable area (i.e. the top of the bottom
382 margin).
383
384 @item top-system-spacing
385 @funindex top-system-spacing
386
387 the distance from the top of the printable area (i.e. the bottom
388 of the top margin) to the first system on a page, when there is no
389 (title or top-level) markup between the two.
390
391 @item top-markup-spacing
392 @funindex top-markup-spacing
393
394 the distance from the top of the printable area (i.e. the bottom
395 of the top margin) to the first (title or top-level) markup on a
396 page, when there is no system between the two.
397
398 @end table
399
400
401 @snippets
402
403 The header and footer are created by the functions
404 @code{make-footer} and @code{make-header}, defined in
405 @code{\paper}.  The default implementations are in
406 @file{ly/paper-defaults.ly} and @file{ly/titling-init.ly}.
407
408 The page layout itself is done by two functions in the
409 @code{\paper} block, @code{page-music-height} and
410 @code{page-make-stencil}.  The former tells the line-breaking
411 algorithm how much space can be spent on a page, the latter
412 creates the actual page given the system to put on it.
413
414 You can define @code{\paper} block values in Scheme.  In that case
415 @code{mm}, @code{in}, @code{pt}, and @code{cm} are variables
416 defined in @file{paper-defaults.ly} with values in millimeters.
417 That is why the value @w{@code{2 cm}} must be multiplied in the
418 example:
419
420 @example
421 \paper @{
422  #(define bottom-margin (* 2 cm))
423 @}
424 @end example
425
426
427 Example:
428
429 @example
430 \paper @{
431   paper-width = 2\cm
432   top-margin = 3\cm
433   bottom-margin = 3\cm
434   ragged-last-bottom = ##t
435 @}
436 @end example
437
438 This second example centers page numbers at the bottom of every page.
439
440 @example
441 \paper @{
442   print-page-number = ##t
443   print-first-page-number = ##t
444   oddHeaderMarkup = \markup \fill-line @{ " " @}
445   evenHeaderMarkup = \markup \fill-line @{ " " @}
446   oddFooterMarkup = \markup @{ \fill-line @{
447      \bold \fontsize #3 \on-the-fly #print-page-number-check-first
448      \fromproperty #'page:page-number-string @} @}
449   evenFooterMarkup = \markup @{ \fill-line @{
450      \bold \fontsize #3 \on-the-fly #print-page-number-check-first
451      \fromproperty #'page:page-number-string @} @}
452 @}
453 @end example
454
455 @seealso
456 Notation Reference:
457 @ref{Vertical spacing between systems}.
458
459 Snippets:
460 @rlsr{Spacing}.
461
462
463 @node Horizontal dimensions
464 @unnumberedsubsubsec Horizontal dimensions
465
466
467 There are a few variables that determine the horizontal dimensions
468 on a page:
469
470 @table @code
471
472 @item binding-offset
473 @funindex binding-offset
474
475 The amount @code{inner-margin} is increased
476 to make sure nothing will be hidden by the binding.
477 Works only with @code{two-sided} set to true.  Default:
478 @code{0}.
479
480 @item horizontal-shift
481 @funindex horizontal-shift
482
483 The amount that all systems (including titles and system
484 separators) are shifted to the right.  Default: @code{0.0}.
485
486 @item indent
487 @funindex indent
488
489 The level of indentation for the first system in a score.
490 Default: @code{15\mm}.
491
492 @item inner-margin
493 @funindex inner-margin
494
495 The margin all pages have at the inner side if they are part
496 of a book.  Works only with @code{two-sided} set to true.
497 Default: @code{10\mm}.
498
499 @item left-margin
500 @funindex left-margin
501
502 The margin between the left edge of the page and the beginning of
503 each system.  Default: @code{10\mm}.
504
505 @item line-width
506 @funindex line-width
507
508 The width of music systems.  Default: @code{paper-width} minus
509 @code{left-margin} and @code{right-margin}.
510
511 @item outer-margin
512 @funindex outer-margin
513
514 The margin all pages have at the outer side if they are part
515 of a book.  Works only with @code{two-sided} set to true.
516 Default: @code{20\mm}.
517
518 @item paper-width
519 @funindex paper-width
520
521 The width of the page.  Default: the width of the current paper
522 size.  For details, see @ref{Paper size}.
523
524 @item right-margin
525 @funindex right-margin
526
527 The margin between the right edge of the page and the end of
528 each system.  Default: @code{10\mm}.
529
530 @item short-indent
531 @funindex short-indent
532
533 The level of indentation for all systems in a score besides the
534 first system.  Default: @code{0}.
535
536 @end table
537
538 If some values are not set, defaults will be taken.  Their exact
539 value is adjusted, depending on the paper size specified.  Currently,
540 the following values are affected by this scaling:
541
542 @itemize
543 @item @var{left-margin}
544 @item @var{right-margin}
545 @item @var{top-margin}
546 @item @var{bottom-margin}
547 @item @var{head-separation}
548 @item @var{foot-separation}
549 @item @var{indent}
550 @item @var{short-indent}
551 @end itemize
552
553 The settings for @code{line-width}, @code{left-margin},
554 @code{right-margin} and @code{paper-width} depend on
555 each other, but they do not have to be specified
556 completely.
557
558 @example
559 \paper @{
560   left-margin = 30\mm
561 @}
562 @end example
563
564 In this example, only @code{left-margin} is set.  The value for
565 @code{right-margin} will remain default, @code{line-width} is
566 calculated automatically.
567
568 @example
569 \paper @{
570   line-width = 150\mm
571 @}
572 @end example
573
574 Here @code{left-margin} and @code{right-margin} will be set
575 to the same value.  Therefore, @code{line-width} is subtracted
576 from @code{paper-width} and divided by two.  That means systems
577 are centered on the page, if only @code{line-width} is
578 specified.
579
580 Some checks occur to ensure the values are set correctly.
581 If the values do not match or systems would run off the page,
582 a warning is printed and default values are set.
583
584 @example
585 \paper @{
586   paper-width = 210\mm
587   left-margin = 20\mm
588   right-margin = 30\mm
589   line-width = 100\mm
590 @}
591 @end example
592
593 These checks can be avoided by setting @code{check-consistency}
594 to false.
595
596 @example
597 \paper @{
598   paper-width = 210\mm
599   left-margin = 20\mm
600   line-width = 200\mm
601   check-consistency = ##f
602 @}
603 @end example
604
605 @warning{If @code{paper-width} is manually set, @code{line-width},
606 @code{left-margin}, @code{indent}, and @code{short-indent} may
607 have to be adjusted as well.}
608
609 @seealso
610 Snippets:
611 @rlsr{Spacing}.
612
613
614
615 @node Other layout variables
616 @unnumberedsubsubsec Other layout variables
617
618 These variables can be used to adjust page layout in general.
619
620 @table @code
621
622 @item auto-first-page-number
623 @funindex auto-first-page-number
624
625 The page breaking algorithm is affected by the first page number
626 being odd or even.  If set to true, the page breaking algorithm
627 will decide whether to start with an odd or even number.  This
628 will result in the first page number remaining as is or being
629 increased by one.  Default: @code{##f}.
630
631 @ignore
632
633 TODO: this variable is used, but I don't know what it does. -pm
634 @item blank-after-score-page-force
635 @funindex blank-after-score-page-force
636
637 Default: @code{2}.
638
639 @end ignore
640
641 @item blank-last-page-force
642 @funindex blank-last-page-force
643
644 The penalty for ending the score on an odd-numbered page.
645 Default: @code{0}.
646
647 @item blank-page-force
648 @funindex blank-page-force
649
650 The penalty for having a blank page in the middle of a
651 score.  This is not used by @code{ly:optimal-breaking} since it will
652 never consider blank pages in the middle of a score.  Default:
653 @code{5}.
654
655 @item check-consistency
656 @funindex check-consistency
657
658 If set to true, check whether @code{left-margin}, @code{right-margin} and
659 @code{line-width} fit each other.  Also make sure that their combination
660 does not exceed the available @code{paper-width}.  Default: @code{##t}.
661
662 @item first-page-number
663 @funindex first-page-number
664
665 The value of the page number on the first page.  Default:
666 @code{#1}.
667
668 @item max-systems-per-page
669 @funindex max-systems-per-page
670
671 The maximum number of systems that will be placed on a page.  This
672 is currently supported only by the @code{ly:optimal-breaking} algorithm.
673 Default: unset.
674
675 @item min-systems-per-page
676 @funindex min-systems-per-page
677
678 The minimum number of systems that will be placed on a page.  This
679 may cause pages to be overfilled if it is made too large.  This is
680 currently supported only by the @code{ly:optimal-breaking} algorithm.
681 Default: unset.
682
683 @item page-breaking-system-system-spacing
684 @funindex page-breaking-system-system-spacing
685
686 Tricks the page breaker into thinking that
687 @code{system-system-spacing} is set to something different than
688 it really is.  For example, if
689 @code{page-breaking-system-system-spacing #'padding} is set to something
690 substantially larger than @code{system-system-spacing #'padding}, then the
691 page-breaker will put fewer systems on each page.  Default: unset.
692
693 @item page-count
694 @funindex page-count
695
696 The number of pages to be used for a score.  Default: unset.
697
698 @item page-limit-inter-system-space
699 @funindex page-limit-inter-system-space
700
701 If set to true, limits space between systems on a page with a lot
702 of space left.  Default: @code{##f}.  For details, see
703 @ref{Vertical spacing between systems}.
704
705 @item page-limit-inter-system-space-factor
706 @funindex page-limit-inter-system-space-factor
707
708 The factor used by @code{page-limit-inter-system-space}.  Default:
709 @code{1.4}.  For details, see
710 @ref{Vertical spacing between systems}.
711
712 @item page-spacing-weight
713 @funindex page-spacing-weight
714
715 The relative importance of page (vertical) spacing and line
716 (horizontal) spacing.  High values will make page spacing more
717 important.  Default: @code{#10}.
718
719 @item print-all-headers
720 @funindex print-all-headers
721
722 If set to true, this will print all headers for each \score in the
723 output.  Normally only the piece and opus header variables are
724 printed.  Default: @code{##f}.
725
726 @item print-first-page-number
727 @funindex print-first-page-number
728
729 If set to true, a page number is printed on the first page.
730 Default: @code{##f}.
731
732 @item print-page-number
733 @funindex print-page-number
734
735 If set to false, page numbers are not printed.  Default:
736 @code{##t}.
737
738 @item ragged-bottom
739 @funindex ragged-bottom
740
741 If set to true, systems will not spread vertically across the
742 page.  This does not affect the last page.  Default: @code{##f}.
743
744 This should be set to true for pieces that have only two or three
745 systems per page, for example orchestral scores.
746
747 @item ragged-last
748 @funindex ragged-last
749
750 If set to true, the last system in the score will not fill the
751 line width.  Instead the last system ends at its natural
752 horizontal length.  Default: @code{##f}.
753
754 @item ragged-last-bottom
755 @funindex ragged-last-bottom
756
757 If set to false, systems will spread vertically across the last
758 page.  Default: @code{##t}.
759
760 Pieces that amply fill two pages or more should have this set to
761 true.
762
763 It also affects the last page of book parts, ie parts of a book created
764 with @code{\bookpart} blocks.
765
766 @item ragged-right
767 @funindex ragged-right
768
769 If set to true, systems will not fill the line width.  Instead,
770 systems end at their natural horizontal length.  Default:
771 @code{##f}.
772
773 If the score has only one system, the default value is @code{##t}.
774
775 @item system-separator-markup
776 @funindex system-separator-markup
777
778 A markup object that is inserted between systems.  This is often
779 used for orchestral scores.  Default: unset.
780
781 The markup command @code{\slashSeparator} is provided as a sensible
782 default,  for example
783
784 @lilypond[quote,ragged-right]
785 #(set-default-paper-size "a6" 'landscape)
786 \book {
787   \score {
788     \relative c' { c1 \break c1 }
789   }
790   \paper {
791     system-separator-markup = \slashSeparator
792   }
793 }
794 @end lilypond
795
796 @item system-count
797 @funindex system-count
798
799 The number of systems to be used for a score.
800 Default: unset.
801
802 @item systems-per-page
803 @funindex systems-per-page
804
805 The number of systems that should be placed on each page.
806 This is currently supported only by the @code{ly:optimal-breaking} algorithm.
807 Default: unset.
808
809 @item two-sided
810 @funindex two-sided
811
812 @cindex gutter
813 @cindex binding gutter
814
815 If set to true, use @code{inner-margin}, @code{outer-margin} and
816 @code{binding-offset} to determine margins depending on whether
817 the page number is odd or even.  This overrides @code{left-margin}
818 and @code{right-margin}.  Default: @code{##f}.
819
820 @end table
821
822
823 @seealso
824 Snippets:
825 @rlsr{Spacing}.
826
827
828 @knownissues
829
830 The default page header puts the page number and the @code{instrument}
831 field from the @code{\header} block on a line.
832
833 The titles (from the @code{\header@{@}} section) are treated as a
834 system, so @code{ragged-bottom} and @code{ragged-last-bottom} will
835 add space between the titles and the first system of the score.
836
837
838 @node Music layout
839 @section Music layout
840
841 @menu
842 * Setting the staff size::
843 * Score layout::
844 @end menu
845
846
847 @node Setting the staff size
848 @subsection Setting the staff size
849
850 @cindex font size, setting
851 @cindex staff size, setting
852 @funindex layout file
853
854 The default @strong{staff size} is set to 20 points.
855 This may be changed in two ways:
856
857 To set the staff size globally for all scores in a file (or
858 in a @code{book} block, to be precise), use @code{set-global-staff-size}.
859
860 @example
861 #(set-global-staff-size 14)
862 @end example
863
864 @noindent
865 This sets the global default size to 14pt staff height and scales all
866 fonts accordingly.
867
868 To set the staff size individually for each score, use
869 @example
870 \score@{
871   ...
872   \layout@{
873   #(layout-set-staff-size 15)
874   @}
875 @}
876 @end example
877
878 The Feta font provides musical symbols at eight different
879 sizes.  Each font is tuned for a different staff size: at a smaller size
880 the font becomes heavier, to match the relatively heavier staff lines.
881 The recommended font sizes are listed in the following table:
882
883 @quotation
884 @multitable @columnfractions .15 .2 .22 .2
885
886 @item @b{font name}
887 @tab @b{staff height (pt)}
888 @tab @b{staff height (mm)}
889 @tab @b{use}
890
891 @item feta11
892 @tab 11.22
893 @tab 3.9
894 @tab pocket scores
895
896 @item feta13
897 @tab 12.60
898 @tab 4.4
899 @tab
900
901 @item feta14
902 @tab 14.14
903 @tab 5.0
904 @tab
905
906 @item feta16
907 @tab 15.87
908 @tab 5.6
909 @tab
910
911 @item feta18
912 @tab 17.82
913 @tab 6.3
914 @tab song books
915
916 @item feta20
917 @tab 20
918 @tab 7.0
919 @tab standard parts
920
921 @item feta23
922 @tab 22.45
923 @tab 7.9
924 @tab
925
926 @item feta26
927 @tab 25.2
928 @tab 8.9
929 @tab
930 @c modern rental material?
931
932 @end multitable
933 @end quotation
934
935 These fonts are available in any sizes.  The context property
936 @code{fontSize} and the layout property @code{staff-space} (in
937 @rinternals{StaffSymbol}) can be used to tune the size for individual
938 staves.  The sizes of individual staves are relative to the global size.
939
940
941 @seealso
942 Notation Reference:
943 @ref{Selecting notation font size}.
944
945 Snippets:
946 @rlsr{Spacing}.
947
948
949 @knownissues
950
951 @code{layout-set-staff-size} does not change the distance between the
952 staff lines.
953
954
955 @node Score layout
956 @subsection Score layout
957
958 @funindex \layout
959
960 While @code{\paper} contains settings that relate to the page formatting
961 of the whole document, @code{\layout} contains settings for score-specific
962 layout.
963
964 @example
965 \layout @{
966   indent = 2.0\cm
967   \context @{ \Staff
968     \override VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6)
969   @}
970   \context @{ \Voice
971     \override TextScript #'padding = #1.0
972     \override Glissando #'thickness = #3
973   @}
974 @}
975 @end example
976
977
978 @seealso
979 Notation Reference:
980 @ref{Changing context default settings}.
981
982 Snippets:
983 @rlsr{Spacing}.
984
985
986 @node Breaks
987 @section Breaks
988
989 @menu
990 * Line breaking::
991 * Page breaking::
992 * Optimal page breaking::
993 * Optimal page turning::
994 * Minimal page breaking::
995 * Explicit breaks::
996 * Using an extra voice for breaks::
997 @end menu
998
999
1000 @node Line breaking
1001 @subsection Line breaking
1002
1003 @cindex line breaks
1004 @cindex breaking lines
1005
1006 Line breaks are normally determined automatically.  They are chosen
1007 so that lines look neither cramped nor loose, and consecutive
1008 lines have similar density.  Occasionally you might want to
1009 override the automatic breaks; you can do this by specifying
1010 @code{\break}.  This will force a line break at this point.  However,
1011 line breaks can only occur at the end of @q{complete} bars, i.e.,
1012 where there are no notes or tuplets left @q{hanging} over the bar
1013 line.  If you want to have a line break where there is no bar line,
1014 you can force an invisible bar line by entering @code{\bar ""},
1015 although again there must be no notes left hanging over in any of
1016 the staves at this point, or it will be ignored.
1017
1018 The opposite command, @code{\noBreak}, forbids a line break at the
1019 bar line where it is inserted.
1020
1021 The most basic settings influencing line spacing are @code{indent}
1022 and @code{line-width}.  They are set in the @code{\layout} block.
1023 They control the indentation of the first line of music, and the
1024 lengths of the lines.
1025
1026 If @code{ragged-right} is set to true in the @code{\layout} block,
1027 then systems end at their natural horizontal length, instead of
1028 being spread horizontally to fill the whole line.  This is useful
1029 for short fragments, and for checking how tight the natural
1030 spacing is.
1031
1032 @c TODO Check and add para on default for ragged-right
1033
1034 The option @code{ragged-last} is similar to @code{ragged-right},
1035 but affects only the last line of the piece.
1036
1037 @example
1038 \layout @{
1039 indent = #0
1040 line-width = #150
1041 ragged-last = ##t
1042 @}
1043 @end example
1044
1045
1046
1047 @cindex regular line breaks
1048 @cindex four bar music.
1049
1050 For line breaks at regular intervals use @code{\break} separated by
1051 skips and repeated with @code{\repeat}.  For example, this would
1052 cause the following 28 measures (assuming 4/4 time) to be broken
1053 every 4 measures, and only there:
1054
1055 @example
1056 << \repeat unfold 7 @{
1057          s1 \noBreak s1 \noBreak
1058          s1 \noBreak s1 \break @}
1059    @emph{the real music}
1060 >>
1061 @end example
1062
1063 @c TODO Check this
1064 A linebreaking configuration can be saved as a @code{.ly} file
1065 automatically.  This allows vertical alignments to be stretched to
1066 fit pages in a second formatting run.  This is fairly new and
1067 complicated.  More details are available in
1068 @rlsr{Spacing}.
1069
1070
1071 @predefined
1072 @funindex \break
1073 @code{\break},
1074 @funindex \noBreak
1075 @code{\noBreak}.
1076 @endpredefined
1077
1078
1079 @seealso
1080 Internals Reference:
1081 @rinternals{LineBreakEvent}.
1082
1083 Snippets:
1084 @rlsr{Spacing}.
1085
1086
1087 @knownissues
1088
1089 Line breaks can only occur if there is a @q{proper} bar line.  A note
1090 which is hanging over a bar line is not proper, such as
1091
1092 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
1093 c4 c2 << c2 {s4 \break } >>  % this does nothing
1094 c2 c4 |           % a break here would work
1095 c4 c2 c4 ~ \break % as does this break
1096 c4 c2 c4
1097 @end lilypond
1098
1099 This can be avoided by removing the @code{Forbid_line_break_engraver}.
1100 Note that manually forced line breaks have to be added in parallel
1101 with the music.
1102
1103 @lilypond[quote,ragged-right,verbatim]
1104 \new Voice \with {
1105   \remove Forbid_line_break_engraver
1106 } {
1107   c4 c2 << c2 {s4 \break } >>  % now the break is allowed
1108   c2 c4
1109 }
1110 @end lilypond
1111
1112 Similarly, line breaks are normally forbidden when beams cross bar
1113 lines.  This behavior can be changed by setting
1114 @code{\override Beam #'breakable = ##t}.
1115
1116
1117 @node Page breaking
1118 @subsection Page breaking
1119
1120 The default page breaking may be overridden by inserting
1121 @code{\pageBreak} or @code{\noPageBreak} commands.  These commands are
1122 analogous to @code{\break} and @code{\noBreak}.  They should be
1123 inserted at a bar line.  These commands force and forbid a page-break
1124 from happening.  Of course, the @code{\pageBreak} command also forces
1125 a line break.
1126
1127 The @code{\pageBreak} and @code{\noPageBreak} commands may also be
1128 inserted at top-level, between scores and top-level markups.
1129
1130 There are also analogous settings to @code{ragged-right} and
1131 @code{ragged-last} which have the same effect on vertical spacing:
1132 @code{ragged-bottom} and @code{ragged-last-bottom}.  If set to
1133 @code{##t} the systems on all pages or just the last page
1134 respectively will not be justified vertically.
1135
1136 For more details see @ref{Vertical spacing}.
1137
1138 Page breaks are computed by the @code{page-breaking} function.  LilyPond
1139 provides three algorithms for computing page breaks,
1140 @code{ly:optimal-breaking}, @code{ly:page-turn-breaking} and
1141 @code{ly:minimal-breaking}.  The default is @code{ly:optimal-breaking},
1142 but the value can be changed in the @code{\paper} block:
1143
1144 @example
1145 \paper@{
1146   #(define page-breaking ly:page-turn-breaking)
1147 @}
1148 @end example
1149
1150 @funindex \bookpart
1151
1152 When a book has many scores and pages, the page breaking problem may be
1153 difficult to solve, requiring large processing time and memory.  To ease
1154 the page breaking process, @code{\bookpart} blocks are used to divide
1155 the book into several parts: the page breaking occurs separately on each
1156 part.  Different page breaking functions may also be used in different
1157 book parts.
1158
1159 @example
1160 \bookpart @{
1161   \header @{
1162     subtitle = "Preface"
1163   @}
1164   \paper @{
1165      %% In a part consisting mostly of text,
1166      %% ly:minimal-breaking may be preferred
1167      #(define page-breaking ly:minimal-breaking)
1168   @}
1169   \markup @{ @dots{} @}
1170   @dots{}
1171 @}
1172 \bookpart @{
1173   %% In this part, consisting of music, the default optimal
1174   %% page breaking function is used.
1175   \header @{
1176     subtitle = "First movement"
1177   @}
1178   \score @{ @dots{} @}
1179   @dots{}
1180 @}
1181 @end example
1182
1183
1184 @predefined
1185 @funindex \pageBreak
1186 @code{\pageBreak},
1187 @funindex \noPageBreak
1188 @code{\noPageBreak}.
1189 @endpredefined
1190
1191
1192 @seealso
1193 Snippets:
1194 @rlsr{Spacing}.
1195
1196
1197 @node Optimal page breaking
1198 @subsection Optimal page breaking
1199
1200 @funindex ly:optimal-breaking
1201
1202 The @code{ly:optimal-breaking} function is LilyPond's default method of
1203 determining page breaks.  It attempts to find a page breaking that minimizes
1204 cramping and stretching, both horizontally and vertically.  Unlike
1205 @code{ly:page-turn-breaking}, it has no concept of page turns.
1206
1207
1208 @seealso
1209 Snippets:
1210 @rlsr{Spacing}.
1211
1212
1213 @node Optimal page turning
1214 @subsection Optimal page turning
1215
1216 @funindex ly:page-turn-breaking
1217
1218 Often it is necessary to find a page breaking configuration so that there is
1219 a rest at the end of every second page.  This way, the musician can turn the
1220 page without having to miss notes.  The @code{ly:page-turn-breaking} function
1221 attempts to find a page breaking minimizing cramping and stretching, but with
1222 the additional restriction that it is only allowed to introduce page turns
1223 in specified places.
1224
1225 There are two steps to using this page breaking function.  First, you
1226 must enable it in the @code{\paper} block, as explained in @ref{Page
1227 breaking}.  Then you must tell the function where you would like to allow
1228 page breaks.
1229
1230 There are two ways to achieve the second step.  First, you can specify each
1231 potential page turn manually, by inserting @code{\allowPageTurn} into your
1232 input file at the appropriate places.
1233
1234 If this is too tedious, you can add a @code{Page_turn_engraver} to a Staff or
1235 Voice context.  The @code{Page_turn_engraver} will scan the context for
1236 sections without notes (note that it does not scan for rests; it scans for
1237 the absence of notes.  This is so that single-staff polyphony with rests in one
1238 of the parts does not throw off the @code{Page_turn_engraver}).  When it finds
1239 a sufficiently long section without notes, the @code{Page_turn_engraver} will
1240 insert an @code{\allowPageTurn} at the final bar line in that section, unless
1241 there is a @q{special} bar line (such as a double bar), in which case the
1242 @code{\allowPageTurn} will be inserted at the final @q{special} bar line in
1243 the section.
1244
1245 @funindex minimumPageTurnLength
1246 The @code{Page_turn_engraver} reads the context property
1247 @code{minimumPageTurnLength} to determine how long a note-free section must
1248 be before a page turn is considered.  The default value for
1249 @code{minimumPageTurnLength} is @code{#(ly:make-moment 1 1)}.  If you want
1250 to disable page turns, you can set it to something very large.
1251
1252 @example
1253 \new Staff \with @{ \consists "Page_turn_engraver" @}
1254 @{
1255   a4 b c d |
1256   R1 | % a page turn will be allowed here
1257   a4 b c d |
1258   \set Staff.minimumPageTurnLength = #(ly:make-moment 5 2)
1259   R1 | % a page turn will not be allowed here
1260   a4 b r2 |
1261   R1*2 | % a page turn will be allowed here
1262   a1
1263 @}
1264 @end example
1265
1266 @funindex minimumRepeatLengthForPageTurn
1267 The @code{Page_turn_engraver} detects volta repeats.  It will only allow a page
1268 turn during the repeat if there is enough time at the beginning and end of the
1269 repeat to turn the page back.  The @code{Page_turn_engraver} can also disable
1270 page turns if the repeat is very short.  If you set the context property
1271 @code{minimumRepeatLengthForPageTurn} then the @code{Page_turn_engraver} will
1272 only allow turns in repeats whose duration is longer than this value.
1273
1274 The page turning commands, @code{\pageTurn}, @code{\noPageTurn} and
1275 @code{\allowPageTurn}, may also be used at top-level, between scores and
1276 top-level markups.
1277
1278
1279 @predefined
1280 @funindex \pageTurn
1281 @code{\pageTurn},
1282 @funindex \noPageTurn
1283 @code{\noPageTurn},
1284 @funindex \allowPageTurn
1285 @code{\allowPageTurn}.
1286 @endpredefined
1287
1288
1289 @seealso
1290 Snippets:
1291 @rlsr{Spacing}.
1292
1293
1294 @knownissues
1295
1296 There should only be one @code{Page_turn_engraver} in a score.  If there is more
1297 than one, they will interfere with each other.
1298
1299
1300 @node Minimal page breaking
1301 @subsection Minimal page breaking
1302
1303 @funindex ly:minimal-breaking
1304
1305 The @code{ly:minimal-breaking} function performs minimal computations to
1306 calculate the page breaking: it fills a page with as many systems as
1307 possible before moving to the next one.  Thus, it may be preferred for
1308 scores with many pages, where the other page breaking functions could be
1309 too slow or memory demanding, or a lot of texts.  It is enabled using:
1310
1311 @example
1312 \paper @{
1313   #(define page-breaking ly:minimal-breaking)
1314 @}
1315 @end example
1316
1317
1318 @seealso
1319 Snippets:
1320 @rlsr{Spacing}.
1321
1322
1323 @node Explicit breaks
1324 @subsection Explicit breaks
1325
1326 Lily sometimes rejects explicit @code{\break} and @code{\pageBreak}
1327 commands.  There are two commands to override this behavior:
1328
1329 @example
1330 \override NonMusicalPaperColumn #'line-break-permission = ##f
1331 \override NonMusicalPaperColumn #'page-break-permission = ##f
1332 @end example
1333
1334 When @code{line-break-permission} is overridden to false, Lily will insert
1335 line breaks at explicit @code{\break} commands and nowhere else.  When
1336 @code{page-break-permission} is overridden to false, Lily will insert
1337 page breaks at explicit @code{\pageBreak} commands and nowhere else.
1338
1339 @lilypond[quote,verbatim]
1340 \paper {
1341   indent = #0
1342   ragged-right = ##t
1343   ragged-bottom = ##t
1344 }
1345
1346 \score {
1347   \new Staff {
1348     \repeat unfold 2 { c'8 c'8 c'8 c'8 } \break
1349     \repeat unfold 4 { c'8 c'8 c'8 c'8 } \break
1350     \repeat unfold 6 { c'8 c'8 c'8 c'8 } \break
1351     \repeat unfold 8 { c'8 c'8 c'8 c'8 } \pageBreak
1352     \repeat unfold 8 { c'8 c'8 c'8 c'8 } \break
1353     \repeat unfold 6 { c'8 c'8 c'8 c'8 } \break
1354     \repeat unfold 4 { c'8 c'8 c'8 c'8 } \break
1355     \repeat unfold 2 { c'8 c'8 c'8 c'8 }
1356     }
1357   \layout {
1358     \context {
1359       \Score
1360       \override NonMusicalPaperColumn #'line-break-permission = ##f
1361       \override NonMusicalPaperColumn #'page-break-permission = ##f
1362     }
1363   }
1364 }
1365 @end lilypond
1366
1367
1368 @seealso
1369 Snippets:
1370 @rlsr{Spacing}.
1371
1372
1373 @node Using an extra voice for breaks
1374 @subsection Using an extra voice for breaks
1375
1376 Line- and page-breaking information usually appears within note entry directly.
1377
1378 @example
1379 \score @{
1380   \new Staff @{
1381     \repeat unfold 2 @{ c'4 c'4 c'4 c'4 @}
1382     \break
1383     \repeat unfold 3 @{ c'4 c'4 c'4 c'4 @}
1384   @}
1385 @}
1386 @end example
1387
1388 This makes @code{\break} and @code{\pageBreak} commands easy to enter but mixes
1389 music entry with information that specifies how music should lay out
1390 on the page.  You can keep music entry and line- and page-breaking
1391 information in two separate places by introducing an extra voice to
1392 contain the  breaks.  This extra voice
1393 contains only skips together with @code{\break}, @code{pageBreak} and other
1394 breaking layout information.
1395
1396 @lilypond[quote,verbatim]
1397 \score {
1398   \new Staff <<
1399     \new Voice {
1400       s1 * 2 \break
1401       s1 * 3 \break
1402       s1 * 6 \break
1403       s1 * 5 \break
1404     }
1405     \new Voice {
1406       \repeat unfold 2 { c'4 c'4 c'4 c'4 }
1407       \repeat unfold 3 { c'4 c'4 c'4 c'4 }
1408       \repeat unfold 6 { c'4 c'4 c'4 c'4 }
1409       \repeat unfold 5 { c'4 c'4 c'4 c'4 }
1410     }
1411   >>
1412 }
1413 @end lilypond
1414
1415 This pattern becomes especially helpful when overriding
1416 @code{line-break-system-details} and the other useful but long properties of
1417 @code{NonMusicalPaperColumnGrob}, as explained in @ref{Vertical spacing}.
1418
1419 @lilypond[quote,verbatim]
1420 \score {
1421   \new Staff <<
1422     \new Voice {
1423       \overrideProperty "Score.NonMusicalPaperColumn"
1424         #'line-break-system-details #'((Y-offset . 0))
1425       s1 * 2 \break
1426
1427       \overrideProperty "Score.NonMusicalPaperColumn"
1428         #'line-break-system-details #'((Y-offset . 35))
1429       s1 * 3 \break
1430
1431       \overrideProperty "Score.NonMusicalPaperColumn"
1432         #'line-break-system-details #'((Y-offset . 70))
1433       s1 * 6 \break
1434
1435       \overrideProperty "Score.NonMusicalPaperColumn"
1436         #'line-break-system-details #'((Y-offset . 105))
1437       s1 * 5 \break
1438     }
1439     \new Voice {
1440       \repeat unfold 2 { c'4 c'4 c'4 c'4 }
1441       \repeat unfold 3 { c'4 c'4 c'4 c'4 }
1442       \repeat unfold 6 { c'4 c'4 c'4 c'4 }
1443       \repeat unfold 5 { c'4 c'4 c'4 c'4 }
1444     }
1445   >>
1446 }
1447 @end lilypond
1448
1449
1450 @seealso
1451 Notation Reference:
1452 @ref{Vertical spacing}.
1453
1454 Snippets:
1455 @rlsr{Spacing}.
1456
1457
1458 @node Vertical spacing
1459 @section Vertical spacing
1460
1461 @cindex vertical spacing
1462 @cindex spacing, vertical
1463
1464 Vertical spacing is controlled by three things: the amount of
1465 space available (i.e., paper size and margins), the amount of
1466 space between systems, and the amount of space between
1467 staves inside a system.
1468
1469 @menu
1470 * Vertical spacing inside a system::
1471 * Vertical spacing between systems::
1472 * Explicit staff and system positioning::
1473 * Vertical collision avoidance::
1474 @end menu
1475
1476
1477 @node Vertical spacing inside a system
1478 @subsection Vertical spacing inside a system
1479
1480 @cindex distance between staves
1481 @cindex staff distance
1482 @cindex space between staves
1483 @cindex space inside systems
1484
1485 The height of each system is determined in two steps.  First, all of the
1486 staves are spaced according to the amount of space available.  Then, the
1487 non-staff lines (eg. lyrics or chords) are distributed between the
1488 staves.
1489
1490 @unnumberedsubsubsec Spacing between staves
1491 Spacing between staves is controlled by the @var{next-staff-spacing}
1492 property of the @var{VerticalAxisGroup} grob.  This property is an alist
1493 with four elements: @var{space}, @var{minimum-distance}, @var{padding}
1494 and @var{stretchability}:
1495 @itemize
1496 @item
1497 @var{space} is the size of the stretchable space between the center line
1498 of one staff to the center line of the next staff.
1499
1500 @item
1501 @var{minimum-distance} provides a lower bound on the final distance
1502 between the center line of one staff to the center line of the next
1503 staff.  That is, if a page has many systems and needs to be compressed,
1504 the distance from this staff to the next will never be compressed to
1505 less than @var{minimum-distance}.
1506
1507 @item
1508 @var{padding} is the amount of whitespace that must be present between
1509 the bottom of one staff and the top of the next.  It differs from
1510 @var{minimum-distance} in that the effect of @var{padding} depends on
1511 the height of objects in the staff.  For example, @var{padding} is more
1512 likely to come into effect for staves with notes that are far below the
1513 staff.
1514
1515 @item
1516 @var{stretchability} controls the stretchable space's propensity to
1517 stretch when the system is stretched.  Large values will cause a
1518 system to stretch more, while a value of zero will prevent the
1519 space from stretching at all.  If unset, @var{stretchability}
1520 defaults to @code{space - minimum-distance}.
1521 @end itemize
1522
1523 @lilypond[verbatim]
1524 #(set-global-staff-size 16)
1525 \new StaffGroup <<
1526   % Since space is small and there is no minimum-distance, the distance
1527   % between this staff and the next will be determined by padding.
1528   \new Staff \with {
1529     \override VerticalAxisGroup #'next-staff-spacing =
1530       #'((space . 1) (padding . 1))
1531   }
1532   { \clef bass c, }
1533   % Since space is small and nothing sticks out very far, the distance
1534   % between this staff and the next will be determined by minimum-distance.
1535   \new Staff \with {
1536     \override VerticalAxisGroup #'next-staff-spacing =
1537       #'((space . 1) (minimum-distance . 12))
1538   }
1539   { \clef bass c, }
1540   % By setting padding to a negative value, staves can be made to collide.
1541   \new Staff \with {
1542     \override VerticalAxisGroup #'next-staff-spacing =
1543       #'((space . 4) (padding . -10))
1544   }
1545   { \clef bass c, }
1546   \new Staff { \clef bass c, }
1547 >>
1548 @end lilypond
1549
1550
1551 In orchestral and other large scores, it is common to place staves in
1552 groups.  The space between groups is typically larger than the space
1553 between staves of the same group.  This spacing can be tweaked with the
1554 @var{StaffGrouper} grob: the default value of @var{next-staff-spacing}
1555 for @var{VerticalAxisGroup} is a callback function which operates by
1556 searching for a @var{StaffGrouper} grob containing the staff.  If it
1557 finds a @var{StaffGrouper} grob and the staff in question is in the
1558 middle of a group, it reads the @var{between-staff-spacing} property of
1559 @var{StaffGrouper} and returns it.  If the staff in question is the last
1560 staff of a group, the callback reads the @var{after-last-staff-spacing}
1561 property of @var{StaffGrouper} and returns it.  If the callback did not
1562 find a @var{StaffGrouper} grob, it reads
1563 @var{default-next-staff-spacing} from its @var{VerticalAxisGroup} and
1564 returns that.
1565
1566 @lilypond[verbatim]
1567 #(set-global-staff-size 16)
1568 <<
1569   \new PianoStaff \with {
1570     \override StaffGrouper #'between-staff-spacing #'space = #1
1571     \override StaffGrouper #'between-staff-spacing #'padding = #0
1572     \override StaffGrouper #'after-last-staff-spacing #'space = #20
1573   }
1574   <<
1575     \new Staff c'1
1576     \new Staff c'1
1577   >>
1578
1579   \new StaffGroup \with {
1580     \override StaffGrouper #'between-staff-spacing #'space = #1
1581     \override StaffGrouper #'between-staff-spacing #'padding = #0
1582   }
1583   <<
1584     \new Staff c'1
1585     \new Staff c'1
1586   >>
1587 >>
1588 @end lilypond
1589
1590
1591 @unnumberedsubsubsec Spacing of non-staff lines
1592
1593 After the positions of the staves are determined, the non-staff lines
1594 are distributed between the staves.  Each of these lines has a
1595 @var{staff-affinity} property which controls its vertical alignment.
1596 For example,
1597
1598 @example
1599 \new Lyrics \with @{ \override VerticalAxisGroup #'staff-affinity = #DOWN @}
1600 @end example
1601
1602 @noindent creates a lyrics context that will be placed close to the
1603 staff below it.  Setting @var{staff-affinity} to something which is not
1604 a number (@code{#f}, for example) will cause that line to be treated
1605 like a staff.  Conversely, setting @var{staff-affinity} for a staff will
1606 cause it to be treated like a non-staff.
1607
1608 Non-staff lines admit three properties to control their spacing.  Each
1609 of the these properties is an alist of the same format as
1610 @var{next-staff-spacing}, above.
1611 @itemize
1612 @item
1613 If the nearest line in the @var{staff-affinity} direction is a staff
1614 then @var{inter-staff-spacing} gives the spacing between the non-staff
1615 and the staff.  If @var{staff-affinity} is @code{CENTER}, then
1616 @var{inter-staff-spacing} is used for both directions.
1617
1618 @item
1619 If the nearest line in the @var{staff-affinity} direction is a non-staff
1620 then @var{inter-loose-line-spacing} gives the spacing between the two
1621 non-staff lines.
1622
1623 @item
1624 If the nearest line in the opposite direction to @var{staff-affinity} is
1625 a staff then @var{non-affinity-spacing} gives the spacing between the
1626 non-staff and the staff.  This can be used, for example, to require
1627 a minimum amount of padding between a Lyrics line and the staff
1628 to which it does not belong.
1629 @end itemize
1630
1631 @lilypond[verbatim]
1632 #(set-global-staff-size 16)
1633 \layout {
1634   \context {
1635     \Lyrics
1636     % By default, Lyrics are placed close together.  Here, we allow them to
1637     % be stretched more widely.
1638     \override VerticalAxisGroup
1639       #'inter-loose-line-spacing #'stretchability = #1000
1640   }
1641 }
1642
1643 \new StaffGroup
1644 <<
1645   \new Staff \with {
1646     \override VerticalAxisGroup #'next-staff-spacing = #'((space . 30)) }
1647     { c'1 }
1648   \new Lyrics \with {
1649     \override VerticalAxisGroup #'staff-affinity = #UP }
1650     \lyricmode { up }
1651   \new Lyrics \with {
1652     \override VerticalAxisGroup #'staff-affinity = #CENTER }
1653     \lyricmode { center }
1654   \new Lyrics \with {
1655     \override VerticalAxisGroup #'staff-affinity = #DOWN }
1656     \lyricmode { down }
1657   \new Staff
1658     { c'1 }
1659 >>
1660 @end lilypond
1661
1662 @seealso
1663 Snippets:
1664 @rlsr{Spacing}.
1665
1666 @c @lsr{spacing,page-spacing.ly},
1667 @c @lsr{spacing,alignment-vertical-spacing.ly}.
1668
1669 Internals Reference:
1670 @rinternals{VerticalAxisGroup},
1671 @rinternals{VerticalAlignment},
1672 @rinternals{Axis_group_engraver}.
1673
1674 @knownissues
1675 Adjacent non-staff lines should have non-increasing
1676 @var{staff-affinity} from top-to-bottom.  For example, the behavior of
1677 @example
1678 <<
1679   \new Staff c
1680   \new Lyrics \with @{ \override VerticalAxisGroup #'staff-affinity = #DOWN @}
1681   \new Lyrics \with @{ \override VerticalAxisGroup #'staff-affinity = #UP @}
1682   \new Staff c
1683 >>
1684 @end example
1685 is undefined.
1686
1687 A non-staff line at the bottom of a system should have
1688 @var{staff-affinity} set to @code{UP}.  Similarly, a non-staff
1689 line at the top of a system should have @var{staff-affinity} set
1690 to @code{DOWN}.
1691
1692 @node Vertical spacing between systems
1693 @subsection Vertical spacing between systems
1694
1695 The mechanisms that control spacing between systems are similar to those
1696 that control spacing between staves within a system (see
1697 @ref{Vertical spacing inside a system}).  The main difference is that
1698 the variables to control spacing between systems are set in the
1699 @code{\paper} block, rather than as grob properties.  These paper block
1700 variables are @var{system-system-spacing},
1701 @var{score-system-spacing}, @var{markup-system-spacing},
1702 @var{score-markup-spacing}, @var{markup-markup-spacing},
1703 @var{top-system-spacing}, @var{top-markup-spacing} and
1704 @var{last-bottom-spacing}.  Note that these variables ignore non-staff
1705 lines.  For example, @var{system-system-spacing} controls the spacing
1706 from the middle staff line of the bottom staff from one system to
1707 the middle staff line of the top staff of the next system, whether
1708 or not there are lyrics below the upper system.
1709 See @ref{Vertical dimensions} for a description of each of these
1710 variables.
1711
1712 There are two more @code{\paper} block variables that affect vertical
1713 spacing: if @var{ragged-bottom} is set to @code{##t} then no pages will
1714 be stretched (which means that neither the space between systems nor the
1715 space within systems will be stretched).  If @var{ragged-last-bottom}
1716 is set to @code{##t} then the last page will not be stretched.
1717
1718 @seealso
1719 Snippets:
1720 @rlsr{Spacing}.
1721
1722
1723 @node Explicit staff and system positioning
1724 @subsection Explicit staff and system positioning
1725
1726 One way to understand the @code{VerticalAxisGroup} and @code{\paper}
1727 settings explained in the previous two sections is as a collection of
1728 different settings that primarily concern the amount of vertical padding
1729 different staves and systems running down the page.
1730
1731 It is possible to approach vertical spacing in a different way using
1732 @code{NonMusicalPaperColumn #'line-break-system-details}.  Where
1733 @code{VerticalAxisGroup} and @code{\paper} settings specify vertical padding,
1734 @code{NonMusicalPaperColumn #'line-break-system-details} specifies exact
1735 vertical positions on the page.
1736
1737 @code{NonMusicalPaperColumn #'line-break-system-details} accepts an associative
1738 list of three different settings:
1739
1740 @itemize
1741 @item @code{X-offset}
1742 @item @code{Y-offset}
1743 @item @code{alignment-distances}
1744 @end itemize
1745
1746 Grob overrides, including the overrides for @code{NonMusicalPaperColumn}
1747 below, can occur in any of three different places in an input file:
1748
1749 @itemize
1750 @item in the middle of note entry directly
1751 @item in a @code{\context} block
1752 @item in the @code{\with} block
1753 @end itemize
1754
1755 When we override @code{NonMusicalPaperColumn}, we use the usual
1756 @code{\override} command in @code{\context} blocks and in the
1757 @code{\with} block.  On the other hand, when we override
1758 @code{NonMusicalPaperColumn} in the middle of note entry,
1759 use the special @code{\overrideProperty} command.  Here are some
1760 example @code{NonMusicalPaperColumn} overrides with the special
1761 @code{\overrideProperty} command:
1762
1763 @example
1764 \overrideProperty NonMusicalPaperColumn
1765   #'line-break-system-details #'((X-offset . 20))
1766
1767 \overrideProperty NonMusicalPaperColumn
1768   #'line-break-system-details #'((Y-offset . 40))
1769
1770 \overrideProperty NonMusicalPaperColumn
1771   #'line-break-system-details #'((X-offset . 20) (Y-offset . 40))
1772
1773 \overrideProperty NonMusicalPaperColumn
1774   #'line-break-system-details #'((alignment-distances . (15)))
1775
1776 \overrideProperty NonMusicalPaperColumn
1777   #'line-break-system-details #'((X-offset . 20) (Y-offset . 40)
1778                                  (alignment-distances . (15)))
1779 @end example
1780
1781 To understand how each of these different settings work, we begin
1782 by looking at an example that includes no overrides at all.
1783
1784 @c \book { } is required in these examples to ensure the spacing
1785 @c overrides can be seen between systems. -np
1786
1787 @lilypond[quote]
1788 \header { tagline = ##f }
1789 \paper { left-margin = 0\mm }
1790 \book {
1791   \score {
1792     <<
1793       \new Staff <<
1794         \new Voice {
1795           s1*5 \break
1796           s1*5 \break
1797           s1*5 \break
1798         }
1799         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
1800       >>
1801       \new Staff {
1802         \repeat unfold 15 { d'4 d' d' d' }
1803       }
1804     >>
1805   }
1806 }
1807 @end lilypond
1808
1809 This score isolates line- and page-breaking information in a dedicated
1810 voice.  This technique of creating a breaks voice will help keep layout
1811 separate from music entry as our example becomes more complicated.
1812 See @ref{Using an extra voice for breaks}.
1813
1814 Explicit @code{\breaks} evenly divide the music into six measures per
1815 line.  Vertical spacing results from LilyPond's defaults.  To set
1816 the vertical startpoint of each system explicitly, we can set
1817 the @code{Y-offset} pair in the @code{line-break-system-details}
1818 attribute of the @code{NonMusicalPaperColumn} grob:
1819
1820 @lilypond[quote]
1821 \header { tagline = ##f }
1822 \paper { left-margin = 0\mm }
1823 \book {
1824   \score {
1825     <<
1826       \new Staff <<
1827         \new Voice {
1828           \overrideProperty #"Score.NonMusicalPaperColumn"
1829             #'line-break-system-details #'((Y-offset . 0))
1830           s1*5 \break
1831           \overrideProperty #"Score.NonMusicalPaperColumn"
1832             #'line-break-system-details #'((Y-offset . 40))
1833           s1*5 \break
1834           \overrideProperty #"Score.NonMusicalPaperColumn"
1835             #'line-break-system-details #'((Y-offset . 80))
1836           s1*5 \break
1837         }
1838         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
1839       >>
1840       \new Staff {
1841         \repeat unfold 15 { d'4 d' d' d' }
1842       }
1843     >>
1844   }
1845 }
1846 @end lilypond
1847
1848 Note that @code{line-break-system-details} takes an associative list of
1849 potentially many values, but that we set only one value here.  Note,
1850 too, that the @code{Y-offset} property here determines the exact vertical
1851 position on the page at which each new system will render.
1852
1853 Now that we have set the vertical startpoint of each system
1854 explicitly, we can also set the vertical distances between staves
1855 within each system manually.  We do this using the @code{alignment-distances}
1856 subproperty of @code{line-break-system-details}.
1857
1858 @lilypond[quote]
1859 \header { tagline = ##f }
1860 \paper { left-margin = 0\mm }
1861 \book {
1862   \score {
1863     <<
1864       \new Staff <<
1865         \new Voice {
1866           \overrideProperty #"Score.NonMusicalPaperColumn"
1867             #'line-break-system-details #'((Y-offset . 20)
1868                                            (alignment-distances . (15)))
1869           s1*5 \break
1870           \overrideProperty #"Score.NonMusicalPaperColumn"
1871             #'line-break-system-details #'((Y-offset . 60)
1872                                            (alignment-distances . (15)))
1873           s1*5 \break
1874           \overrideProperty #"Score.NonMusicalPaperColumn"
1875             #'line-break-system-details #'((Y-offset . 100)
1876                                            (alignment-distances . (15)))
1877           s1*5 \break
1878         }
1879         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
1880       >>
1881       \new Staff {
1882         \repeat unfold 15 { d'4 d' d' d' }
1883       }
1884     >>
1885   }
1886 }
1887 @end lilypond
1888
1889 Note that here we assign two different values to the
1890 @code{line-break-system-details} attribute of the
1891 @code{NonMusicalPaperColumn} grob.  Though the
1892 @code{line-break-system-details} attribute alist accepts many
1893 additional spacing parameters (including, for example, a corresponding
1894 @code{X-offset} pair), we need only set the @code{Y-offset} and
1895 @code{alignment-distances} pairs to control the vertical startpoint of
1896 every system and every staff.  Finally, note that @code{alignment-distances}
1897 specifies the vertical positioning of staves but not of staff groups.
1898
1899 @lilypond[quote]
1900 \header { tagline = ##f }
1901 \paper { left-margin = 0\mm }
1902 \book {
1903   \score {
1904     <<
1905       \new Staff <<
1906         \new Voice {
1907           \overrideProperty #"Score.NonMusicalPaperColumn"
1908             #'line-break-system-details #'((Y-offset . 0)
1909                                            (alignment-distances . (30 10)))
1910           s1*5 \break
1911           \overrideProperty #"Score.NonMusicalPaperColumn"
1912             #'line-break-system-details #'((Y-offset . 60)
1913                                            (alignment-distances . (10 10)))
1914           s1*5 \break
1915           \overrideProperty #"Score.NonMusicalPaperColumn"
1916             #'line-break-system-details #'((Y-offset . 100)
1917                                            (alignment-distances . (10 30)))
1918           s1*5 \break
1919         }
1920         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
1921       >>
1922       \new StaffGroup <<
1923         \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
1924         \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
1925       >>
1926     >>
1927   }
1928 }
1929 @end lilypond
1930
1931 Some points to consider:
1932
1933 @itemize
1934 @item When using @code{alignment-distances}, lyrics and other non-staff lines
1935 do not count as a staff.
1936
1937 @item The units of the numbers passed to @code{X-offset},
1938 @code{Y-offset} and @code{alignment-distances} are interpreted as multiples
1939 of the distance between adjacent staff lines.  Positive values move staves
1940 and lyrics up, negative values move staves and lyrics down.
1941
1942 @item Because the @code{NonMusicalPaperColumn #'line-break-system-details}
1943 settings given here allow the positioning of staves and systems anywhere
1944 on the page, it is possible to violate paper or margin boundaries or even
1945 to print staves or systems on top of one another.  Reasonable values
1946 passed to these different settings will avoid this.
1947 @end itemize
1948
1949
1950 @seealso
1951 Snippets:
1952 @rlsr{Spacing}.
1953
1954
1955 @node Vertical collision avoidance
1956 @subsection Vertical collision avoidance
1957
1958 @funindex outside-staff-priority
1959 @funindex outside-staff-padding
1960 @funindex outside-staff-horizontal-padding
1961
1962 Intuitively, there are some objects in musical notation that belong
1963 to the staff and there are other objects that should be placed outside
1964 the staff.  Objects belonging outside the staff include things such as
1965 rehearsal marks, text and dynamic markings (from now on, these will
1966 be called outside-staff objects).  LilyPond's rule for the
1967 vertical placement of outside-staff objects is to place them as close
1968 to the staff as possible but not so close that they collide with
1969 another object.
1970
1971 LilyPond uses the @code{outside-staff-priority} property to determine
1972 whether a grob is an outside-staff object: if @code{outside-staff-priority}
1973 is a number, the grob is an outside-staff object.  In addition,
1974 @code{outside-staff-priority} tells LilyPond in which order the objects
1975 should be placed.
1976
1977 First, LilyPond places all the objects that do not belong outside
1978 the staff.  Then it sorts the outside-staff objects according to their
1979 @code{outside-staff-priority} (in increasing order).  One by one, LilyPond
1980 takes the outside-staff objects and places them so that they do
1981 not collide with any objects that have already been placed.  That
1982 is, if two outside-staff grobs are competing for the same space, the one
1983 with the lower @code{outside-staff-priority} will be placed closer to
1984 the staff.
1985
1986 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
1987 c4_"Text"\pp
1988 r2.
1989 \once \override TextScript #'outside-staff-priority = #1
1990 c4_"Text"\pp % this time the text will be closer to the staff
1991 r2.
1992 % by setting outside-staff-priority to a non-number,
1993 % we disable the automatic collision avoidance
1994 \once \override TextScript #'outside-staff-priority = ##f
1995 \once \override DynamicLineSpanner #'outside-staff-priority = ##f
1996 c4_"Text"\pp % now they will collide
1997 @end lilypond
1998
1999 The vertical padding between an outside-staff object and the
2000 previously-positioned grobs can be controlled with
2001 @code{outside-staff-padding}.
2002
2003 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
2004 \once \override TextScript #'outside-staff-padding = #0
2005 a'^"This text is placed very close to the note"
2006 \once \override TextScript #'outside-staff-padding = #3
2007 c^"This text is padded away from the previous text"
2008 c^"This text is placed close to the previous text"
2009 @end lilypond
2010
2011
2012 By default, outside-staff objects are placed only to avoid
2013 a horizontal collision with previously-positioned grobs.  This
2014 can lead to situations in which objects are placed very close to each
2015 other horizontally.  The vertical spacing between staves can
2016 also be set so that outside staff objects are interleaved.
2017 Setting @code{outside-staff-horizontal-padding}
2018 causes an object to be offset vertically so that such a situation
2019 doesn't occur.
2020
2021 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
2022 % the markup is too close to the following note
2023 c4^"Text"
2024 c4
2025 c''2
2026 % setting outside-staff-horizontal-padding fixes this
2027 R1
2028 \once \override TextScript #'outside-staff-horizontal-padding = #1
2029 c,,4^"Text"
2030 c4
2031 c''2
2032 @end lilypond
2033
2034
2035 @seealso
2036 Snippets:
2037 @rlsr{Spacing}.
2038
2039
2040 @node Horizontal spacing
2041 @section Horizontal spacing
2042
2043 @cindex horizontal spacing
2044 @cindex spacing, horizontal
2045
2046 @menu
2047 * Horizontal spacing overview::
2048 * New spacing area::
2049 * Changing horizontal spacing::
2050 * Line length::
2051 * Proportional notation::
2052 @end menu
2053
2054
2055 @node Horizontal spacing overview
2056 @subsection Horizontal spacing overview
2057
2058 The spacing engine translates differences in durations into stretchable
2059 distances (@q{springs}) of differing lengths.  Longer durations get
2060 more space, shorter durations get less.  The shortest durations get a
2061 fixed amount of space (which is controlled by
2062 @code{shortest-duration-space} in the @rinternals{SpacingSpanner}
2063 object).  The longer the duration, the more space it gets: doubling a
2064 duration adds a fixed amount (this amount is controlled by
2065 @code{spacing-increment}) of space to the note.
2066
2067 For example, the following piece contains lots of half, quarter, and
2068 8th notes; the eighth note is followed by 1 note head width (NHW).
2069 The quarter note is followed by 2 NHW, the half by 3 NHW, etc.
2070
2071 @lilypond[quote,fragment,verbatim,relative=1]
2072 c2 c4. c8 c4. c8 c4. c8 c8
2073 c8 c4 c4 c4
2074 @end lilypond
2075
2076 Normally, @code{spacing-increment} is set to 1.2 staff space, which is
2077 approximately the width of a note head, and
2078 @code{shortest-duration-space} is set to 2.0, meaning that the
2079 shortest note gets 2.4 staff space (2.0 times the
2080 @code{spacing-increment}) of horizontal space.  This space is counted
2081 from the left edge of the symbol, so the shortest notes are generally
2082 followed by one NHW of space.
2083
2084 If one would follow the above procedure exactly, then adding a single
2085 32nd note to a score that uses 8th and 16th notes, would widen up the
2086 entire score a lot.  The shortest note is no longer a 16th, but a 32nd,
2087 thus adding 1 NHW to every note.  To prevent this, the shortest
2088 duration for spacing is not the shortest note in the score, but rather
2089 the one which occurs most frequently.
2090
2091
2092 The most common shortest duration is determined as follows: in every
2093 measure, the shortest duration is determined.  The most common shortest
2094 duration is taken as the basis for the spacing, with the stipulation
2095 that this shortest duration should always be equal to or shorter than
2096 an 8th note.  The shortest duration is printed when you run
2097 @code{lilypond} with the @code{--verbose} option.
2098
2099 These durations may also be customized.  If you set the
2100 @code{common-shortest-duration} in @rinternals{SpacingSpanner}, then
2101 this sets the base duration for spacing.  The maximum duration for this
2102 base (normally an 8th), is set through @code{base-shortest-duration}.
2103
2104 @funindex common-shortest-duration
2105 @funindex base-shortest-duration
2106 @funindex stem-spacing-correction
2107 @funindex spacing
2108
2109 Notes that are even shorter than the common shortest note are
2110 followed by a space that is proportional to their duration relative to
2111 the common shortest note.  So if we were to add only a few 16th notes
2112 to the example above, they would be followed by half a NHW:
2113
2114 @lilypond[quote,fragment,verbatim,relative=2]
2115 c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4
2116 @end lilypond
2117
2118
2119 In the @emph{Essay on automated music engraving}, it was explained
2120 that stem directions influence spacing (see @ressay{Optical
2121 spacing}).  This is controlled with the
2122 @code{stem-spacing-correction} property in the
2123 @rinternals{NoteSpacing}, object.  These are generated for every
2124 @rinternals{Voice} context.  The @code{StaffSpacing} object
2125 (generated in @rinternals{Staff} context) contains the same
2126 property for controlling the stem/bar line spacing.  The following
2127 example shows these corrections, once with default settings, and
2128 once with exaggerated corrections:
2129
2130 @lilypond[quote,ragged-right]
2131 {
2132   c'4 e''4 e'4 b'4 |
2133   b'4 e''4 b'4 e''4 |
2134   \override Staff.NoteSpacing #'stem-spacing-correction = #1.5
2135   \override Staff.StaffSpacing #'stem-spacing-correction = #1.5
2136   c'4 e''4 e'4 b'4 |
2137   b'4 e''4 b'4 e''4 |
2138 }
2139 @end lilypond
2140
2141 Proportional notation is supported; see @ref{Proportional notation}.
2142
2143
2144 @seealso
2145 Snippets:
2146 @rlsr{Spacing}.
2147
2148 Internals Reference:
2149 @rinternals{SpacingSpanner},
2150 @rinternals{NoteSpacing},
2151 @rinternals{StaffSpacing},
2152 @rinternals{NonMusicalPaperColumn}.
2153
2154
2155 @knownissues
2156
2157 There is no convenient mechanism to manually override spacing.  The
2158 following work-around may be used to insert extra space into a score,
2159 adjusting the padding value as necessary.
2160 @example
2161  \override Score.NonMusicalPaperColumn #'padding = #10
2162 @end example
2163
2164 No work-around exists for decreasing the amount of space.
2165
2166
2167 @node New spacing area
2168 @subsection New spacing area
2169
2170 New sections with different spacing parameters can be started with
2171 @code{newSpacingSection}.  This is useful when there are
2172 sections with a different notions of long and short notes.
2173
2174 In the following example, the time signature change introduces a new
2175 section, and hence the 16ths notes are spaced wider.
2176
2177 @lilypond[relative,fragment,verbatim,quote]
2178 \time 2/4
2179 c4 c8 c
2180 c8 c c4 c16[ c c8] c4
2181 \newSpacingSection
2182 \time 4/16
2183 c16[ c c8]
2184 @end lilypond
2185
2186 The @code{\newSpacingSection} command creates a new
2187 @code{SpacingSpanner} object, and hence new @code{\override}s
2188 may be used in that location.
2189
2190
2191 @seealso
2192 Snippets:
2193 @rlsr{Spacing}.
2194
2195 Internals Reference:
2196 @rinternals{SpacingSpanner}.
2197
2198
2199 @node Changing horizontal spacing
2200 @subsection Changing horizontal spacing
2201
2202 Horizontal spacing may be altered with the
2203 @code{base-shortest-duration} property.  Here
2204 we compare the same music; once without altering
2205 the property, and then altered.  Larger values
2206 of @code{ly:make-moment} will produce smaller
2207 music.  Note that @code{ly:make-moment} constructs
2208 a duration, so @code{1 4} is a longer duration
2209 than @code{1 16}.
2210
2211 @lilypond[verbatim,line-width=12\cm]
2212 \score {
2213   \relative c'' {
2214     g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
2215     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2216     d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
2217     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2218   }
2219 }
2220 @end lilypond
2221
2222 @lilypond[verbatim,line-width=12\cm]
2223 \score {
2224   \relative c'' {
2225     g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
2226     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2227     d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
2228     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2229   }
2230   \layout {
2231     \context {
2232       \Score
2233       \override SpacingSpanner
2234         #'base-shortest-duration = #(ly:make-moment 1 16)
2235     }
2236   }
2237 }
2238 @end lilypond
2239
2240
2241 @snippets
2242
2243 By default, spacing in tuplets depends on various non-duration
2244 factors (such as accidentals, clef changes, etc).  To disregard
2245 such symbols and force uniform equal-duration spacing, use
2246 @code{Score.SpacingSpanner #'uniform-stretching}.  This
2247 property can only be changed at the beginning of a score,
2248
2249 @lilypond[quote,ragged-right,verbatim]
2250 \score {
2251   <<
2252     \new Staff {
2253       \times 4/5 {
2254         c8 c8 c8 c8 c8
2255       }
2256       c8 c8 c8 c8
2257     }
2258     \new Staff {
2259       c8 c8 c8 c8
2260       \times 4/5 {
2261         c8 c8 c8 c8 c8
2262       }
2263     }
2264   >>
2265   \layout {
2266     \context {
2267       \Score
2268       \override SpacingSpanner #'uniform-stretching = ##t
2269     }
2270   }
2271 }
2272 @end lilypond
2273
2274 When @code{strict-note-spacing} is set, notes are spaced without
2275 regard for clefs, bar lines, and grace notes,
2276
2277 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
2278 \override Score.SpacingSpanner #'strict-note-spacing = ##t
2279 \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c32] }
2280 @end lilypond
2281
2282
2283 @seealso
2284 Snippets:
2285 @rlsr{Spacing}.
2286
2287
2288 @node Line length
2289 @subsection Line length
2290
2291 @cindex page breaks
2292 @cindex breaking pages
2293
2294 @funindex indent
2295 @funindex line-width
2296 @funindex ragged-right
2297 @funindex ragged-last
2298
2299 @c Although line-width can be set in \layout, it should be set in paper
2300 @c block, to get page layout right.
2301 @c Setting indent in \paper block makes not much sense, but it works.
2302
2303 @c Bit verbose and vague, use examples?
2304 The most basic settings influencing the spacing are @code{indent} and
2305 @code{line-width}.  They are set in the @code{\layout} block.  They
2306 control the indentation of the first line of music, and the lengths of
2307 the lines.
2308
2309 If @code{ragged-right} is set to true in the @code{\layout} block, then
2310 systems ends at their natural horizontal length, instead of being spread
2311 horizontally to fill the whole line.  This is useful for
2312 short fragments, and for checking how tight the natural spacing is.
2313 The normal default setting is false, but if the score has only one
2314 system the default value is true.
2315
2316 @cindex page layout
2317 @cindex vertical spacing
2318
2319 The option @code{ragged-last} is similar to @code{ragged-right}, but
2320 only affects the last line of the piece.  No restrictions are put on
2321 that line.  The result is similar to formatting text paragraphs.  In a
2322 paragraph, the last line simply takes its natural horizontal length.
2323 @c Note that for text there are several options for the last line.
2324 @c While Knuth TeX uses natural length, lead typesetters use the same
2325 @c stretch as the previous line.  eTeX uses \lastlinefit to
2326 @c interpolate between both these solutions.
2327
2328 @example
2329 \layout @{
2330   indent = #0
2331   line-width = #150
2332   ragged-last = ##t
2333 @}
2334 @end example
2335
2336
2337 @seealso
2338 Snippets:
2339 @rlsr{Spacing}.
2340
2341
2342 @node Proportional notation
2343 @subsection Proportional notation
2344
2345 LilyPond supports proportional notation, a type of horizontal spacing
2346 in which each note consumes an amount of horizontal space exactly
2347 equivalent to its rhythmic duration.  This type of proportional spacing
2348 is comparable to horizontal spacing on top of graph paper.  Some late
2349 20th- and early 21st-century scores use proportional notation to
2350 clarify complex rhythmic relationships or to facilitate the placement
2351 of timelines or other graphics directly in the score.
2352
2353 LilyPond supports five different settings for proportional notation,
2354 which may be used together or alone:
2355
2356 @itemize
2357 @item @code{proportionalNotationDuration}
2358 @item @code{uniform-stretching}
2359 @item @code{strict-note-spacing}
2360 @item @code{\remove Separating_line_group_engraver}
2361 @item @code{\override PaperColumn #'used = ##t}
2362 @end itemize
2363
2364 In the examples that follow, we explore these five different
2365 proportional notation settings and examine how these settings interact.
2366
2367 We start with the following one-measure example, which uses classical
2368 spacing with ragged-right turned on.
2369
2370 @lilypond[quote,verbatim,ragged-right]
2371 \score {
2372   <<
2373     \new RhythmicStaff {
2374       c'2
2375       c'16 c'16 c'16 c'16
2376       \times 4/5 {
2377         c'16 c'16 c'16 c'16 c'16
2378       }
2379     }
2380   >>
2381 }
2382 @end lilypond
2383
2384 Notice that the half note which begins the measure takes up far less
2385 than half of the horizontal space of the measure.  Likewise, the
2386 sixteenth notes and sixteenth-note quintuplets (or twentieth notes)
2387 which end the measure together take up far more than half the
2388 horizontal space of the measure.
2389
2390 In classical engraving, this spacing may be exactly what we want
2391 because we can borrow horizontal space from the half note and conserve
2392 horizontal space across the measure as a whole.
2393
2394 On the other hand, if we want to insert a measured timeline or other
2395 graphic above or below our score, we need proportional notation.  We
2396 turn proportional notation on with the proportionalNotationDuration
2397 setting.
2398
2399 @lilypond[quote,verbatim,ragged-right]
2400 \score {
2401   <<
2402     \new RhythmicStaff {
2403       c'2
2404       c'16 c'16 c'16 c'16
2405       \times 4/5 {
2406         c'16 c'16 c'16 c'16 c'16
2407       }
2408     }
2409   >>
2410  \layout {
2411     \context {
2412       \Score
2413       proportionalNotationDuration = #(ly:make-moment 1 20)
2414     }
2415   }
2416 }
2417 @end lilypond
2418
2419 The half note at the beginning of the measure and the faster notes in
2420 the second half of the measure now occupy equal amounts of horizontal
2421 space.  We could place a measured timeline or graphic above or below
2422 this example.
2423
2424 The @code{proportionalNotationDuration} setting is a context setting
2425 that lives in @code{Score}.  Remember that context settings can appear
2426 in one of three locations within our input file -- in a @code{\with}
2427 block, in a @code{\context} block, or directly in music entry preceded
2428 by the @code{\set} command.  As with all context settings, users can
2429 pick which of the three different locations they would like to
2430 set @code{proportionalNotationDuration} in to.
2431
2432 The @code{proportionalNotationDuration} setting takes a single argument,
2433 which is the reference duration against that all music will be spaced.
2434 The LilyPond Scheme function @code{make-moment} takes two arguments
2435 -- a numerator and denominator which together express some fraction of
2436 a whole note.  The call @code{#(ly:make-moment 1 20)} therefore produces
2437 a reference duration of a twentieth note.  Values such as
2438 @code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, and
2439 @code{#(ly:make-moment 3 97)} are all possible as well.
2440
2441 How do we select the right reference duration to pass to
2442 @code{proportionalNotationDuration}?  Usually by a process of trial
2443 and error, beginning with a duration close to the fastest (or smallest)
2444 duration in the piece.  Smaller reference durations space music loosely;
2445 larger reference durations space music tightly.
2446
2447 @lilypond[quote,verbatim,ragged-right]
2448 \score {
2449   <<
2450     \new RhythmicStaff {
2451       c'2
2452       c'16 c'16 c'16 c'16
2453       \times 4/5 {
2454         c'16 c'16 c'16 c'16 c'16
2455       }
2456     }
2457   >>
2458   \layout {
2459     \context {
2460       \Score
2461       proportionalNotationDuration = #(ly:make-moment 1 8)
2462     }
2463   }
2464 }
2465
2466 \score {
2467   <<
2468     \new RhythmicStaff {
2469       c'2
2470       c'16 c'16 c'16 c'16
2471       \times 4/5 {
2472         c'16 c'16 c'16 c'16 c'16
2473       }
2474     }
2475   >>
2476   \layout {
2477     \context {
2478       \Score
2479       proportionalNotationDuration = #(ly:make-moment 1 16)
2480     }
2481   }
2482 }
2483
2484 \score {
2485   <<
2486     \new RhythmicStaff {
2487       c'2
2488       c'16 c'16 c'16 c'16
2489       \times 4/5 {
2490         c'16 c'16 c'16 c'16 c'16
2491       }
2492     }
2493   >>
2494   \layout {
2495     \context {
2496       \Score
2497       proportionalNotationDuration = #(ly:make-moment 1 32)
2498     }
2499   }
2500 }
2501 @end lilypond
2502
2503 Note that too large a reference duration -- such as the eighth note,
2504 above -- spaces music too tightly and can cause note head collisions.
2505 Also that proportional notation in general takes up more horizontal
2506 space than classical spacing.  Proportional spacing provides rhythmic
2507 clarity at the expense of horizontal space.
2508
2509 Next we examine how to optimally space overlapping tuplets.
2510
2511 We start by examining what happens to our original example, with
2512 classical spacing, when we add a second staff with a different type of
2513 tuplet.
2514
2515 @lilypond[quote,verbatim,ragged-right]
2516 \score {
2517   <<
2518     \new RhythmicStaff {
2519       c'2
2520       c'16 c'16 c'16 c'16
2521       \times 4/5 {
2522         c'16 c'16 c'16 c'16 c'16
2523       }
2524     }
2525     \new RhythmicStaff {
2526       \times 8/9 {
2527         c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8
2528       }
2529     }
2530   >>
2531 }
2532 @end lilypond
2533
2534 The spacing is bad because the evenly spaced notes of the bottom staff
2535 do not stretch uniformly.  Classical engravings include very few complex
2536 triplets and so classical engraving rules can generate this type of
2537 result.  Setting @code{proportionalNotationDuration} fixes this.
2538
2539 @lilypond[quote,verbatim,ragged-right]
2540 \score {
2541   <<
2542     \new RhythmicStaff {
2543       c'2
2544       c'16 c'16 c'16 c'16
2545       \times 4/5 {
2546         c'16 c'16 c'16 c'16 c'16
2547       }
2548     }
2549     \new RhythmicStaff {
2550       \times 8/9 {
2551         c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8
2552       }
2553     }
2554   >>
2555   \layout {
2556     \context {
2557       \Score
2558       proportionalNotationDuration = #(ly:make-moment 1 20)
2559     }
2560   }
2561 }
2562 @end lilypond
2563
2564 But if we look very carefully we can see that notes of the second half
2565 of the 9-tuplet space ever so slightly more widely than the notes
2566 of the first half of the 9-tuplet.  To ensure uniform stretching, we
2567 turn on @code{uniform-stretching}, which is a property of
2568 @code{SpacingSpanner}.
2569
2570 @lilypond[quote,verbatim,ragged-right]
2571 \score {
2572   <<
2573     \new RhythmicStaff {
2574       c'2
2575       c'16 c'16 c'16 c'16
2576       \times 4/5 {
2577         c'16 c'16 c'16 c'16 c'16
2578       }
2579     }
2580     \new RhythmicStaff {
2581       \times 8/9 {
2582         c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8
2583       }
2584     }
2585   >>
2586   \layout {
2587     \context {
2588       \Score
2589       proportionalNotationDuration = #(ly:make-moment 1 20)
2590       \override SpacingSpanner #'uniform-stretching = ##t
2591     }
2592   }
2593 }
2594 @end lilypond
2595
2596 Our two-staff example now spaces exactly, our rhythmic
2597 relationships are visually clear, and we can include a measured
2598 timeline or graphic if we want.
2599
2600 Note that the LilyPond's proportional notation package expects
2601 that all proportional scores set the SpacingSpanner's
2602 'uniform-stretching attribute to ##t.  Setting
2603 proportionalNotationDuration without also setting the
2604 SpacingSpanner's 'uniform-stretching attribute to ##t will, for
2605 example, cause Skips to consume an incorrect amount of horizontal
2606 space.
2607
2608 The SpacingSpanner is an abstract grob that lives in the Score
2609 context.  As with our settings of proportionalNotationDuration,
2610 overrides to the SpacingSpanner can occur in any of three
2611 different places in our input file â€“ in the Score \with block, in
2612 a Score \context block, or in note entry directly.
2613
2614 There is by default only one @code{SpacingSpanner} per @code{Score}.  This
2615 means that, by default, @code{uniform-stretching} is either turned on for the
2616 entire score or turned off for the entire score.  We can, however,
2617 override this behavior and turn on different spacing features at
2618 different places in the score.  We do this with the command
2619 @code{\newSpacingSection}.  See @ref{New spacing area}, for more info.
2620
2621 Next we examine the effects of the @code{Separating_line_group_engraver} and
2622 see why proportional scores frequently remove this engraver.  The following
2623 example shows that there is a small amount of @qq{preferatory} space
2624 just before the first note in each system.
2625
2626 @lilypond[quote,verbatim,ragged-right]
2627 \paper {
2628   indent = #0
2629 }
2630
2631 \new Staff {
2632   c'1
2633   \break
2634   c'1
2635 }
2636 @end lilypond
2637
2638
2639 The amount of this preferatory space is the same whether after a time
2640 signature, a key signature or a clef.  @code{Separating_line_group_engraver}
2641 is responsible for this space.  Removing @code{Separating_line_group_engraver}
2642 reduces this space to zero.
2643
2644 @lilypond[quote,verbatim,ragged-right]
2645 \paper {
2646   indent = #0
2647 }
2648
2649 \new Staff \with {
2650   \remove Separating_line_group_engraver
2651 } {
2652   c'1
2653   \break
2654   c'1
2655 }
2656 @end lilypond
2657
2658 Nonmusical elements like time signatures, key signatures, clefs and
2659 accidentals are problematic in proportional notation.  None of these
2660 elements has rhythmic duration.  But all of these elements consume
2661 horizontal space.  Different proportional scores approach these
2662 problems differently.
2663
2664 It may be possible to avoid spacing problems with key signatures
2665 simply by not having any.  This is a valid option since most
2666 proportional scores are contemporary music.  The same may be true
2667 of time signatures, especially for those scores
2668 that include a measured timeline or other graphic.  But these scores
2669 are exceptional and most proportional scores include at least some
2670 time signatures.  Clefs and accidentals are even more essential.
2671
2672 So what strategies exist for spacing nonmusical elements in a
2673 proportional context?  One good option is the @code{strict-note-spacing}
2674 property of @code{SpacingSpanner}.  Compare the two scores below:
2675
2676 @lilypond[quote,verbatim,ragged-right]
2677 \new Staff {
2678   \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
2679   c''8
2680   c''8
2681   c''8
2682   \clef alto
2683   d'8
2684   d'2
2685 }
2686
2687 \new Staff {
2688   \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
2689   \override Score.SpacingSpanner #'strict-note-spacing = ##t
2690   c''8
2691   c''8
2692   c''8
2693   \clef alto
2694   d'8
2695   d'2
2696 }
2697 @end lilypond
2698
2699 Both scores are proportional, but the spacing in the first score
2700 is too loose because of the clef change.  The spacing of the second
2701 score remains strict, however, because strict-note-spacing is
2702 turned on.  Turning on strict-note-spacing causes the width of
2703 time signatures, key signatures, clefs and accidentals to play no
2704 part in the spacing algorithm.
2705
2706 In addition to the settings given here, there are other settings
2707 that frequently appear in proportional scores.  These include:
2708
2709 @itemize
2710 @item @code{\override SpacingSpanner #'strict-grace-spacing = ##t}
2711 @item @code{tupletFullLength = ##t}
2712 @item @code{\override Beam #'breakable = ##t}
2713 @item @code{\override Glissando #'breakable = ##t}
2714 @item @code{\override TextSpanner #'breakable = ##t}
2715 @item @code{\remove Forbid_line_break_engraver in the Voice context}
2716 @end itemize
2717
2718 These settings space grace notes strictly, extend tuplet brackets to
2719 mark both rhythmic start- and stop-points, and allow spanning elements
2720 to break across systems and pages.  See the respective parts of the manual
2721 for these related settings.
2722
2723
2724 @seealso
2725 Notation Reference:
2726 @ref{New spacing area}.
2727
2728 Snippets:
2729 @rlsr{Spacing}.
2730
2731
2732 @node Fitting music onto fewer pages
2733 @section Fitting music onto fewer pages
2734
2735 Sometimes you can end up with one or two staves on a second
2736 (or third, or fourth...) page.  This is annoying, especially
2737 if you look at previous pages and it looks like there is plenty
2738 of room left on those.
2739
2740 When investigating layout issues, @code{annotate-spacing} is an
2741 invaluable tool.  This command prints the values of various layout
2742 spacing variables; for more details see the following section,
2743 @ref{Displaying spacing}.
2744
2745 @menu
2746 * Displaying spacing::
2747 * Changing spacing::
2748 @end menu
2749
2750
2751 @node Displaying spacing
2752 @subsection Displaying spacing
2753
2754 @funindex annotate-spacing
2755 @cindex spacing, display of layout
2756
2757 To graphically display the dimensions of vertical layout variables
2758 that may be altered for page formatting, set
2759 @code{annotate-spacing} in the @code{\paper} block:
2760
2761 @c need to have \book{} otherwise we get the separate systems. -hwn
2762 @lilypond[verbatim,quote]
2763 #(set-default-paper-size "a6" 'landscape)
2764 \book {
2765   \score { { c4 } }
2766   \paper { annotate-spacing = ##t }
2767 }
2768 @end lilypond
2769
2770
2771 @noindent
2772 All layout dimensions are displayed in staff-spaces, regardless
2773 of the units specified in the @code{\paper} or @code{\layout} block.
2774 In the above example, @code{paper-height} has a value of 59.75
2775 @code{staff-spaces}, and the @code{staff-size} is 20 points (the
2776 default value).  Note that:
2777
2778 @multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm}
2779
2780 @item 1 point
2781 @tab = (25.4/72.27) mm
2782
2783 @item 1 staff-space
2784 @tab = (@code{staff-size})/4 pts
2785 @item
2786 @tab = (@code{staff-size})/4 * (25.4/72.27) mm
2787
2788 @end multitable
2789
2790 @noindent
2791 In this case, one @code{staff-space} is approximately equal to
2792 1.757mm.  Thus the @code{paper-height} measurement of 59.75
2793 @code{staff-spaces} is equivalent to 105 millimeters, the height
2794 of @code{a6} paper in landscape orientation.  The pairs
2795 (@var{a},@var{b}) are intervals, where @var{a} is the lower
2796 edge and @var{b} the upper edge of the interval.
2797
2798
2799 @seealso
2800 Notation Reference:
2801 @ref{Setting the staff size}.
2802
2803 Snippets:
2804 @rlsr{Spacing}.
2805
2806
2807 @node Changing spacing
2808 @subsection Changing spacing
2809
2810 The output of @code{annotate-spacing} reveals vertical dimensions
2811 in great detail.  For details about modifying margins and other
2812 layout variables, see @ref{Page formatting}.
2813
2814 Other than margins, there are a few other options to save space:
2815
2816 @itemize
2817 @item
2818 Force systems to move as close together as possible (to fit as
2819 many systems as possible onto a page) while being spaced so that
2820 there is no blank space at the bottom of the page.
2821
2822 @example
2823 \paper @{
2824   system-system-spacing = #'((padding . 0) (space . 0.1))
2825   ragged-last-bottom = ##f
2826   ragged-bottom = ##f
2827 @}
2828 @end example
2829
2830 @item
2831 Force the number of systems.  This can help in two ways.  Just
2832 setting a value, even the same value as the number of systems
2833 being typeset by default, will sometimes cause more systems to
2834 be fitted onto each page, as an estimation step is then bypassed,
2835 giving a more accurate fit to each page.  Also, forcing an actual
2836 reduction in the number of systems may save a further page.  For
2837 example, if the default layout has 11 systems, the following
2838 assignment will force a layout with 10 systems.
2839
2840 @example
2841 \paper @{
2842   system-count = #10
2843 @}
2844 @end example
2845
2846 @item
2847 Avoid (or reduce) objects that increase the vertical size of a
2848 system.  For example, volta repeats (or alternate repeats) require
2849 extra space.  If these repeats are spread over two systems, they
2850 will take up more space than one system with the volta repeats and
2851 another system without.  For example, dynamics that @q{stick out} of
2852 a system can be moved closer to the staff:
2853
2854 @lilypond[verbatim,quote,relative=1]
2855 e4 c g\f c
2856 e4 c g-\tweak #'X-offset #-2.7 -\tweak #'Y-offset #2.5 \f c
2857 @end lilypond
2858
2859 @item
2860 Alter the horizontal spacing via @code{SpacingSpanner}.  For more
2861 details, see @ref{Changing horizontal spacing}.  The following
2862 example illustrates the default spacing:
2863
2864 @lilypond[verbatim,quote]
2865 \score {
2866   \relative c'' {
2867     g4 e e2 |
2868     f4 d d2 |
2869     c4 d e f |
2870     g4 g g2 |
2871     g4 e e2 |
2872   }
2873 }
2874 @end lilypond
2875
2876 @noindent
2877 The next example modifies @code{common-shortest-duration} from a
2878 value of @code{1/4} to @code{1/2}.  The quarter note is the most
2879 common and shortest duration in this example, so by making this
2880 duration longer, a @q{squeezing} effect occurs:
2881
2882 @lilypond[verbatim,quote]
2883 \score {
2884   \relative c'' {
2885     g4 e e2 |
2886     f4 d d2 |
2887     c4 d e f |
2888     g4 g g2 |
2889     g4 e e2 |
2890   }
2891   \layout {
2892     \context {
2893       \Score
2894       \override SpacingSpanner
2895         #'common-shortest-duration = #(ly:make-moment 1 2)
2896     }
2897   }
2898 }
2899 @end lilypond
2900
2901 @noindent
2902 The @code{common-shortest-duration} property cannot be modified
2903 dynamically, so it must always be placed in a @code{\context}
2904 block so that it applies to the whole score.
2905
2906 @end itemize
2907
2908
2909 @seealso
2910 Notation Reference:
2911 @ref{Page formatting},
2912 @ref{Changing horizontal spacing}.
2913
2914 Snippets:
2915 @rlsr{Spacing}.