]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/refman.itely
release: 1.3.92
[lilypond.git] / Documentation / user / refman.itely
index 8cf1e2450fc1389c363fb63822a73715e0a267c9..3cbf3e94eb2d842e12aa7edb9b765cd3ce184503 100644 (file)
@@ -1,44 +1,50 @@
-
-@node Reference Manual
-@chapter Reference Manual
-
-
+@c TODO: 
+@c - Reinsert subsection commands that were lost in the
+@c   ancient conversion from YODL!  /MB
+@c - Restructure! Separate internal commands from user level commands. /MB
+@c - Add some words about Guile.  /MB
+@c - Fix indexing (keyindex) so it doesn't add line breaks  /MB
+
+@node Reference Manual, ,  , Top
 @menu
-* Overview::                   Overview
-* Top level::                  Top level
-* notenames::                  
-* Lexical conventions::                Lexical conventions
-* Other languages::            
-* modes::                      
-* Types::                      Types
-* Music expressions::          Music expressions
-* Atomic music expressions::   Atomic music expressions
-* Note specification::         
-* barlines::                   
-* Manual beams::               
-* stem tremolo::               
-* Compound music expressions:: Compound music expressions
-* relative::                   
-* Repeats::                    
-* transpose::                  
-* Ambiguities::                        Ambiguities
-* Notation conversion specifics::  
-* autobeam::                   
-* lyricprint::                 
-* Notation Contexts::          Notation Contexts
-* Properties::                 
-* Notation output definitions::         Notation output definitions
-* paper::                      
-* Paper variables::            
-* contextdefs::                        
-* engravers::                  
-* Sound output::               Sound output
-* midilist::                   
+* Overview::                      Overview
+* Top level::                     Top level
+* notenames::                     notenames
+* Lexical conventions::           Lexical conventions
+* Other languages::                      notelang
+* modes::                         modes
+* Types::                         Types
+* Music expressions::             Music expressions
+* Atomic music expressions::      Atomic music expressions
+* Note specification::                      notedesc
+* barlines::                      barlines
+* Manual beams::                  Manual beam
+* stem tremolo::                       tremolo
+* Compound music expressions::    Compound music expressions
+* relative::                      relative
+* Repeats::                      Repeats       
+* transpose::                     transpose
+* Ambiguities::                   Ambiguities
+* Notation conversion specifics:: Notation conversion specifics
+* autobeam::                      autobeam
+* lyricprint::                    lyricprint
+* Notation Contexts::             Notation Contexts
+* Properties::                    Changing formatting
+* Notation output definitions::   Notation output definitions
+* paper::                         paper
+* Paper variables::                     papervars
+* contextdefs::                   contextdefs
+* engravers::                     engravers
+* Sound output::                  Sound output
+* midilist::                      midilist
+* Pre-defined Identifiers::       Pre-defined Identifiers
 @end menu
 
+@chapter Reference Manual
+
 
 
-@node Overview
+@node Overview, , , Reference Manual
 @section Overview
 
 This document@footnote{This document has been revised for
@@ -64,7 +70,7 @@ typesetting and from a performance point of view.
 
 
 
-@node Top level
+@node Top level, , , Reference Manual
 @section Top level
 
 @cindex top level
@@ -95,7 +101,7 @@ The syntax is
 
 @example
   \header @{ @var{key1} = @var{val1};
-                        @var{key2} = @var{val2}; @dots{} @}
+             @var{key2} = @var{val2}; @dots{} @}
 @end example
 
 A header describes the file's contents.  It can also appear in a
@@ -107,8 +113,7 @@ metre, arranger, piece and tagline.
 It is customary to put the @code{\header} at the top of the file.
 
 
-@node notenames
-@section notenames
+@node notenames, , ,  Reference Manual
 
 Note name tables can be specified using
 
@@ -154,7 +159,7 @@ forbidden after top level assignments.
 
 
 
-@node Lexical conventions
+@node Lexical conventions, , ,  Reference Manual
 @section Lexical conventions
 
 @cindex lexical conventions
@@ -305,8 +310,7 @@ This is used to detect invalid input, and to aid
 
 @cindex other languages
 
-@node Other languages
-@section Other languages
+@node Other languages, , ,  Reference Manual
 
 Note name definitions have been provided in various languages. 
 Simply include the language specific init file.  For example:
@@ -320,8 +324,8 @@ english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat
 deutsch.ly     c   d   e   f   g   a   b   h   -is         -es
 norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es
 svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess
-italiano.ly    do  re  mi  fa  sol la  sid si  -d          -b
-catalan.ly     do  re  mi  fa  sol la  sid si  -d/-s       -b 
+italiano.ly    do  re  mi  fa  sol la  sib si  -d          -b
+catalan.ly     do  re  mi  fa  sol la  sib si  -d/-s       -b 
 @end example 
 
 Pitch names can be redefined using the
@@ -334,8 +338,7 @@ subsection XREF-notenames [FIXME].
 
 @cindex modes
 
-@node modes
-@section modes
+@node modes, , ,  Reference Manual
 
 To simplify entering notes, lyrics, and chords, @emph{Mudela} has three
 special input modes on top of the default mode.  In each mode, words
@@ -345,7 +348,7 @@ a keyword or as an identifier.  The behavior of the modes differs in
 two ways: Different modes treat unquoted words differently, and
 different modes have different rules for deciding what is a word.
 
-@table @code
+@table @samp
   @item Normal mode.
 @cindex mode!normal
  
@@ -403,8 +406,8 @@ different modes have different rules for deciding what is a word.
     is that a word can end with `@code{@}}', which may be confusing if
     you thought the closing brace was going to terminate Lyrics
     mode.@footnote{LilyPond will issue a warning, though.}  Any
-    `@code{_}' characters which appear in an unquoted word are
-    converted to spaces.  This provides a mechanism for introducing
+    `@code{_}' character which appears in an unquoted word is
+    converted to a space.  This provides a mechanism for introducing
     spaces into words without using quotes.  Quoted words can also be
     used in Lyrics mode to specify words that cannot be written with
     the above rules.  Here are some examples.  Not all of these words
@@ -432,7 +435,7 @@ versions, thus the use of the dollar sign is discouraged.}
 
 
 
-@node Types
+@node Types, , ,  Reference Manual
 @section Types
 
 @cindex types and identifiers
@@ -499,7 +502,7 @@ reference to the first identifier useless.}
 
 
 
-@node Music expressions
+@node Music expressions, , ,  Reference Manual
 @section Music expressions
 
 @cindex music expressions
@@ -527,7 +530,7 @@ discussed in subsection XREF-compoundmusic [FIXME].
 
 
 
-@node Atomic music expressions
+@node Atomic music expressions, , ,  Reference Manual
 @section Atomic music expressions
 
 
@@ -569,8 +572,7 @@ In Note, Chord, and Lyrics mode, durations may be designated by
 numbers and dots.  See Section XREF-notelang [FIXME] for details.
 
 
-@node Note specification
-@section Note specification
+@node Note specification, , ,  Reference Manual
 
 @cindex note specification
 
@@ -694,14 +696,13 @@ r1 r2 r4 r8 r16 r32 r64 r64
     r1 r2 r4 r8 r16 r32 r64 r64 
   }
   \paper {
-    loose_column_distance = 2.5 * \interline;
+    loose_column_distance = 2.5 * \staffspace;
     linewidth = -1.0;
     \translator {
-      \type "Score_engraver";
-      \name "Score";
-      \consists "Rest_engraver";
-      \consists "Stem_engraver";
-      \consists "Rhythmic_column_engraver";
+       \StaffContext
+       \remove "Clef_engraver";
+       \remove "Staff_symbol_engraver";
+       \remove "Bar_engraver";
     }
   }
 }
@@ -723,11 +724,16 @@ appearance of note heads or rests.
 
 
 Rests are entered like notes, with note name `@code{r}@indexcode{r}',
-or `@code{R}@indexcode{R}'.  There is also a note name `@code{s}@indexcode{s}',
-which produces a space of the specified duration. 
-`@code{R}' is specifically meant for entering parts: the @code{R} rest
-can expand to fill a score with rests, or it can be printed as a
-single multimeasure rest.
+or `@code{R}@indexcode{R}'.  There is also a note name
+`@code{s}@indexcode{s}', which produces a space of the specified
+duration.  `@code{R}' is specifically meant for entering parts: the
+@code{R} rest can expand to fill a score with rests, or it can be
+printed as a single multimeasure rest.
+
+You can control the expansion by setting the property
+@code{Score.skipBars}. If this is set to true, Lily will not expand
+empty measures, and the multimeasure rests automatically adds the
+appropriate number.
 
 
 @cindex lyrics expressions
@@ -850,8 +856,7 @@ Prints a mark over or under (depending on the
 @code{Mark_engraver}@indexcode{Mark_engraver} to either the Score or Staff context for
 this to work.
 
-@node barlines
-@section barlines
+@node barlines, , ,  Reference Manual
 
 @example
   \bar@keyindex{bar} @var{bartype};
@@ -929,7 +934,7 @@ lasting two eighth notes.
 
 @cindex upstep
 
-`@code{|}' is a barcheck.  Whenever a barcheck is encountered during
+`@code{|}' is a bar check.  Whenever a bar check is encountered during
 interpretation, a warning message is issued if it doesn't fall at a
 measure boundary.  This can help you finding errors in the input. 
 The beginning of the measure will be relocated, so this can also
@@ -1015,8 +1020,7 @@ this has the same effect as the space rest `@code{s}'.
 
 @cindex beams
 
-@node Manual beams
-@section Manual beams
+@node Manual beams, , ,  Reference Manual
 
 A beam is specified by surrounding the beamed notes with brackets
 `@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'.  
@@ -1280,8 +1284,7 @@ The slur syntax with parentheses is a shorthand for this.
 
 @cindex tremolo marks
 
-@node stem tremolo
-@section stem tremolo
+@node stem tremolo, , ,  Reference Manual
 
 Tremolo marks can be printed on a single note by adding
 `@code{:}[@var{length}]' after the note.  The length must be at
@@ -1296,7 +1299,7 @@ no last value.
 
 
 
-@node Compound music expressions
+@node Compound music expressions, , ,  Reference Manual
 @section Compound music expressions
 
 @cindex compound music expressions
@@ -1417,8 +1420,7 @@ a Voice context:
 
 @cindex relative pitch specification
 
-@node relative
-@section relative
+@node relative, , , Reference Manual
 
 It is easy to get confused by octave changing marks and accidentally
 putting a pitch in the wrong octave.  A much better way of entering a
@@ -1627,14 +1629,14 @@ example) have a separate time signature within grace notes.  While in
 this score-within-a-score, you can create notes, beams, slurs, etc.
 Unbeamed eighth notes and shorter by default have a slash through the
 stem.  This behavior can be controlled with the
-@code{stemStyle}@indexcode{stemStyle} property.
+@code{flagStyle}@indexcode{flagStyle} property.
 
 @quotation
 
 @mudela[fragment,verbatim]
 \relative c'' {
   \grace c8 c4 \grace { [c16 c16] } c4
-  \grace { \property Grace.stemStyle = "" c16 } c4
+  \grace { \property Grace.flagStyle = "" c16 } c4
 }
 
 @end mudela
@@ -1659,14 +1661,13 @@ error, since there will be no main note to attach the grace notes to.
 
 @cindex repeats
 
-@node Repeats
-@section Repeats
+@node Repeats, , , Reference Manual
 
 In order to specify repeats, use the @code{\repeat}@keyindex{repeat}
 keyword.  Since repeats look and sound differently when played or
 printed, there are a few different variants of repeats.
 
-@table @code
+@table @samp
   @item unfolded  
     Repeated music is fully written (played) out.  Useful for MIDI
     output.
@@ -1779,8 +1780,7 @@ bars will not.
 
 @cindex transposition of pitches
 
-@node transpose
-@section transpose
+@node transpose, , , Reference Manual
 
 A music expression can be transposed with
 @code{\transpose}@keyindex{transpose}.  The syntax is
@@ -1803,10 +1803,10 @@ will print flats.
 @mudela[fragment,verbatim]
 \context Staff {
   \clef "F";
-  { \key e; c d e f }
+  { \key e \major; c d e f }
   \clef "G";
-  \transpose des'' { \key e; c d e f }
-  \transpose cis'' { \key e; c d e f }
+  \transpose des'' { \key e \major; c d e f }
+  \transpose cis'' { \key e \major; c d e f }
 }
 
 @end mudela
@@ -1843,7 +1843,7 @@ notes.
 @mudela[verbatim,fragment]
 \addlyrics
 \transpose c'' {
-  \property Voice.automaticMelismata = "1"
+  \property Voice.automaticMelismata = ##t
   c8 () cis d8. e16 f2
 }
 \context Lyrics \lyrics {
@@ -1876,7 +1876,7 @@ lyrics for @var{musicexpr2}.
 
 
 
-@node Ambiguities
+@node Ambiguities, , ,  Reference Manual
 @section Ambiguities
 
 @cindex ambiguities
@@ -1926,15 +1926,14 @@ foo = -6
 
 
 
-@node Notation conversion specifics
+@node Notation conversion specifics, , ,  Reference Manual
 @section Notation conversion specifics
 
-[todo]
+
 
 @cindex automatic beam generation
 
-@node autobeam
-@section autobeam
+@node autobeam, , ,  Reference Manual
 
 By default, LilyPond will generate beams automatically.  This feature
 can be disabled by setting the @code{Voice.noAutoBeaming}@indexcode{Voice.noAutoBeaming}
@@ -2010,7 +2009,7 @@ If you want inversions to be recognized, you must set the property
 
 @mudela[fragment,verbatim,center]
   <
-    \property Score.chordInversion = 1
+    \property Score.chordInversion = ##t
     \context ChordNameVoice \notes {
       <e'1 g' c''>
     }
@@ -2026,8 +2025,7 @@ If you want inversions to be recognized, you must set the property
 
 @cindex printing!lyrics
 
-@node lyricprint
-@section lyricprint
+@node lyricprint, , ,  Reference Manual
 
 Lyric syllables must be interpreted within a @code{Lyrics} context
 
@@ -2108,7 +2106,7 @@ For example:
 
 
 
-@node Notation Contexts
+@node Notation Contexts, , ,  Reference Manual
 @section Notation Contexts
 
 @cindex notation contexts
@@ -2247,7 +2245,7 @@ as @code{c4}.
 These are the contexts supplied with the package.  They are defined
 in the initialization file @file{ly/engraver.ly}.
 
-@table @code
+@table @samp
   @item @code{Grace}@indexcode{Grace} 
     The context for handling grace notes.  It is instantiated
     automatically when you use @code{\grace}.  Basically, it is an
@@ -2368,677 +2366,9 @@ currently search the source code for calls to @code{get_property}.
 The rest of the section is devoted to an (incomplete) overview of
 available properties.
 
+@mbinclude properties.itely
 
-@node Properties
-@section Properties
-
-Properties are Scheme values, so they have a type.  The type of a
-property is listed in parentheses after the property name.
-
-@macro propertytype{t}
- (\t\)
-@end macro
-
-
-TODO:
-
-
-@table @code
-  @item @code{Generic_property_list}
-    Defines names and types for generic properties. These are properties
-    than can be plugged into the backend directly. See the init file
-    @file{generic-property.scm} for details.  For internal use only.
-
-  @item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent} @propertytype{Interval: a cons of numbers}
-    Hard code the size of the vertical group in context XXX, example
-@example
-\property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
-@end example
-    The value is a cons of real numbers, that measure the extent in
-    staff spaces.
-@end table   
-
-@subsubheading Lyrics properties
-
-@cindex properties!Lyrics
-
-@table @code
-  @item @code{textStyle}@indexcode{textStyle} @propertytype{string}
-    Set the font for lyrics.  The available font choices are
-    @code{roman}, @code{italic}, @code{bold}, @code{large}, @code{Large},
-    @code{typewriter}, and @code{finger}.  The @code{finger} font can
-    only display numbers.  Note also that you must be careful when
-    using @code{\property} in Lyrics mode, because of the way strings
-    are parsed.  Either put quotes around the arguments to
-    @code{\property} or be sure to leave a space on both sides of the
-    dot.
-@end table
-
-@subsubheading Thread properties
-
-@cindex properties!Thread
-
-@table @code
-  @item @code{noteheadStyle}@indexcode{noteheadStyle} @propertytype{string}
-    Selects type of note head.  Choices are @code{cross},
-    @code{diamond}, @code{harmonic}, @code{transparent}, and @code{""}. 
-    They are shown in that order below.
-
-    @mudela[center,verbatim]
-      \score {
-        \notes { 
-          \property Staff.barNonAuto = 1
-          \property Voice.noteHeadStyle = cross 
-          a'
-          \property Voice.noteHeadStyle = diamond
-          a'
-          \property Voice.noteHeadStyle = harmonic
-          a'
-          \property Voice.noteHeadStyle = transparent
-          a' 
-          \property Voice.noteHeadStyle = ""
-          a'
-        }
-        \paper {
-          linewidth = -1.;
-        }
-      }
-    
-@end mudela
-@end table
-
-@subsubheading Grace properties
-
-@cindex properties!Grace
-
-@table @code  
-  @item @code{stemStyle}@indexcode{flagStyle} @propertytype{string}
-    By default set to @code{"grace"} meaning that all unbeamed 
-    notes with flags are typeset with a slash through the flag. 
-    Setting to @code{""} gives standard flags.
-
-@mudela[verbatim]
-c'8 \property Voice.flagStyle = "grace" c'8
-@end mudela
-@end table
-
-
-@subsubheading Voice properties
-
-@cindex properties!Voice
-
-@table @code  
-  @item @code{abbrev}@indexcode{abbrev} @propertytype{integer}
-    Set length for tremolo to be used if no length is explicitly
-    specified. 
-
-  @item @code{articulationScriptPadding}@indexcode{articulationScriptPadding}
-    Determines the extra space added between articulation marks, such
-    as staccato, tenuto, trill, up/down bow or fermata, and the
-    closest staff line or note.
-
-  @item @code{articulationScriptVerticalDirection} @propertytype{direction}
-    @indexcode{articulationScriptVerticalDirection}  
-    Determines the location of articulation marks.  Set to @code{\up}
-    to print marks above the staff; set to @code{\down} to print marks
-    below the staff.  This property does not override explicit
-    directions marked with `@code{^}' or `@code{_}' in the mudela file.
-    
-  @item @code{noAutoBeaming}@indexcode{beamAuto}  @propertytype{boolean}
-    If set to 1 then beams are not generated automatically.
-
-  @item @code{beamAutoEnd}@indexcode{beamAutoEnd}  @propertytype{?}
-    Specifies when automatically generated beams can end.  See
-    section XREF-autobeam [FIXME].
-
-  @item @code{beamAutoBegin}@indexcode{beamAutoBegin}  @propertytype{?}
-    Specifies when automatically generated beams can start.  See
-    section XREF-autobeam [FIXME].
-
-
-[outdated FIXME]
-  @item @code{beamQuantisation}@indexcode{beamQuantisation} @propertytype{symbol}
-    Set to @code{\none} for no quantization.  Set to @code{\normal} to
-    quantize position and slope.  Set to @code{\traditional} to avoid
-    wedges.  These three settings are available via
-    @code{\beamposfree}@keyindex{beamposfree},
-    @code{\beamposnormal}@keyindex{beamposnormal}, and
-    @code{\beampostraditional}@keyindex{beampostraditional}.
-
-  @item @code{beamSlopeDamping}@indexcode{beamSlopeDamping} @propertytype{number}
-    Set to @code{\none} for undamped beams.  Set to @code{\normal} for
-    damped beams.  Set to @code{\infinity} for beams with zero slope. 
-    The identifiers
-    @code{\beamslopeproportional}@keyindex{beamslopeproportional},
-    @code{\beamslopedamped}@keyindex{beamslopedamped}, and
-    @code{\beamslopezero}@keyindex{beamslopezero} each set the
-    corresponding value.
-
-  @item @code{dynamicDirection}@indexcode{dynamicDirection} @propertytype{direction}
-    Determines location of dynamic marks.  Set to @code{\up} to print
-    marks above the staff; set to @code{\down} to print marks below
-    the staff.
-
-  @item @code{dynamicStyle}@indexcode{dynamicStyle} @propertytype{string}
-    Set the text style for dynamics.
-
-  @item @code{fontSize}@indexcode{fontSize} @propertytype{number}
-    Can be used to select smaller font sizes for music.  The normal
-    font size is 0, and the two smaller sizes are -1
-    and -2.
-
-@mudela[verbatim]
-c''16 \property Staff.fontSize = -2 c''16
-@end mudela
-
-   @item @code{forceHorizontalShift}@indexcode{forceHorizontalShift}  
-    Force horizontal shift for collision resolution.  It overrides
-    automatic collision resolution.  The value is the shift amount
-    expressed in @code{note_width}, as set in the paper section.
-
-@item @code{collisionMergeDotted}@indexcode{collisionMergeDotted} @propertytype{boolean}
-
-Merge noteheads in collisions, even if they have a different number of
-dots. This normal notation for polyphonic guitar music.
-
-@mudelafile[verbatim]{force-hshift.ly}
-
-
-[FIXME: this should be moved]
-
-Lilypond always arranges note heads on alternate sides of a stem (that
-is, within a single voice) as necessary to prevent collisions (note head
-overlaps).  For up stems, the upper note of a colliding pair is placed
-on the right side of the stem, the lower on the left. For down stems,
-the algorithm works in reverse.
-  
-Lily also attempts to prevent collisions of note heads in different
-voices. A situation where chords of two or more voices are played
-simultaneously within one staff.
-
-By default, if only two voices (and both have opposite stem directions)
-are in this 'collision group', the notes both are shifted by @code{0.5
-\quartwidth} if there are unisons or seconds between the voices.
-
-If there are more than two voices in a collision group, shifting is
-inactive by default, since in this case, there are multiple chords with
-the same stem direction. By  distinguish between those chords, LilyPond
-can do collision resolution in these cases as well.  
-
-Distinguishing between voices with the same stem direction, is done by
-setting the property @code{Voice.horizontalNoteShift}.  It must be set
-to a different integer for each voice. Then, all note heads in collision
-groups (not just unisons and seconds) will be offset, one voice relative
-another.  The following fragment of sheet music shows how shifting is
-done, with values of @code{horizontalNoteShift} printed over and under
-the notes. In this case the chords are just simple notes.
-
-@c URG : mudela book bug.
-@mudela[singleline,verbatim]
-\score {
-        \notes \context Staff <
-               \context Voice  = VA { \stemup f''4^"0" }
-               \context Voice  = VB {\stemup
-               \property Voice.horizontalNoteShift = 1 d''4^" 1" }
-               \context Voice  = VC { \stemup \property
-Voice.horizontalNoteShift = 2 b'4^"  2" }
-               \context Voice  = VD { \stemdown \property
-Voice.horizontalNoteShift = 1 g'4_"1 " }
-               \context Voice  = VE { \stemdown e'4_"0" }
-        >
-}
-@end mudela
-
-If you are not satisfied with the collision resolution of LilyPond, you
-can override the horizontal shift value of the chord of one Voice, by
-setting @code{forceHorizontalShift}.  This sets the amount shift,
-measured in black note head widths.
-
-To take complete control of note position shifts in complex passages,
-you have set things up for normal collisions and override all shifts by
-setting @code{forceHorizontalShift} to zero everywhere
-@example
-\property Voice.horizontalNoteShift = <n>
-\property Voice.forceHorizontalShift = "0.0"
-@end example
-
-Then you can set the force property to a suitable value before each note
-that really needs it (unisons and seconds), and reset it to 0.0 after
-the note.  
-
-  @item @code{horizontalNoteShift}@indexcode{horizontalNoteShift}  @propertytype{integer}
-    Enable LilyPond to shift notes horizontally if they collide with
-    other notes.  This is useful when typesetting many voices on one
-    staff.  The identifier @code{\shift}@keyindex{shift} is defined to
-    enable this.  Traditionally, the outer chords (the upmost and
-    downmost voices), should have no @code{horizontalNoteShift}.
-
-  @item @code{markScriptPadding}@indexcode{markScriptPadding}  @propertytype{number}
-    Determines the extra space added between the mark and the closest
-    staff line or note.
-
-  @item @code{markDirection}@indexcode{markDirection} @propertytype{direction}
-    Determines if marks should be printed above or below the staff.
-    Set to @code{\up} to print marks above the staff; set to
-    @code{\down} to print marks below the staff.
-
-  @item @code{midiInstrument}@indexcode{midiInstrument} @propertytype{string}
-    Sets the instrument for MIDI output.  If this property is not set
-    then LilyPond will use the @code{instrument} property.  This must
-    be set to one of the strings on the list of MIDI instruments that
-    appears in section XREF-midilist [FIXME].  If you use a string which
-    is not listed, LilyPond will silently substitute piano.
-
-  @item @code{restStyle}@indexcode{restStyle} @propertytype{string}
-    Change the layout of rests shorter than quarter notes. 
-    Currently, the standard layout @code{""} and mensural notation
-    @code{"mensural"} are available. Mensural rests of duration
-    32 or shorter are not available.
-@mudela[verbatim]
-r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
-\property Staff.restStyle = "mensural"
-r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128 
-@end mudela
-
-  @item @code{scriptHorizontal}@indexcode{scriptHorizontal} @propertytype{boolean}
-    Put scripts left or right of note heads.  Support for this is
-    limited.  Accidentals will collide with scripts.
-    
-  @item @code{slurVerticalDirection}@indexcode{slurVerticalDirection} @propertytype{direction}
-    Set to @code{\free} for free choice of slur direction, set to
-    @code{\up} to force slurs up, set to @code{\down} to force slurs
-    down.  The shorthands @code{\slurup}@keyindex{slurup},
-    @code{\slurdown}@keyindex{slurdown}, and
-    @code{\slurboth}@keyindex{slurboth} are available.
-
-  @item @code{slurDash}@indexcode{slurDash} @propertytype{number}
-    Set to NIL for normal slurs, 1 for dotted slurs, and a
-    larger value for dashed slurs.  Identifiers
-    @code{\slurnormal}@keyindex{slurnormal} and
-    @code{\slurdotted}@keyindex{slurdotted} are predefined to set the
-    first two settings.
-
-@mudela[verbatim]
-               c4( )d
-               \property Voice.slurDash = 3
-               c ( )e
-@end mudela            
-
-@item @code{stemLength}@indexcode{stemLength}  
-    Set length of stems.  Unit is `@code{interline}/2', so
-    @code{stemLength} defaults to 7.
-@mudela[verbatim]
-g''4 \property Voice.stemLength = #14  g4 \property Voice.stemLength = #3 g4  g,,4  
-@end mudela
-
-  @item @code{stemLeftBeamCount}@indexcode{stemLeftBeamCount} @propertytype{integer}
-    Specify the number of beams to draw on the left side of the next
-    note.  Overrides automatic beaming.  The value is only used once,
-    and then it is erased.
-
-  @item @code{stemRightBeamCount}@indexcode{stemRightBeamCount} @propertytype{integer}
-    Specify the number of beams to draw on the right side of the next
-    note.  Overrides automatic beaming.  The value is only used once,
-    and then it is erased.
-
-  @item @code{tieDash}@indexcode{tieDash} @propertytype{integer}
-    Set dashing of ties. See also @code{slurDash}
-
-  @item @code{tieVerticalDirection}@indexcode{tieVerticalDirection} @propertytype{direction}
-    Set to @code{\free} for free choice of tie direction, set to
-    @code{\up} to force ties up, set to @code{\down} to force ties
-    down.
-
-  @item @code{transposing}@indexcode{transposing} @propertytype{integer}
-    Transpose the MIDI output.  Set this property to the number of
-    half-steps to transpose by.
-
-  @item @code{textEmptyDimension}@indexcode{textEmptyDimension} @propertytype{boolean}
-    If set to true then text placed above or below the staff is
-    assumed to have zero width.  @code{fatText} and @code{emptyText}
-are predefined settings.
-
-@mudela[verbatim]
-c4^"foo"  \emptyText c4^"foo" c4
-@end mudela
-
-  @item @code{textStyle}@indexcode{textStyle} @propertytype{string}
-    Set the text style for superscripts and subscripts.  See above
-    for list of text styles.
-
-  @item @code{textScriptPadding}@indexcode{textScriptPadding}  @propertytype{number}
-    Determines the extra space added between superscripted resp.
-    subscripted text and the closest staff line or note.
-
-  @item @code{verticalDirection}@indexcode{verticalDirection} @propertytype{direction}
-    Determines the direction of stems, subscripts, beams, slurs, and
-    ties.  Set to @code{\down} to force them down, @code{\up} to force
-    them up, or @code{\free} to let LilyPond decide.  This can be used
-    to distinguish between voices on the same staff.  The
-    @code{\stemdown}@keyindex{stemdown}, @code{\stemup}@keyindex{stemup},
-    and @code{\stemboth}@keyindex{stemboth} identifiers set this
-    property.
-    
-
-  @item @code{tupletDirection}@indexcode{tupletDirection} @propertytype{direction}
-    Determines the direction of triplets and other tuplets.  Set to
-    @code{\down} to force them below the staff, @code{\up} to force
-    them above, or @code{\free} to let LilyPond decide.
-
-  @item  @code{tupletBracketVisibility}@indexcode{tupletBracketVisibility} @propertytype{boolean} or @propertytype{symbol}
-  @item @code{tupletNumberVisibility}@indexcode{tupletNumberVisibility} @propertytype{boolean} or @propertytype{symbol}
-
-       These properties the visibility of the tuplet bracket and its
-number respectively. Setting it to false will prevent printing of the
-associated element. Setting the property to 'if-no-beam will make it
-print only if there is no beam associated with this tuplet bracket.
-
-[fixme examples]
-
-  @item @code{tupletInvisible}@indexcode{tupletInvisible} @propertytype{boolean}
-
-    If set to true, tuplet bracket creation is switched off
-entirely. This has the same effect as setting both
-@code{tupletNumberVisibility} and @code{tupletBracketVisibility} to
-@code{#f}, but as this does not even create elements, this setting
-uses less memory and time.
-
-
-@item @code{tupletSpannerDuration} @indexcode{tupletSpannerDuration}
-@propertytype{moment}
-
-Normally a tuplet bracket is as wide as the
-@code{\times} expression that gave rise to it. By setting this
-property, you can make brackets last shorter. Example
-
-@mudela[verbatim,fragment]
-\context Voice \times 2/3 {
-  \property Voice.tupletSpannerDuration = #(make-moment 1 4)
-  [c8 c c] [c c c]
-}
-@end mudela
-
-@end table
-
-@subsubheading Staff properties
-
-@cindex properties!Staff
-
-@table @code
-  @item @code{barNonAuto}@indexcode{barNonAuto} @propertytype{boolean}
-    If set to true then bar lines will not be printed
-    automatically; they must be explicitly created with @code{\bar}
-    keywords.  Unlike with the @code{\cadenza} keyword, measures are
-    still counted.  Bar generation will resume according to that
-    count if this property is set to zero.
-
-  @item @code{barNumberDirection}@indexcode{barNumberDirection} @propertytype{direction}
-    Set to @code{\up} or @code{\down} to put bar numbers above or below
-    the staff.
-
-  @item @code{barNumberScriptPadding}@indexcode{barNumberScriptPadding}  
-    Sets extra space between the bar number and the bar it labels.
-
-  @item @code{barSize}@indexcode{barSize}  
-    Specify the height of the bar lines if it should be different
-    than the staff height.
-@mudela[verbatim]
-c1 c1 \property Staff.barSize = 20 c1 c1 
-@end mudela
-
-  @item @code{barAtLineStart}@indexcode{barAtLineStart} @propertytype{boolean}
-    Set to true to produce a bar line after the clef at the start
-    of each line (but not at the beginning of the music).
-
-       [BROKEN]
-
-  @item @code{clefStyle}@indexcode{clefStyle} @propertytype{string}
-    Determines how clefs are typeset.  If set to @code{transparent},
-    the clefs are not printed at all, if set to
-    @code{fullSizeChanges}, clef changes in the middle of a line are
-    typeset with a full size clef.  By default, clef changes are
-    typeset in smaller size.
-
-  @item @code{supportedClefTypes}@indexcode{supportedClefTypes} @propertytype{alist}
-
-       Clef settings supported. The value is an association list clef
-descriptions indexed by clef name (alto, baritone, etc.).  A clef
-description is a list with the glyph name, and the staff position
-where it should go. For internal use.
-
-  @item @code{clefPitches}@indexcode{clefPitches} @propertytype{alist}
-    Settings for the position of the central C, relative to this clef
-    symbol.  For internal use.
-   
-  @item @code{defaultClef}@indexcode{defaultClef} @propertytype{string}
-       Clef setting to use when this context is created.  If unset,
-no clef is printed upon creation.
-
-  @item @code{marginDirection}@indexcode{marginDirection} @propertytype{direction}
-    Set to @code{\left} or @code{\right} to specify location of
-    marginal scripts.
-
-  @item @code{marginScriptPadding}@indexcode{marginScriptPadding}  
-    Specify extra space for marginal scripts.
-
-  @item @code{forgetAccidentals}@indexcode{forgetAccidentals} @propertytype{boolean}
-    Causes accidentals to be printed at every note instead of
-    remembered for the duration of a measure.
-
-  @item @code{noResetKey}@indexcode{noResetKey} @propertytype{boolean}
-    Do not reset the key at the start of a measure.  Accidentals will
-    be printed only once and are in effect until overridden, possibly
-    many measures later.
-
-  @item @code{staffSpace}@indexcode{staffLineLeading}   @propertytype{number}  
-    Specifies the distance (in points) between lines of the staff.
-
-  @item @code{numberOfStaffLines}@indexcode{numberOfStaffLines} @propertytype{integer}
-    Specifies the number of staff lines.  The default is 5.
-
-  @item @code{postBreakPadding}@indexcode{postBreakPadding}   @propertytype{number}
-    Extra space in points to be added after the clef, time signature
-    and key signature on the staff.  Deprecated, do not use.
-
-  @item @code{noVoltaBraces}@indexcode{noVoltaBraces} @propertytype{boolean}
-    Set to true to suppress the printing of brackets over alternate
-    endings specified by the command @code{\alternative}.
-
-  @item @code{barAlways}@indexcode{barAlways} @propertytype{boolean}
-    If set to true a bar line is drawn after each note.
-
-  @item @code{defaultBarType}@indexcode{defaultBarType} @propertytype{string}
-    Sets the default type of bar line. See Section XREF-barlines [FIXME] 
-    for a list of available bar types.
-
-  @item @code{instrument}, @code{instr} @propertytype{string}
-    @indexcode{instrument}@indexcode{instr}  
-    If @code{Instrument_name_engraver}
-@cindex Instrument_name_engraver
- is
-    added to the Staff translator, then the @code{instrument} property
-    is used to label the first line of the staff and the @code{instr}
-    property is used to label subsequent lines.  If the
-    @code{midiInstrument} property is not set, then @code{instrument}
-    is used to determine the instrument for MIDI output.
-
-  @item @code{keyOctaviation}@indexcode{keyOctaviation} @propertytype{boolean}
-    If set to false, then keys are the same in all octaves.  If set
-    to true then the key signature for different octaves can be
-    different and is specified independently:
-
-    @example
-      \keysignature bes fis'
-    @end example
-
-    The default value is @code{#f}.  Can be set to @code{#t} with
-    @code{\specialkey} or reset with @code{\normalkey}.
-
-  @item @code{timeSignatureStyle}@indexcode{timeSignatureStyle} @propertytype{string}
-    Changes the default two-digit layout for time signatures.  The
-    following values are recognized:
-
-    @table @code
-      @item @code{C}@indexcode{C}  
-        4/4 and 2/2 are typeset as C and struck C, respectively.  All
-        other time signatures are written with two digits.
-
-      @item @code{old}@indexcode{old}  
-        2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are
-        typeset with old-style mensuration marks.  All other time
-        signatures are written with two digits.
-
-      @item @code{1}@indexcode{1}  
-        All time signatures are typeset with a single
-        digit, e.g. 3/2 is written as 3.
-
-      @item @indexcode{CM/N}@code{C}@var{M}@code{/}@var{N}, 
-      @indexcode{oldM/N}@code{old}@var{M}@code{/}@var{N} or
-      @code{old6/8alt}@indexcode{old6/8alt}  
-        Tells LilyPond to use a specific symbol as time signature.
-    @end table
-
-    The different time signature characters are shown below with its
-    names:
-
-    @mudela[center,verbatim]
-
-      \score {
-        \notes\relative c'' {
-          \property Voice.textStyle = typewriter
-          \property Staff.timeSignatureStyle = "C2/2"
-          \time 2/2; a2^"C2/2" a2 
-          \property Staff.timeSignatureStyle = "C4/4"
-          \time 2/2; a2^"C4/4" a2 
-          \property Staff.timeSignatureStyle = "old2/2"
-          \time 2/2; a2^"old2/2" a2 
-          \property Staff.timeSignatureStyle = "old3/2"
-          \time 2/2; a2^"old3/2" a2 
-          \property Staff.timeSignatureStyle = "old2/4"
-          \time 2/2; a2^"old2/4" a2 
-          \property Staff.timeSignatureStyle = "old4/4"
-          \time 2/2; a2^"old4/4" a2 
-          \property Staff.timeSignatureStyle = "old6/4"
-          \time 2/2; a2^"old6/4" a2 
-          \property Staff.timeSignatureStyle = "old9/4"
-          \time 2/2; a2^"old9/4" a2 
-          \property Staff.timeSignatureStyle = "old4/8"
-          \time 2/2; a2^"old4/8" a2 
-          \property Staff.timeSignatureStyle = "old6/8"
-          \time 2/2; a2^"old6/8" a2 
-          \property Staff.timeSignatureStyle = "old6/8alt"
-          \time 2/2; a2^"old6/8alt" a2 
-          \property Staff.timeSignatureStyle = "old9/8"
-          \time 2/2; a2^"old9/8" a2 
-        }
-        \paper {
-          linewidth = 4.5 \in;
-        }
-      }
-    
-@end mudela
-
-  @item @code{voltaSpannerDuration}@indexcode{voltaSpannerDuration} @propertytype{moment}
-    Set to an integer to control the size of the brackets printed by
-    @code{\alternative}.  The integer specifies the number of whole
-    notes duration to use for the brackets.  It is rounded to the
-    nearest measure.  This can be used to shrink the length of
-    brackets in the situation where one alternative is very large. 
-    It may have odd effects if the specified duration is longer than
-    the music given in an @code{\alternative}.
-@end table
-   
-@subsubheading GrandStaff properties
-
-@cindex properties!GrandStaff
-
-@table @code 
-  @item @code{maxVerticalAlign}@indexcode{maxVerticalAlign}  @propertytype{number}
-    Set the maximum vertical distance between staffs.
-
-  @item @code{minVerticalAlign}@indexcode{minVerticalAlign}  @propertytype{number}
-    Set the minimum vertical distance between staffs.  
-@end table
-
-@subsubheading Score properties
-
-@cindex properties!Score
-
-
-
-
-@table @code
-  @item @code{skipBars}@indexcode{skipBars} @propertytype{boolean}
-    Set to 1 to skip the empty bars that are produced by
-    multimeasure notes and rests.  These bars will not appear on the
-    printed output.  Set to zero (the default) to expand multimeasure
-    notes and rests into their full length, printing the appropriate
-    number of empty bars so that synchronization with other voices is
-    preserved.
-
-    @quotation
-
-@mudela[fragment,verbatim,center]
-r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3
-
-@end mudela
-    @end quotation
-
-@item @code{breakAlignOrder}@indexcode{breakAlignOrder} @propertytype{list of string}
-
-   Defines the order in which prefatory matter (clefs, key signatures) appears, eg. this puts the key signatures after the bar lines:
-@example
-       \property Score.breakAlignOrder = #'(
-         "Span_bar"
-         "Breathing_sign"
-         "Clef_item"
-         "Staff_bar"
-         "Key_item"
-         "Time_signature"
-       )
-@end example
-
-
-@item @code{timing}@indexcode{timing} @propertytype{boolean}
-  Keep administration of measure length, position, bar number, etc?
-Switch off for cadenzas.
-
-@item @code{currentBarNumber}@indexcode{currentBarNumber} @propertytype{integer}
-  Contains the current barnumber. This property is incremented at
-every barline.
-
-@item @code{measurePosition}@indexcode{measurePosition} @propertytype{Moment}
-
-  How much of the current measure (measured in whole notes) have we had?
-
-@item @code{oneBeat}@indexcode{oneBeat} @propertytype{Moment}
-
-  How long does one beat in the current time signature last?
-
-@item @code{measureLength}@indexcode{measureLength} @propertytype{Moment}
-
-  How long does one measure in the current time signature last?
-
-@end table
-
-@subsubheading ChordNamesVoice properties
-
-@cindex properties!ChordNamesVoice
-
-@table @code
-  @item @code{chordInversion}@indexcode{chordInversion} @propertytype{boolean}
-    Determines whether LilyPond should look for chord inversions when
-    translating from notes to chord names.  Set to 1 to find
-    inversions.  The default is 0 which does not look for
-    inversions.
-@end table
-
-
-
-@node Notation output definitions
+@node Notation output definitions, , ,  Reference Manual
 @section Notation output definitions
 
 @cindex output
@@ -3047,8 +2377,7 @@ every barline.
 
 @cindex output definition
 
-@node paper
-@section paper
+@node paper, , ,  Reference Manual
 
 The most important output definition is the @code{\paper} block, for
 music notation.  The syntax is
@@ -3129,8 +2458,7 @@ select.
 
 @cindex paper variables
 
-@node Paper variables
-@section Paper variables
+@node Paper variables, , ,  Reference Manual
 
 There is a large number of paper variables that are used to control
 details of the layout.  These variables control the defaults for the
@@ -3144,11 +2472,11 @@ height in points.
 
 Nevertheless, here are some variables you may want to use or change:
 
-@table @code
+@table @samp
   @item @code{indent}@indexcode{indent}  
     The indentation of the first line of music.
 
-  @item @code{interline}@indexcode{interline}  
+  @item @code{staffspace}@indexcode{staffspace}
     The distance between two staff lines, calculated from the center
     of the lines.  You should use either this or @code{rulethickness}
     as a unit for distances you modify.
@@ -3157,6 +2485,19 @@ Nevertheless, here are some variables you may want to use or change:
     Sets the width of the lines.  If set to -1.0, a single
     unjustified line is produced.
 
+  @item @code{textheight}@indexcode{textheight}  
+    Sets the total height of the music on each page. Only used by
+    ly2dvi.
+
+  @item @code{interscoreline}@indexcode{interscoreline}  
+    Sets the spacing between the score lines. Defaults to 16 pt.
+
+  @item @code{interscorelinefill}@indexcode{interscorelinefill}  
+    If set to a positive number, the distance between the score 
+    lines will stretch in order to fill the full page. In that
+    case @code{interscoreline} specifies the minimum spacing.
+    Defaults to 0.
+
   @item @code{output}@indexcode{output}  
     Specifies an alternate name for the the output @file{s}.
     A @file{.tex}, @file{.midi} or @file{.ps} extension will be 
@@ -3167,8 +2508,7 @@ Nevertheless, here are some variables you may want to use or change:
 @end table
 
 
-@node contextdefs
-@section contextdefs
+@node contextdefs, , ,  Reference Manual
 
 @cindex context definition
 
@@ -3210,7 +2550,7 @@ A context definition has this syntax:
 
 @var{typename} is one of
 
-@table @code
+@table @samp
   @item @code{Engraver_group_engraver}@indexcode{Engraver_group_engraver}  
     The standard cooperation engraver.
 
@@ -3289,7 +2629,7 @@ such an identifier outside of @code{\score}, you must do
 Some pre-defined identifiers can simplify modification of
 translators.  The pre-defined identifiers are:
 
-@table @code
+@table @samp
   @item @code{StaffContext}@indexcode{StaffContext}  
     Default Staff context. 
 
@@ -3337,23 +2677,20 @@ translator:
 
       
 
-@node engravers
-@section engravers
+@node engravers, , ,  Reference Manual
 
 The engravers for paper output are:
 
 [incomplete, FIXME]
 
-@table @code
+@table @samp
   @item @code{Bar_engraver}@indexcode{Bar_engraver}  
     Engraves bar lines.  Normally in @code{Staff} and
     @code{RhythmicStaff}.
 
   @item @code{Bar_number_engraver}@indexcode{Bar_number_engraver}  
     Engrave bar numbers.  These numbers appear at the start of each
-    line.  Not normally in any translator.  Can be added to
-    @code{Score} for score-wide numbering or to @code{Staff} for
-    numbering on each staff.
+    line.  Part of @code{Score} context.
 
   @item @code{Beam_engraver}@indexcode{Beam_engraver}  
     Handles beam requests by engraving beams.  Normally appears in
@@ -3404,6 +2741,9 @@ The engravers for paper output are:
     Note that the notes move, but the locations of accidentals stay
     the same.
 
+       Vertical position of squashing can be controlled through
+@indexcode{squashedPosition}.
+
   @item @code{Priority_horizontal_align_engraver}
     @indexcode{Priority_horizontal_align_engraver}
 
@@ -3473,7 +2813,7 @@ The engravers for paper output are:
 
 
 
-@node Sound output
+@node Sound output, , ,  Reference Manual
 @section Sound output
 
 
@@ -3501,8 +2841,7 @@ The contexts for MIDI output are defined in @file{ly/performer.ly}.
 
 @cindex MIDI instrument names
 
-@node midilist
-@section midilist
+@node midilist, , , Reference Manual
 
 The MIDI instrument name is set by the
 @code{Staff.midiInstrument}@indexcode{Staff.midiInstrument} property or,
@@ -3567,7 +2906,7 @@ piano.
 
 The types available for  MIDI translators are:
 
-@table @code
+@table @samp
   @item @code{Performer_group_performer}@indexcode{Performer_group_performer}
   @item @code{Score_performer}@indexcode{Score_performer}
   @item @code{Staff_performer}@indexcode{Staff_performer}
@@ -3575,7 +2914,7 @@ The types available for  MIDI translators are:
 
 The performers for MIDI translators are:
 
-@table @code
+@table @samp
   @item @code{Key_performer}@indexcode{Key_performer}
   @item @code{Time_signature_performer}@indexcode{Time_signature_performer}
   @item @code{Note_performer}@indexcode{Note_performer}
@@ -3585,7 +2924,7 @@ The performers for MIDI translators are:
 
 
 
-@node Pre-defined Identifiers
+@node Pre-defined Identifiers, , ,  Reference Manual
 
 @section Pre-defined Identifiers
 
@@ -3596,7 +2935,7 @@ Various identifiers are defined in the initialization files to
 provide shorthands for some settings.  Most of them are in
 @file{ly/declarations.ly}.
 
-@table @code
+@table @samp
   @item @code{\break}@keyindex{break}  
     Force a line break in music by using a large argument for the
     keyword @code{\penalty}.