]> git.donarmstrong.com Git - lilypond.git/commitdiff
Update from Trevor.
authorGraham Percival <graham@percival-music.ca>
Thu, 6 Dec 2007 23:14:36 +0000 (15:14 -0800)
committerGraham Percival <graham@percival-music.ca>
Thu, 6 Dec 2007 23:14:36 +0000 (15:14 -0800)
Documentation/user/tweaks.itely

index 84fae0dedd99b3cc3d1176e0ef20c7699895afd4..fd6c9950bc09a4cb5143a8f0376cd308cd21619e 100644 (file)
@@ -22,6 +22,9 @@ somewhat experimental; nothing is fixed.  Don't translate yet!
 * Tweaking basics::             
 * The Internals Reference manual::  
 * Appearance of objects::       
+* Placement of objects::        
+* Collisions of objects::       
+* Page layout::                 
 * Common tweaks::               
 * TODO other name::             
 @end menu
@@ -125,7 +128,7 @@ of the most common object and property types together with
 the conventions for naming them and a couple of examples of 
 some real names.  We have used A to stand for any capitalised
 alphabetic character and aaa to stand for any number of
-lower-case alphabetic characters.  Other charaters are used
+lower-case alphabetic characters.  Other characters are used
 verbatim. 
 
 @multitable @columnfractions .33 .33 .33
@@ -186,9 +189,9 @@ context, to the value @emph{value}.
 
 The @emph{context} can be omitted (and usually is) when the 
 required context is unambiguously implied and is one of lowest
-level contexts, i.e., @code{Voice} or @code{Lyrics}, and we shall
-omit it in the following examples.  Later we shall see when it 
-must be specified.
+level contexts, i.e., @code{Voice}, @code{ChordNames} or 
+@code{Lyrics}, and we shall omit it in many of the following 
+examples.  We shall see later when it must be specified.
 
 For now, don't worry about the @code{#'}, which must precede the
 layout property, and the @code{#}, which must precede the value.
@@ -208,7 +211,9 @@ commands have been issued.
 \revert @emph{context}.@emph{layout_object} #'@emph{layout_property}
 @end example
 
-Again, the @emph{context} will be omitted for now.
+Again, just like @emph{context} in the @code{\override} command,
+@emph{context} is often not needed.  It will be omitted 
+in many of the following examples.
 
 There is another form of the override command, 
 @code{\overrideProperty}, which is occasionally required.  
@@ -290,7 +295,7 @@ belonging to a slur which controls the heaviness?}  To answer
 this we must look in the Internals Reference, or IR for short.
 
 The IR for the version of LilyPond you are using may be found
-on the LilyPond website at http://lilypond.org.  Go to the
+on the LilyPond website at @uref{http://lilypond.org}.  Go to the
 documentation page and click on the Internals Reference link.
 For learning purposes you should use the standard html version,
 not the @q{one big page} or the PDF.  For the next few
@@ -379,7 +384,10 @@ essentials required to make up your own -- but you will
 still need some practice.  This is provided in the examples
 which follow.
 
-But first, what if we had needed to specifiy the Context?  
+@subheading Finding the context
+@cindex context, finding
+
+But first, what if we had needed to specify the Context?  
 What should it be?  We could guess that slurs are in
 the Voice context, as they are clearly closely associated
 with individual lines of music, but can we be sure?  To
@@ -395,7 +403,7 @@ lowest level contexts which is implied unambiguously by
 the fact that we are entering notes, we can omit it in this 
 location.
 
-@heading Overriding once only
+@subheading Overriding once only
 
 @cindex overriding once only
 @cindex once override
@@ -406,8 +414,9 @@ final example above.  But what if we
 wanted just the first slur to be thicker?  This is achieved
 with the @code{\once} command.  Placed immediately before
 the @code{\override} command it causes it to change only the
-slur on the @strong{immediately following} note.  If the
-immediately following note does not have a slur the command
+slur which begins on the @strong{immediately following} note.
+If the
+immediately following note does not begin a slur the command
 has no effect at all -- it is not remembered until a slur
 is encountered, it is simply discarded.  So the command with
 @code{\once} must be 
@@ -433,7 +442,11 @@ repositioned as follows:
 @noindent
 Now only the first slur is made heavier.
  
-@heading Reverting
+@subheading Reverting
+
+@cindex revert
+@cindex default properties, reverting
+@funindex \revert
 
 Finally, what if we wanted just the first two slurs to be
 heavier?  Well, we could use two commands, each preceded by
@@ -497,7 +510,7 @@ That concludes our introduction to the IR, and the basic
 method of tweaking.  Several examples follow in the later
 sections of this Chapter, partly to introduce you to some of the
 additional features of the IR, and partly to give you more 
-practice in extracting information from it.  These example will
+practice in extracting information from it.  These examples will
 contain progressively fewer words of guidance and explanation. 
 
 @node Properties found in interfaces
@@ -507,9 +520,9 @@ contain progressively fewer words of guidance and explanation.
 @cindex properties in interfaces
 
 Suppose now that we wish to print the lyrics in italics.  What
-@code{\override} command do we need to do this?
+form of @code{\override} command do we need to do this?
 We first look in the IR page listing @q{All layout objects}, as
-before, and look for an object that might print lyrics.  We
+before, and look for an object that might control lyrics.  We
 find @code{LyricText}, which looks right.  Clicking on this shows
 the settable properties for lyric text.  These include the 
 @code{font-series} and @code{font-size}, but nothing that might
@@ -551,20 +564,20 @@ properties diferently when they are created.
 
 Let's see if we can now construct the @code{\override} command
 to change the lyrics to italics.  The object is @code{LyricText},
-the property is @code{'font-shape} and the value is 
-@code{'italic}.  As before, we'll omit the context.
+the property is @code{font-shape} and the value is 
+@code{italic}.  As before, we'll omit the context.
 
 As an aside, although it is an important one, note that because 
 the values of
-@code{'font-shape} are symbols they must be introduced with a
+@code{font-shape} are symbols they must be introduced with a
 single apostrophe, @code{'}.  That is why apostrophes
-are needed before @code{'thickness} in the earlier example
-and @code{'font-shape}.  These are both symbols too.  
+are needed before @code{thickness} in the earlier example
+and @code{font-shape}.  These are both symbols too.  
 Symbols are special names which are known internally to 
 LilyPond.  Some of them are the names of properties,
-like @code{'thickness} or @code{'font-shape}, others are in
+like @code{thickness} or @code{font-shape}, others are in
 effect special values that can be given to properties, like
-@code{'italic}.  Note the distinction from arbitary
+@code{italic}.  Note the distinction from arbitary
 text strings, which would appear as @code{"a text string"}.
 
 Ok, so the @code{\override} command we need to print the lyrics
@@ -596,6 +609,9 @@ lyrics which it should affect, like this:
 @noindent
 and the lyrics are all printed in italics.
 
+@subheading Specifying context in lyric mode
+@cindex context, specifying in lyric mode
+
 In the case of lyrics, if you try specifying the context in the 
 format given earlier the command will fail.  A syllable
 entered in lyricmode is terminated by either a space,
@@ -642,41 +658,45 @@ to the front of these values when they are entered in the
   @tab @code{#t}, @code{#f}
 @item Dimension (in staff space)
   @tab A positive decimal number (in units of staff space)
-  @tab 2.5, 0.34
+  @tab @code{2.5}, @code{0.34}
 @item Direction
   @tab A valid direction constant or its numerical equivalent
-  @tab @code{#LEFT}, @code{#CENTER}, @code{#UP}, 1, -1
+  @tab @code{#LEFT}, @code{#CENTER}, @code{#UP}, 
+       @code{1}, @code{-1}
 @item Integer
   @tab A positive whole number
-  @tab 3, 1
+  @tab @code{3}, @code{1}
 @item List
   @tab A bracketed set of items separated by spaces,
 preceded by an apostrophe
-  @tab '(left-edge staff-bar), '(1), '(1.0 0.25 0.5)
+  @tab @code{'(left-edge staff-bar)}, @code{'(1)}, 
+       @code{'(1.0 0.25 0.5)}
 @item Markup
   @tab Any valid markup
   @tab @code{\markup @{ \italic "cresc." @}}
 @item Moment
   @tab A fraction of a whole note constructed with the 
 make-moment function
-  @tab @code{(ly:make-moment 1 4)}, @code{(ly:make-moment 3 8)}
+  @tab @code{(ly:make-moment 1 4)}, 
+       @code{(ly:make-moment 3 8)}
 @item Number
   @tab Any positive or negative decimal value
-  @tab 3.5, -2.45
+  @tab @code{3.5}, @code{-2.45}
 @item Pair (of numbers)
   @tab Two numbers separated by a @q{space . space} and enclosed
 in brackets preceded by an apostrophe
-  @tab '(2 . 3.5), '(0.1 . -3.2)
+  @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
 @item Symbol
   @tab Any of the set of permitted symbols for that property,
 preceded by an apostrophe
   @tab @code{'italic}, @code{'inside}
 @item Unknown
-  @tab A procedure or #f (to cause no action)
-  @tab @code{bend::print}, @code{ly:text-interface::print}, #f
+  @tab A procedure or @code{#f} (to cause no action)
+  @tab @code{bend::print}, @code{ly:text-interface::print}, 
+       @code{#f}
 @item Vector
   @tab A list of three items enclosed in brackets and preceded
-by a hash, @code{#}, sign
+by a hash sign, @code{#}.
   @tab @code{#(#t #t #f)} 
 @end multitable
 
@@ -696,10 +716,11 @@ appearance of the printed music.
 @subsection Visibility and color of objects
 
 In the educational use of music we might wish to print a score
-with certain elements omitted as an exercise where the student is
-required to fill in the missing elements.  As a simple example,
-let use suppose the exercise is to supply the missing barlines 
-in a piece of music.  How do we prevent the barlines printing?
+with certain elements omitted as an exercise for the student,
+who is required to supply them.  As a simple example,
+let us suppose the exercise is to supply the missing barlines 
+in a piece of music.  But the barlines are normally inserted
+automatically.  How do we prevent them printing?
 
 As before, we go to the IR to find the layout object which prints
 barlines.  Going via @emph{Backend} and @emph{All layout objects}
@@ -713,10 +734,11 @@ of these can affect the visibility of barlines (and, of course,
 by extension, many other layout objects too.)  Let's consider
 each of these in turn.
 
-@heading stencil
-@cindex stencil
+@subheading stencil
+@cindex stencil property
 
-This property controls the appearance of the barlines.  In common
+This property controls the appearance of the barlines by specifying
+the symbol (glyph) which should be printed.  In common
 with many other properties, it can be set to print nothing by 
 setting its value to @code{#f}.  Let's try it, as before, omitting
 the implied Context, @code{Voice}:
@@ -757,12 +779,13 @@ file.  Let's try correcting it by adding the correct context:
 
 Now the barlines have vanished.
 
-@heading break-visibility
+@subheading break-visibility
 
-@cindex break-visibility
+@cindex break-visibility property
 
-We see from the BarLine properties in the IR that the 
-break-visibility property requires a vector of three booleans.
+We see from the @code{BarLine} properties in the IR that the 
+@code{break-visibility} property requires a vector of three 
+booleans.
 These control respectively whether barlines are printed at
 the end of a line, in the middle of lines, and at the beginning
 of lines.  For our example we want all barlines to be suppressed,
@@ -771,8 +794,8 @@ Let's try that, remembering
 to include the @code{Staff} context.  Note also that in writing
 this value we have two hash signs before the opening bracket.
 One is required as part of the value to introduce a vector, 
-and one is required, as always, to precede the value in the
-@code{\override} command.
+and one is required, as always, to precede the value itself in 
+the @code{\override} command.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 {
@@ -786,8 +809,8 @@ and one is required, as always, to precede the value in the
 
 And we see this too removes all the barlines.
 
-@heading transparent
-@cindex transparent
+@subheading transparent
+@cindex transparent property
 
 We see from the properties specified in the @code{grob-interface}
 page in the IR that the @code{transparent} property is a boolean.
@@ -816,8 +839,11 @@ transparent is:
 
 @noindent
 The time signature is gone, but this command leaves a gap where 
-the time signature should be.  If this is not wanted the stencil
-for the time signature should be set to @code{#f} instead:
+the time signature should be.  Maybe this is what is wanted for
+an exercise for the student to fill it in, but in other 
+circumstances a gap might be undesirable.  To remove it, the 
+stencil for the time signature should be set to @code{#f} 
+instead:
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 {
@@ -834,8 +860,8 @@ and the difference is obvious: setting the stencil to @code{#f}
 removes the object entirely; making the object @code{transparent}
 leaves it where it is, but makes it invisible.
 
-@heading color
-@cindex color
+@subheading color
+@cindex color property
 
 Finally we could make the barlines invisible by coloring
 them white.  The @code{grob-interface} specifies that the
@@ -895,7 +921,7 @@ an apostrophe and the two enclosed in brackets.
 @cindex rgb colors
 @cindex color, rgb
 
-There is yet a third function which converts RGB values into
+There is yet a third function, one which converts RGB values into
 internal colors -- the @code{rgb-color} function.  This takes
 three arguments giving the intensities of the red, green and 
 blue colors.  These take values in the range 0 to 1.  So to
@@ -935,14 +961,20 @@ various shades of grey:
 
 @noindent
 Note the contexts associated with each of the layout objects.
+It is important to get these right, or the commands will not
+work!  Remember, the context is the one in which the appropriate
+engraver is placed.  The default context for engravers can be
+found by starting from the layout object, going from there to
+the engraver which produces it, and on the engraver page in the
+IR it tells you in which context the engraver will normally be 
+found.  
 
 
 @node Size of objects
 @subsection Size of objects
 
 Let us begin by looking again at the earlier example 
-FIXME BROKEN LINK
-@c (see @ref{Nesting music expressions}) which showed
+see @ref{Nesting music expressions}) which showed
 how to introduce a new temporary staff, as in an @rglos{ossia}.  
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
@@ -989,7 +1021,7 @@ we simply set the stencil of each to @code{#f}, as follows:
 
 @noindent
 where the extra pair of braces after the @code{\with} clause are
-required to ensure the enclosed overrrides amd music are applied
+required to ensure the enclosed overrrides and music are applied
 to the ossia staff.
 
 But what is the difference between modifying the staff context by 
@@ -1014,10 +1046,10 @@ has been created.  @code{alignAboveContext} and its partner,
 staff has been created its alignment is decided and it would
 make no sense to try to change it later.
 
-The default values of layout object propertiess can also be set
+The default values of layout object properties can also be set
 in @code{\with} clauses.  Simply use the normal @code{\override}
 command leaving out the context name, since this is unambiguously
-defined as the context the @code{\with} clause is modifying.
+defined as the context which the @code{\with} clause is modifying.
 If fact, an error will be generated if a context is specified
 in this location.
 
@@ -1047,12 +1079,13 @@ So we could replace the example above with
 Finally we come to changing the size of layout objects.
 
 Some layout objects are created as glyphs selected from
-a font.  These include noteheads, accidentals, markup, 
+a typeface font.  These include noteheads, accidentals, markup, 
 clefs, time signatures, dynamics and lyrics.  
 Their size is changed by modifying the
-@code{font-size} property, as we shall shortly see.  
-Other layout objects such as slurs, ties, in general, spanner
-objects, are drawn individually, so there is no @code{font-size}
+@code{font-size} property, as we shall shortly see.  Other 
+layout objects such as slurs and ties -- in general, spanner
+objects -- are drawn individually, so there is no 
+@code{font-size}
 associated with them.  These objects generally derive their
 size from the objects to which they are attached, so usually
 there is no need to change their size manually.  Still other 
@@ -1071,14 +1104,15 @@ like
 
 or we can change the size of all fonts by setting a special
 property, @code{fontSize}, using @code{\set}, or by including
-it in a @code{\with} clause (without the @code{\set}.
+it in a @code{\with} clause (but without the @code{\set}).
 
 @example
 \set fontSize = #-2
 @end example
 
-In both examples the font size is reduced by 2 steps, where each
-step reduces or increases the size by 12%.
+Both of these statements would cause the font size to be reduced
+by 2 steps from its previous value, where each
+step reduces or increases the size by approximately 12%.
 
 Let's try it in our ossia example:
 
@@ -1093,7 +1127,7 @@ Let's try it in our ossia example:
         alignAboveContext = "main" 
         \override Clef #'stencil = ##f
         \override TimeSignature #'stencil = ##f
-        % Reduce all font sizes by 24%
+        % Reduce all font sizes by ~24%
         fontSize = #-2
       }
         { f8 f c }
@@ -1108,6 +1142,11 @@ smaller, but the stems are too long in proportion and the
 staff lines are spaced too widely apart.  These need to be
 scaled down in proportion to the font reduction.
 
+@cindex magstep
+@cindex size, changing
+@cindex stem length, changing
+@cindex staff line spacing, changing
+
 This can be done with the help of a special function called
 @code{magstep} provided for exactly this purpose.  It takes
 one argument, the change in font size (#-2 in the example above)
@@ -1137,29 +1176,299 @@ objects in proportion.  It is used like this:
 @end lilypond
 
 @noindent
-Since the length of stems is always calculated relative to the
+Since the length of stems and many other length-related properties
+are always calculated relative to the
 value of the @code{staff-space} property these are automatically
-scaled down in length too.
+scaled down in length too.  Note that this affects only the
+vertical scale of the ossia -- the horizontal scale is determined 
+by the layout of the main music in order to remain synchronised 
+with it, so it is not affected by any of these changes in size.
+Of course, if the scale of all the main music were changed in this
+way then the horizontal spacing would be affected.  This is 
+discussed later in the layout section.
 
 This, then, completes the creation of an ossia.  The sizes of all
 other objects may be modified in analogous ways.
 
+@node Placement of objects
+@section Placement of objects
 
-... to be continued
+@menu
+* Automatic behaviour::         
+* Within-staff objects::        
+* Outside staff objects::       
+@end menu
 
 
-@c Old stuff follows  -td
+@node Automatic behaviour
+@subsection Automatic behaviour
+
+There are some objects in musical notation that belong to
+the staff and there are other objects that should be 
+placed outside the staff.  These are called within-staff
+objects and outside-staff objects respectively.
+
+Within-staff objects are those that are located on the staff
+-- note heads, stems, accidentals, etc.  The positions of
+these are usually fixed by the music itself -- they are
+vertically positioned on specific lines of the staff or are 
+tied to other objects that are so positioned.  Collisions of
+noteheads, stems and accidentals in closely set chords are
+normally avoided automatically.  There are commands and
+overrides which can modify this automatic behaviour, as we
+shall shortly see.
+
+Objects belonging outside the staff include things 
+such as rehearsal marks, text and dynamic markings. 
+LilyPond’s rule for the 
+vertical placement of outside-staff objects is to place them as 
+close to the staff as possible but not so close that they 
+collide with any other object.  LilyPond uses the 
+@code{outside-staff-priority} property to determine the order 
+in which the objects should be placed, as follows.
+
+First, LilyPond places all the within-staff objects.
+Then it sorts the outside-staff objects according to their 
+@code{outside-staff-priority}.  The outside-staff objects are
+taken one by one, beginning with the object with the lowest
+@code{outside-staff-priority}, and placed so that they do not 
+collide with any objects that have already been placed. That is, 
+if two outside-staff grobs are competing for the same space, the 
+one with the lower @code{outside-staff-priority} will be placed 
+closer to the staff.  If two objects have the same
+@code{outside-staff-priority} the one encountered first will be
+placed closer to the staff.
+
+In the following example all the markup texts have the same 
+priority (since it is not explicity set).  Note that @q{Text3}
+is automatically positioned close to the staff again, nestling
+under @q{Text2}.
 
-@node Common tweaks
-@section Common tweaks
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+c2^"Text1"
+c^"Text2"
+c^"Text3"
+c^"Text4"
+@end lilypond
+
+Staves are also positioned, by default, as closely together as
+possible (subject to a minimum separation).  If notes project
+a long way towards an adjacent staff they will force the
+staves further apart only if an overlap of the notation
+would otherwise occur.  The following example demonstrates
+this @q{nestling} of the notes on adjacent staves:
+
+@lilypond[quote,ragged-right,verbatim]
+<<
+  \new Staff {
+    \relative c' { c a, }
+  }
+  \new Staff {
+    \relative c'''' { c a, }
+  }
+>>
+@end lilypond 
 
-blah blah
+
+
+@node Within-staff objects
+@subsection Within-staff objects
+
+We have already seen how the commands @code{\voiceXXX} affect
+the direction of slurs, ties, fingering and 
+everything else which depends on the direction of the stems.
+These commands are essential when writing polyphonic music to
+permit the interweaving melodic lines to be distinguished.
+But occasionally it may be necessary to override this automatic
+behaviour.  This can be done for whole sections of music or even
+for an individual note.  The property which control this
+behaviour is the @code{direction} property of each layout object.
+We first explain what this does, and then introduce a number of
+ready-made commands which avoid your having to code explicit
+overrides for the more common modifications.
+
+Some layout objects like slurs and ties curve, bend or point 
+either up or down; others like stems and flags also move to
+right or left when they point up or down.  This is controlled
+automatically when @code{direction} is set.
+
+The following example shows first the default behaviour of stems,
+with those on high notes pointing down and those on low notes
+pointing up, followed by four notes with all stems forced down, 
+four notes with all stems forced up, and finally four notes
+reverted back to the default behaviour.
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+a4 g c a
+\override Stem #'direction = #DOWN
+a g c a
+\override Stem #'direction = #UP
+a g c a
+\revert Stem #'direction
+a g c a
+@end lilypond
+
+Here we use the constants @code{DOWN} and @code{UP}.
+These have the values @code{-1} and @code{+1} respectively, and
+these numerical values may be used instead.  The value @code{0}
+may also be used in some cases.  It is simply treated as meaning
+@code{UP} for stems, but for some objects it means @q{center}.
+There is a constant, @code{CENTER} which has the value @code{0}.
+
+However, these explicit overrides are not usually used, as there
+are simpler equivalent predefined commands available.  
+Here is a table of the commonest.  The meaning of each is stated
+where it is not obvious.
+
+@c TODO put @code{} round all these
+
+@multitable @columnfractions .2 .2 .2 .4
+@headitem Down/Left           
+  @tab Up/Right
+  @tab Revert
+  @tab Effect 
+@item \arpeggioDown
+  @tab \arpeggioUp
+  @tab \arpeggioNeutral
+  @tab Arrow is at bottom, at top, or no arrow
+@item \dotsDown
+  @tab \dotsUp
+  @tab \dotsNeutral
+  @tab Direction of movement to avoid staff lines
+@item \dynamicDown
+  @tab \dynamicUp
+  @tab \dynamicNeutral
+  @tab
+@item \phrasingSlurDown
+  @tab \phrasingSlurUp
+  @tab \phrasingSlurNeutral
+  @tab Note: distinct from slur commands
+@item \slurDown     
+  @tab \slurUp
+  @tab \slurNeutral
+  @tab
+@item \stemDown
+  @tab \stemUp
+  @tab \stemNeutral
+  @tab
+@item \textSpannerDown
+  @tab \textSpannerUp
+  @tab \textSpannerNeutral
+  @tab Text entered as spanner is below/above staff
+@item \tieDown
+  @tab \tieUp
+  @tab \tieNeutral
+  @tab
+@item \tupletDown
+  @tab \tupletUp
+  @tab \tupletNeutral
+  @tab Tuplets below or above notes
+@end multitable
+
+Note that these predefined commands may @strong{not} be 
+preceded by @code{\once}.  If you wish to limit the
+effect to a single note you must either use the equivalent
+@code{\once \override} command or use the predefined command
+followed after the affected note by the corresponding 
+@code{\neutralXXX} command.
+
+@subheading Fingering
+@cindex fingering, placement
+
+The placement of fingering is also affected by the value
+of its @code{direction} property, but there are special
+commands which allow the fingering of individual notes
+of chords to be controlled, with the fingering being placed
+above, below, to the left or to the right of each note.
+
+First, here's the effect of @code{direction} on fingering,
+the first bar shows the default, then the effect of specifying
+@code{DOWN} and @code{UP}:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+c-5 a-3 f-1 c'-5
+\override Fingering #'direction = #DOWN
+c-5 a-3 f-1 c'-5
+\override Fingering #'direction = #UP
+c-5 a-3 f-1 c'-5
+@end lilypond
+
+This may be suitable for single notes, but the @code{direction}
+property is ignored for chords.  Instead, by default, the
+fingering is placed both above and below the notes of a chord,
+as shown:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+<c-5 g-3>
+<c-5 g-3 e-2>
+<c-5 g-3 e-2 c-1>
+@end lilypond
+
+Greater control over the placement of fingering of the 
+individual notes in a chord is possible by using
+the @code{\set fingeringOrientations} command.  The format of
+this command is
+
+@example
+@code{\set fingeringOrientations = #'([up] [left/right] [down])}
+@end example
+
+@noindent
+@code{\set} is used because @code{fingeringOrientations} is a
+property of the @code{Voice} context, created and used by the
+@code{New_fingering_engraver}.
+
+The property may be set to a list of one to three values.
+It controls whether fingerings may be placed above (if 
+@code{up} appears in the list), below (if @code{down} appears), 
+to the left (if @code{left} appears, or to the right 
+(if @code{right} appears).  Conversely, if a location is not
+listed, no fingering is placed there.  LilyPond takes these 
+contraints and works out the best placement for the fingering
+for the notes of the following chords.  Note that @code{left} and
+@code{right} are mutually exclusive -- fingering may be placed
+only on one side or the other, not both.
+
+To control the placement of the fingering of a single note 
+using this command it is necessary to write it as a single 
+note chord by placing angle brackets round it.
+  
+Here are a few examples:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+\set fingeringOrientations = #'(left)
+<f-2>
+< c-1  e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(left)
+<f-2>
+< c-1  e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(up left down)
+<f-2>
+< c-1  e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(up left)
+<f-2>
+< c-1  e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(right)
+<f-2>
+< c-1  e-2 g-3 b-5 > 4
+
+@end lilypond 
+
+@node Outside staff objects
+@subsection Outside staff objects
+
+TODO  - dynamics, markup
+      - Priority
+      - \fatText
+
+
+
+@node Collisions of objects
+@section Collisions of objects
 
 @menu
 * Moving objects::              
 * Fixing overlapping notation::  
-* Other common tweaks::         
-* Fitting music onto fewer pages::  
 @end menu
 
 @node Moving objects
@@ -1289,10 +1598,6 @@ c4^"piu mosso" d e f
 c4^"piu mosso" d e f
 @end lilypond
 
-@seealso
-
-This manual: @ruser{The \override command}, @ref{Common tweaks}.
-
 
 @node Fixing overlapping notation
 @subsection Fixing overlapping notation
@@ -1336,25 +1641,37 @@ common objects.
 @item Rehearsal / Text marks    @tab @code{RehearsalMark}
 @end multitable
 
+Ways of correcting horizontal placings are described fully 
+in the Notation Reference.  
+We introduce just one here, the @code{force-hshift} property of 
+@code{NoteColumn}.  The lower two notes of the first chord (i.e,
+those in the third voice) should not be shifted away from the
+note column of the higher two notes.  To correct this we set
+@code{force-hshift} of these notes to zero.  
+The lower note of the second chord is best placed just to the 
+right of the higher notes.  We achieve this by setting
+@code{force-hshift} of this note to 0.5, ie half a notehead's 
+width to the right of the note column of the higher notes.
 
-@node Other common tweaks
-@subsection Other common tweaks
-
-Some overrides are so common that predefined commands are provided as
-short-cuts, such as @code{\slurUp} and @code{\stemDown}.  These
-commands are described in the Notation Reference under the appropriate
-sections.
-
-The complete list of modifications available for each type of
-object (like slurs or beams) are documented in the Program
-Reference.  However, many layout objects share properties which can be
-used to apply generic tweaks.
-
-@itemize
+Here's the final result:
+    
+@lilypond[quote,verbatim,fragment,ragged-right]
+\new Staff \relative c'' {
+  \key aes \major
+  << 
+    { c2 aes4. bes8 } \\ 
+    { aes2 f4 fes   } \\ 
+    { \voiceFour
+      \once \override NoteColumn #'force-hshift = #0 <ees c>2
+      \once \override NoteColumn #'force-hshift = #0.5 des2 
+    }
+  >> |
+  <c ees aes c>1 |
+}
+@end lilypond
 
 @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
@@ -1385,7 +1702,6 @@ is handled in the @code{Score} context, property changes in the
 
 @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
@@ -1405,67 +1721,14 @@ f-5
 f-5
 @end lilypond
 
-@item
-Setting the @code{transparent} property will cause an object to be printed
-in @q{invisible ink}: the object is not printed, but all its other
-behavior is retained.  The object still takes up space, it takes part in
-collisions, and slurs, ties, and beams can be attached to it.
-
-@cindex transparent objects
-@cindex removing objects
-@cindex hiding objects
-@cindex invisible objects
-The following example demonstrates how to connect different voices
-using ties.  Normally, ties only connect two notes in the same
-voice.  By introducing a tie in a different voice,
-
-@lilypond[quote,fragment,relative=2]
-<< {
-  b8~ b8\noBeam
-} \\ {
-  b[ g8]
-} >>
-@end lilypond
-
-@noindent
-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
-  b8~ b8\noBeam
-} \\ {
-  b[ g8]
-} >>
-@end lilypond
-
-To make sure that the just-blanked stem doesn't squeeze the tie too much,
-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
-@cindex Distances
 
-Distances in LilyPond are measured in staff-spaces, while most
-thickness properties are measured in line-thickness.  Some
-properties are different; for example, the thickness of beams
-are measured in staff-spaces.  For more information, see the
-relevant portion of the program reference.
+@node Page layout
+@section Page layout
 
+@menu
+* Fitting music onto fewer pages::  
+@end menu
 
 @node Fitting music onto fewer pages
 @subsection Fitting music onto fewer pages
@@ -1554,6 +1817,101 @@ Alter the horizontal spacing via @code{SpacingSpanner}.  See
 @end itemize
 
 
+
+
+
+@c Old stuff follows  -td
+
+@node Common tweaks
+@section Common tweaks
+
+blah blah
+
+@menu
+* Other common tweaks::         
+@end menu
+
+
+
+@node Other common tweaks
+@subsection Other common tweaks
+
+Some overrides are so common that predefined commands are provided as
+short-cuts, such as @code{\slurUp} and @code{\stemDown}.  These
+commands are described in the Notation Reference under the appropriate
+sections.
+
+The complete list of modifications available for each type of
+object (like slurs or beams) are documented in the Program
+Reference.  However, many layout objects share properties which can be
+used to apply generic tweaks.
+
+@itemize
+
+
+@item
+Setting the @code{transparent} property will cause an object to be printed
+in @q{invisible ink}: the object is not printed, but all its other
+behavior is retained.  The object still takes up space, it takes part in
+collisions, and slurs, ties, and beams can be attached to it.
+
+@cindex transparent objects
+@cindex removing objects
+@cindex hiding objects
+@cindex invisible objects
+The following example demonstrates how to connect different voices
+using ties.  Normally, ties only connect two notes in the same
+voice.  By introducing a tie in a different voice,
+
+@lilypond[quote,fragment,relative=2]
+<< {
+  b8~ b8\noBeam
+} \\ {
+  b[ g8]
+} >>
+@end lilypond
+
+@noindent
+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
+  b8~ b8\noBeam
+} \\ {
+  b[ g8]
+} >>
+@end lilypond
+
+To make sure that the just-blanked stem doesn't squeeze the tie too much,
+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
+@cindex Distances
+
+Distances in LilyPond are measured in staff-spaces, while most
+thickness properties are measured in line-thickness.  Some
+properties are different; for example, the thickness of beams
+are measured in staff-spaces.  For more information, see the
+relevant portion of the program reference.
+
+
+
 @node TODO other name
 @section TODO other name
 
@@ -1718,39 +2076,6 @@ FIXME discuss \tweak
 
 
 
-FIXME: Move the following words and example into Tweaks or
-somewhere more suitable, leaving just a ref here. -td
-
-Ways of correcting horizontal placings are described fully 
-in the Notation Reference.  
-We introduce just one here, the @code{force-hshift} property of 
-@code{NoteColumn}.  The lower two notes of the first chord (i.e,
-those in the third voice) should not be shifted away from the
-note column of the higher two notes.  To correct this we set
-@code{force-hshift} of these notes to zero.  
-The lower note of the second chord is best placed just to the 
-right of the higher notes.  We achieve this by setting
-@code{force-hshift} of this note to 0.5, ie half a notehead's 
-width to the right of the note column of the higher notes.
-
-Here's the final result:
-    
-@lilypond[quote,verbatim,fragment,ragged-right]
-\new Staff \relative c'' {
-  \key aes \major
-  << 
-    { c2 aes4. bes8 } \\ 
-    { aes2 f4 fes   } \\ 
-    { \voiceFour
-      \once \override NoteColumn #'force-hshift = #0 <ees c>2
-      \once \override NoteColumn #'force-hshift = #0.5 des2 
-    }
-  >> |
-  <c ees aes c>1 |
-}
-@end lilypond
-
-
 
 
 FIXME:
@@ -1762,28 +2087,5 @@ properties with hyphenated names, like auto-knee-gap.  (I had to
 experiment to find out how to do this.)
 
 
-FIXME: moved from fundamental, dumped here at random.
-
-@lilypond[verbatim,quote,ragged-right]
-\new Staff = "main" {
-  \relative g' {
-    r4 g8 g c4 c8 d |
-    e4
-    <<  % Start main and ossia in parallel
-      { r8 f c c }  % Main music
-      \new Staff \with {  % Start ossia staff
-        \remove "Clef_engraver"
-        \remove "Time_signature_engraver"
-        % Reduce size of notes and staff
-        fontSize = #-2
-        \override StaffSymbol #'staff-space = #(magstep -2)
-        alignAboveContext = "main"  % Place above main staff
-      }
-      { s8 f f c }  % Ossia music
-    >>  % End parallel music
-    r4 |
-  }
-}
-@end lilypond