lilypond-learning: Automatic behavior

 
 4.4.1 Automatic behavior
 ------------------------
 
 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 note heads, stems and accidentals in closely set chords
 are normally avoided automatically.  There are commands and overrides
 which can modify this automatic behavior, 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 ‘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 ‘outside-staff-priority’.
 The outside-staff objects are taken one by one, beginning with the
 object with the lowest ‘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 ‘outside-staff-priority’ will be placed closer to the
 staff.  If two objects have the same ‘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 explicitly set).  Note that ‘Text3’ is automatically
 positioned close to the staff again, nestling under ‘Text2’.
 
      c2^"Text1"
      c2^"Text2" |
      c2^"Text3"
      c2^"Text4" |
      [image src="" alt="[image of music]" text="image of music"]
 
    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 ‘nestling’ of the notes on adjacent staves:
 
      <<
        \new Staff {
          \relative c' { c4 a, }
        }
        \new Staff {
          \relative c'''' { c4 a, }
        }
      >>
      [image src="" alt="[image of music]" text="image of music"]