]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/tweaks.itely
Remove duplicate example.
[lilypond.git] / Documentation / user / tweaks.itely
index 11835602ffcf07336e44bc2c15e3842fd68711cb..b26704c13c5f28c8cb78ca42e17b466d7868a104 100644 (file)
@@ -11,6 +11,7 @@ configurable; virtually every fragment of output may be changed.
 * Fixing overlapping notation::  
 * Common tweaks::               
 * Default files::               
+* Fitting music onto fewer pages::  
 * Advanced tweaks with Scheme::  
 @end menu
 
@@ -60,7 +61,7 @@ c4^"piu mosso" d e f
 \once \override TextScript #'staff-padding = #2.6
 c4^"piu mosso" fis a g
 \break
-c,,4^"piu mosso" b a b
+c'4^"piu mosso" b a b
 \once \override TextScript #'padding = #2.6
 c4^"piu mosso" d e f
 \once \override TextScript #'staff-padding = #2.6
@@ -73,7 +74,7 @@ Another solution gives us complete control over placing the object -- we
 can move it horizontally or vertically.  This is done with the
 @code{extra-offset} property.  It is slightly more complicated and can
 cause other problems.  When we move objects with @code{extra-offset},
-the movement is done after LilyPond has placed all other objects.  This 
+the movement is done after LilyPond has placed all other objects.  This
 means
 that the result can overlap with other objects.
 
@@ -126,7 +127,6 @@ c4^"piu mosso" d e f
 c4^"piu mosso" d e f
 @end lilypond
 
-
 @seealso
 
 This manual: @ref{The \override command}, @ref{Common tweaks}.
@@ -153,7 +153,7 @@ Vertical positioning of these symbols is handled by
 @end quotation
 
 @noindent
-So to move dynamics around, we use
+So to move dynamics around vertically, we use
 
 @example
 \override DynamicLineSpanner #'padding = #2.0
@@ -163,14 +163,15 @@ We cannot list every object, but here is a list of the most
 common objects.
 
 @multitable @columnfractions .33 .66
-@headitem Object type  @tab Object name
-@item Text             @tab @code{TextScript}
-@item Dynamics         @tab @code{DynamicLineSpanner}
-@item Ties             @tab @code{Tie}
-@item Slurs            @tab @code{Slur}
-@item Articulation     @tab @code{Script}
-@item Fingering        @tab @code{Fingering}
-@item Rehearsal marks  @tab @code{RehearsalMark}
+@headitem Object type           @tab Object name
+@item Dynamics (vertically)     @tab @code{DynamicLineSpanner}
+@item Dynamics (horizontally)   @tab @code{DynamicText}
+@item Ties                      @tab @code{Tie}
+@item Slurs                     @tab @code{Slur}
+@item Articulations             @tab @code{Script}
+@item Fingerings                @tab @code{Fingering}
+@item Text e.g. @code{^"text"}  @tab @code{TextScript}
+@item Rehearsal / Text marks    @tab @code{RehearsalMark}
 @end multitable
 
 
@@ -189,8 +190,10 @@ used to apply generic tweaks.
 
 @itemize @bullet
 
-@cindex @code{padding}
-@item The @code{padding} property can be set to increase
+@cindex padding
+
+@item
+The @code{padding} property can be set to increase
 (or decrease) the distance between symbols that are printed
 above or below notes.  This applies to all objects with
 @code{side-position-interface}.
@@ -218,8 +221,10 @@ is handled in the @code{Score} context, property changes in the
 @code{Voice} context will not be noticed.  For more details, see
 @ref{Constructing a tweak}.
 
-@cindex @code{extra-offset}
-@item The @code{extra-offset} property moves objects around
+@cindex extra-offset
+
+@item
+The @code{extra-offset} property moves objects around
 in the output; it requires a pair of numbers.  The first number
 controls horizontal movement; a positive number will
 move the object to the right.  The second number controls vertical
@@ -238,7 +243,7 @@ f-5
 f-5
 @end lilypond
 
-@item
+ @item
 Setting the @code{transparent} property will cause an object to be printed
 in `invisible ink': the object is not printed, but all its other
 behavior is retained.  The object still takes up space, it takes part in
@@ -264,6 +269,7 @@ voice.  By introducing a tie in a different voice,
 and blanking the first up-stem in that voice, the tie appears to cross
 voices:
 
+
 @lilypond[quote,fragment,relative=2,verbatim]
 << {
   \once \override Stem #'transparent = ##t
@@ -273,6 +279,20 @@ voices:
 } >>
 @end lilypond
 
+To make sure that the just blanked stem doesn't sqeeuze the too much
+tie, we also lengthen the stem, by setting the @code{length} to
+@code{8},
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<< {
+  \once \override Stem #'transparent = ##t
+  \once \override Stem #'length = #8
+  b8~ b8\noBeam
+} \\ {
+  b[ g8]
+} >>
+@end lilypond
+
 @end itemize
 
 @cindex Tweaks, distances
@@ -300,17 +320,17 @@ outside the scope of this manual; users should be warned that
 a substantial amount of technical knowledge or time is required
 to understand these files.
 
-@itemize bullet
+@itemize @bullet
 
-@item Linux: @file{@{INSTALLDIR@}/lilypond/usr/share/lilypond/current/}
+@item Linux: @file{@var{installdir}/lilypond/usr/share/lilypond/current/}
 
 @item OSX:
-@file{@{INSTALLDIR@}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
-To access this, either @code{cd} into this directory from
-the Terminal, or control-click on the LilyPond application
-and select "Show Package Contents".
+@file{@var{installdir}/LilyPond.app/Contents/Resources/share/lilypond/current/}.
+To access this, either @code{cd} into this directory from the
+Terminal, or control-click on the LilyPond application and select
+"Show Package Contents".
 
-@item Windows: @file{@{INSTALLDIR@}/LilyPond/usr/share/lilypond/current/}
+@item Windows: @file{@var{installdir}/LilyPond/usr/share/lilypond/current/}
 
 @end itemize
 
@@ -319,6 +339,93 @@ particular interest.  Files such as @file{ly/property-init.ly} and
 @file{ly/declarations-init.ly} define all the common tweaks.
 
 
+@node Fitting music onto fewer pages
+@section Fitting music onto fewer pages
+
+Sometimes you can end up with one or two staves on a second
+(or third, or fourth...) page.  This is annoying, especially
+if you look at previous pages and it looks like there is plenty
+of room left on those.
+
+When investigating layout issues, @code{annotate-spacing} is
+an invaluable tool.  This command prints the values of various
+layout spacing commands; see @ref{Displaying spacing} for more
+details.  From the output of @code{annotate-spacing}, we can
+see which margins we may wish to alter.
+
+Other than margins, there are a few other options to save space:
+
+@itemize
+@item
+You may tell LilyPond to place systems as close together as
+possible (to fit as many systems as possible onto a page), but
+then to space those systems out so that there is no blank
+space at the bottom of the page.
+
+@example
+\paper @{
+between-system-padding = #0.1
+between-system-space = #0.1
+ragged-last-bottom = ##f
+ragged-bottom = ##f
+@}
+@end example
+
+@item
+You may force the number of systems (i.e., if LilyPond wants
+to typeset some music with 11 systems, you could force it to
+use 10).
+
+@example
+\paper @{
+system-count = #10
+@}
+@end example
+
+@item
+Avoid (or reduce) objects which increase the vertical size of
+a system.  For example, volta repeats (or alternate repeats)
+require extra space.  If these repeats are spread over two
+systems, they will take up more space than one system with
+the volta repeats and another system without.
+
+Another example is moving dynamics which ``stick out'' of
+a system.
+
+@lilypond[verbatim,quote,fragment]
+\relative c' {
+  e4 c g\f c
+  \override DynamicLineSpanner #'padding = #-1.8
+  \override DynamicText #'extra-offset = #'( -2.1 . 0)
+  e4 c g\f c
+}
+@end lilypond
+
+@item
+Alter the horizontal spacing via @code{SpacingSpanner}.  See
+@ref{Changing horizontal spacing} for more details.
+
+@lilypond[verbatim,quote]
+\score {
+  \relative c'' {
+    g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
+    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
+    d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
+    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
+  }
+  \layout {
+    \context {
+      \Score
+      \override SpacingSpanner
+                #'base-shortest-duration = #(ly:make-moment 1 4)
+    }
+  }
+}
+@end lilypond
+
+@end itemize
+
+
 @node Advanced tweaks with Scheme
 @section Advanced tweaks with Scheme
 
@@ -349,17 +456,17 @@ padText = #(define-music-function (parser location padding) (number?)
 We can use it to create new commands,
 
 @lilypond[quote,verbatim,ragged-right]
-tempoMark = #(define-music-function
-  (parser location marktext padding) (string? number?)
+tempoMark = #(define-music-function (parser location padding marktext)
+                                    (number? string?)
 #{
   \once \override Score . RehearsalMark #'padding = $padding
-  \once \override Score . RehearsalMark #'no-spacing-rods = ##t
+  \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
   \mark \markup { \bold $marktext }
 #})
 
 \relative c'' {
 c2 e
-\tempoMark #"Allegro" #3.0
+\tempoMark #3.0 #"Allegro"
 g c
 }
 @end lilypond