]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/user/refman.itely
patch::: 1.3.124.jcn1
[lilypond.git] / Documentation / user / refman.itely
index 8cf1e2450fc1389c363fb63822a73715e0a267c9..b79fa74a4d3d33d29f39c13369ddbb2834f3736f 100644 (file)
@@ -1,39 +1,54 @@
+@c -*-texinfo-*-
+@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
+@c
+@c FIXME: Index has two alphabetically sorted lists @code vs plain?
+@c 
+@c If we'd include the auto-generated documentation, we 'd get a lot of
+@c very useful index entries.
+@c 
+
 
 @node Reference Manual
 @chapter Reference Manual
 
-
 @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
+* Pitch names::                    Pitch names
+* Lexical conventions::            Lexical conventions
+* Other languages::                Note names in various languages
+* Lexical 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
+* Automatic Beaming::              Automatic Beaming
+* Chord Names::                    Chord Names
+* lyricprint::                     lyricprint
+* Notation Contexts::              Notation Contexts
+* Properties::                     Changing formatting
+* Page layout::                    Layout
+* contextdefs::                    contextdefs
+* Sound output::                   Sound output
+* midilist::                       midilist
+* Pre-defined Identifiers::        Pre-defined Identifiers
+* Interpretation contexts:(lilypond-internals)LilyPond interpretation contexts.
+* Engravers:(lilypond-internals)LilyPond engravers.
+* Backend:(lilypond-internals)LilyPond backend.
 @end menu
 
 
 @node Overview
 @section Overview
 
-This document@footnote{This document has been revised for
-LilyPond 1.2.} describes the the GNU LilyPond input format, which is
-a language for defining music.  We call this language @emph{Music
-Definition Language} or @emph{Mudela}, for short.@footnote{If anybody
-comes up with a better name, we'd gladly take this.  Gourlay already
-uses a ``Musical Description Language,'' ISO standard 10743 defines a
-``Standard Music Description Language.''  We're not being original
-here.}
 
-@emph{Mudela} is a language that allows you to
-
-@itemize @bullet
-  @item  create musical expressions by combining pitches, durations 
-  @item  output those musical expressions to various formats
-  @item  give those musical expressions and output definitions names, so
-       you can enter them in manageable chunks.
-@end itemize
+This document@footnote{This document has been revised for LilyPond 1.2.}
+describes the the GNU LilyPond input format This format represents a
+piece of music in an elegant way, but contains enough information for
+both automatic typesetting and automatic performances.
 
-@emph{Mudela} aims to define a piece of music completely, both from
-typesetting and from a performance point of view.
 
+LilyPond input can be classified  into three types:
+@itemize @bullet
+  @item musical expressions: a musical expression is some combination of
+rest, notes, lyrics
+  @item output definitions: recipes for translating those musical
+expressions into performances (MIDI) or graphics (eg. PostScript).
 
+  @item declarations: by declaring and naming musical expressions, you
+can enter and edit them in manageable chunks.
+@end itemize
 
 @node Top level
 @section Top level
 
-@cindex top level
-
 This section describes what you may enter at top level.
 
 
@@ -85,8 +93,6 @@ definition.  A score block has the following syntax:
 @var{outputdefs} are zero or more output definitions.  If no output
 definition is supplied, the default @code{\paper} block will be added.
 
-
-
 @cindex header
 
 @keyindex{header}
@@ -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
@@ -106,53 +112,32 @@ metre, arranger, piece and tagline.
 
 It is customary to put the @code{\header} at the top of the file.
 
+@node Pitch names
+@section Pitch names
 
-@node notenames
-@section notenames
 
-Note name tables can be specified using
+@cindex pitch names
+@cindex note names
+@cindex chord modifier names
 
+Note names and chord modifiers can be customised for nationalities.
+languages and conventions.  The syntax is as follows.
 @example
-   \notenames@keyindex{notenames}
-  @{ @var{assignmentlist} @}
+   \pitchnames@keyindex{pitchnames} @var{scheme-alist}
+   \chordmodifiers@keyindex{chordmodifiers} @var{scheme-alist}
 @end example
 
-@var{assignmentlist} is a list of definitions of the form
-
-@example
-  @var{name} = @var{pitch}
-@end example
-
-Chord modifiers can be set analogously, with
-@code{\chordmodifiers}@keyindex{chordmodifiers}.
-
+See @file{ly/nederlands.ly} and @file{ly/chord-modifiers.ly} for
+specific examples how to do this.  tables can be tailored specified
+using. Some national note names have been provided, see
+section @ref{Other languages}.
 A @code{\paper} block at top level sets the default paper block.  A
 @code{\midi} block at top level works similarly.
 
-
-
-LilyPond contains a Scheme interpreter (the GUILE library) for
-internal use.  The following commands access the interpreter
-directly.
-
-@example
-  \scm @keyindex{scm} @var{scheme} ;
-@end example
-
-Evaluates the specified Scheme code.  The result is discarded.
-
-@example
-\scmfile@keyindex{scmfile} @var{filename};
-@end example
-
-Reads Scheme code from the specified file.  The result is discarded.
-
-
-
 Identifier assignments may appear at top level.  Semicolons are
 forbidden after top level assignments.
 
-
+@cindex assignments
 
 @node Lexical conventions
 @section Lexical conventions
@@ -160,17 +145,44 @@ forbidden after top level assignments.
 @cindex lexical conventions
 
 
+@unnumberedsubsec Comments
 
 @cindex comment
 
 @indexcode{%}
 
-
 A one line comment is introduced by a `@code{%}' character. 
 Block comments are started by `@code{%@{}' and ended by `@code{%@}}'. 
 They cannot be nested.
 
+@unnumberedsubsec Scheme
+
+@indexcode{#}
+
+LilyPond contains a Scheme interpreter (the GUILE library) for
+internal use. The interpreter is accessed by the pound sign:
+
+@cindex Scheme
+@cindex GUILE
+@cindex Scheme, in-line code
+
+Whereever the syntax allows Scheme expressions, you may enter one as
 
+@example
+  #@var{scheme}
+@end example
+
+Evaluates the specified Scheme code. If this is used at toplevel, then
+the result is discarded. Example:
+@example
+  \property Staff.TestObject \override #'symbol =  #(+ 1 2)
+@end example
+
+(in this case, @code{\override} expects two Scheme expressions. 
+
+[refer appendix/ online intro on Scheme] 
+
+@unnumberedsubsec Keywords
 
 @cindex keyword
 
@@ -178,61 +190,19 @@ Keywords start with a backslash, followed by a number of lower case
 alphabetic characters.  These are all the keywords.
 
 @example
-  \accepts
-  \addlyrics
-  \alternative
-  \bar
-  \breathe
-  \chordmodifiers
-  \chords
-  \clef
-  \cm
-  \consists
-  \consistsend
-  \context
-  \duration
-  \font
-  \grace
-  \header
-  \in
-  \key
-  \keysignature
-  \lyrics
-  \mark
-  \midi
-  \mm
-  \musicalpitch
-  \name
-  \notenames
-  \notes
-  \paper
-  \partial
-  \penalty
-  \property
-  \pt
-  \relative
-  \remove
-  \repeat
-  \repetitions
-  \scm
-  \scmfile
-  \score
-  \script
-  \sequential
-  \simultaneous
-  \skip
-  \spanrequest
-  \tempo
-  \textscript
-  \time
-  \times
-  \translator
-  \transpose
-  \type
+apply arpeggio autochange spanrequest commandspanrequest
+simultaneous sequential accepts alternative bar breathe
+char chordmodifiers chords clef cm consists consistsend
+context denies duration dynamicscript elementdescriptions
+font grace header in lyrics key mark musicalpitch
+time times midi mm name pitchnames notes outputproperty
+override set revert partial paper penalty property pt
+relative remove repeat addlyrics partcombine score
+script stylesheet skip textscript tempo translator
+transpose type
 @end example
 
-
-
+@unnumberedsubsec Integers
 
 @cindex integer
 
@@ -240,7 +210,7 @@ Formed from an optional minus sign followed by digits.  Arithmetic
 operations cannot be done with integers, and integers cannot be mixed
 with reals.
 
-
+@unnumberedsubsec Reals
 
 @cindex real
  
@@ -261,21 +231,19 @@ centimeters, respectively.  This converts the number to a real that
 is the internal representation of dimensions.
 
 
-
+@unnumberedsubsec
 @cindex string
  
-
 Begins and ends with the `@code{"}' character.  To include a `@code{"}'
 character in a string write `@code{\"}'.  Various other backslash
-sequences have special interpretations as in the C language.  A
-string that contains no spaces can be written without the quotes. 
-See section XREF-modes [FIXME] for details on unquoted strings; their
-interpretation varies depending on the situation.  Strings can be
-concatenated with the `@code{+}' operator.
+sequences have special interpretations as in the C language.  A string
+that contains no spaces can be written without the quotes.  See
+@ref{Lexical modes} for details on unquoted strings; their interpretation varies
+depending on the situation.  Strings can be concatenated with the
+`@code{+}' operator.
 
-
-The tokenizer accepts the following commands.  They can appear
-anywhere.
+The tokenizer accepts the following commands. They have no grammatical
+function, hence they can appear anywhere in the input.
 
 @example
   \maininput@keyindex{maininput}
@@ -284,6 +252,8 @@ anywhere.
 This command is used in init files to signal that the user file must
 be read. This command cannot be used in a user file.
 
+@unnumberedsubsec file inclusion
+
 @example
   \include@keyindex{include} @var{file}
 @end example
@@ -292,6 +262,8 @@ Include @var{file}.  The argument @var{file} may be a quoted string (an
 unquoted string will not work here!) or a string identifier.  The full
 filename including the @file{.ly} extension must be given,
 
+@unnumberedsubsec Version information 
+
 @example
   \version@keyindex{version} @var{string} ;
 @end example
@@ -299,14 +271,12 @@ filename including the @file{.ly} extension must be given,
 Specify the version of LilyPond that a file was written for.  The
 argument is a version string in quotes, for example @code{"1.2.0"}. 
 This is used to detect invalid input, and to aid
-@code{convert-mudela}, a tool that automatically upgrades input files.
-
-
-
-@cindex other languages
+@code{convert-ly}, a tool that automatically upgrades input files.
+@cindex convert-ly
 
 @node Other languages
 @section Other languages
+@cindex Note names, international
 
 Note name definitions have been provided in various languages. 
 Simply include the language specific init file.  For example:
@@ -320,24 +290,20 @@ 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
-@code{\notenames}@keyindex{notenames} command, see
-subsection XREF-notenames [FIXME].
-
-
-
-@cindex lexical modes
+Pitch names can be redefined using the @code{\pitchnames} command, see
+@ref{Pitch names}.
 
+@node Lexical modes
+@section Lexical modes
+@cindex Lexical modes
 @cindex modes
 
-@node modes
-@section modes
 
-To simplify entering notes, lyrics, and chords, @emph{Mudela} has three
+To simplify entering notes, lyrics, and chords, @emph{Lilypond} has three
 special input modes on top of the default mode.  In each mode, words
 are identified on the input.  If @code{"word"} is encountered, it is
 treated as a string.  If @code{\word} is encountered, it is treated as
@@ -345,11 +311,11 @@ 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
  
-    At the start of parsing, @emph{Mudela} is in Normal mode.  In Normal
+    At the start of parsing, @emph{Lilypond} is in Normal mode.  In Normal
     mode, a word is an alphabetic character followed by alphanumeric
     characters.  If @code{word} is encountered on the input it is
     treated as a string.
@@ -403,8 +369,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
@@ -421,63 +387,67 @@ _ _ _ _         % 4 words, each one a space
     durations, you can not enter real numbers in this mode.
 @end table
 
-It is possible to create words that break the rules by prefixing them
-with the dollar sign `@code{$}@indexcode{$}'.  Regardless of the context, a
-word beginning with `@code{$}' extends until the next white space
-character.  Such words can contain numbers (even in Note mode), or
-other forbidden characters.  The dollar sign can be used to create
-and access identifiers that could not otherwise be used.@footnote{Use
-of `@code{$}' hampers readability and portability to future LilyPond
-versions, thus the use of the dollar sign is discouraged.}
-
-
+[todo: include short table showign differences] 
 
 @node Types
 @section Types
 
-@cindex types and identifiers
+@cindex  Identifiers
 
-@emph{Mudela} has a limited set of types:
+[say something about types]
+
+All of the information in a LilyPond input file, is represented as a
+Scheme value. In addition to normal Scheme data types (such as pair,
+number, boolean, etc.), LilyPond has a number of specialized data types,
+
+@itemize @bullet
+  @item Input
+  @item c++-function
+  @item Music: see @ref{Music expressions}
+  @item Identifier
+  @item Translator_def:
+See section @ref{contextdefs} for more information
+
+  @item Duration
+  @item Pitch
+  @item Score
+  @item Music_output_def (TODO: this is not really a Scheme object
+yet. Nevertheless, you can use identifiers to make references to them )
+  @item Moment (rational number)
+@end itemize
+
+LilyPond also includes some transient object types. Objects of these
+types are built during a LilyPond run, and do not `exist' per se within
+your input file. These objects are created as a result of your input
+file, so you can include commands in the input to manipulate them,
+during a lilypond run.
 
 @itemize @bullet
-  @item  integers
-  @item  reals
-  @item  strings
-  @item  music expressions
-  @item  durations of notes and rests (specified with
-       @code{\notenames}@keyindex{notenames})
-  @item  note name tables
-  @item  context definitions, part of output definitions.  See
-       section XREF-contextdefs [FIXME] for more information
-  @item  output definitions (like @code{\paper}@keyindex{paper} blocks
-       and @code{\midi}@keyindex{midi} blocks)
-  @item  score definitions (@code{\score}@keyindex{score} blocks)
+  @item Grob: short for Graphical object. See @ref{Grobs}. 
+  @item Molecule: device-independent page output object,
+    including dimensions.  Produced by some Grob functions
+    See @ref{Molecules}
+  @item Translator: object that produces audio objects or Grobs. This is
+not yet user accessible.
+  @item Font_metric: object representing a font. (See @ref{Font metrics})
+@c  @item Audio_element: (todo,  smobme)
 @end itemize
 
-Type is a syntactical property: @emph{Mudela} has no real type system,
-so there is no support for generic expressions, functions, or user
-defined types.  For the same reason, it is not possible to mix reals
-and integers in arithmetic expressions, and ``type
-errors''
-@cindex type error
- (e.g., using a string identifier to
-initialize a @code{\paper}@keyindex{paper} block) will yield a ``parse
-error''.
-
-Identifiers allow objects to be assigned to names.  To assign an
-identifier, you use `@var{name}=@var{value}' and to refer to an
-identifier, you preceed its name with a backslash:
+Identifiers allow objects to be assigned to names during the parse
+stage.  To assign an identifier, you use `@var{name}=@var{value}' and to
+refer to an identifier, you preceed its name with a backslash:
 `@code{\}@var{name}'.  Identifier assignments must appear at top level
-in the @emph{Mudela} file.  Semicolons are forbidden after assignments
+in the @emph{Lilypond} file.  Semicolons are forbidden after assignments
 appearing at top level but they are obligatory after assignments
-appearing in the @code{\paper} block, see Section XREF-paper [FIXME].
+appearing in the @code{\paper} block, see Section @ref{Page layout}.
 
-@var{value} is any of the types listed above.
+@var{value} is any valid Scheme value or any of the input-types listed
+above.
 
-An identifier can be created with any string for its name, but you
-will only be able to refer to identifiers whose names begin with a
-letter, being entirely alphanumeric.  It is impossible to refer to an
-identifier whose name is the same as the name of a keyword.
+An identifier can be created with any string for its name, but you will
+only be able to refer to identifiers whose names begin with a letter,
+being entirely alphanumeric.  It is impossible to refer to an identifier
+whose name is the same as the name of a keyword.
 
 The right hand side of an identifier assignment is parsed completely
 before the assignment is done, so it is allowed to redefine an
@@ -488,15 +458,19 @@ identifier in terms of its old value, e.g.
 @end example
 
 When an identifier is referenced, the information it points to is
-copied.  Therefore it only makes sense to put identifiers for
-translators, output definitions, and @code{\score}@keyindex{score}
-blocks as the first item in a block.  For this reason, if you
-reference a @code{\foo} variable in a @code{\foo} block, it must be the
-first item in the list following @code{\foo}.@footnote{@code{\paper@{\one
-\two@}} does not make sense, because the information of @code{\two}
-would overwrite the information of @code{\one}, thereby making the
-reference to the first identifier useless.}
+copied.  For this reason, an identifier reference must always be the
+ first item in a block.
+@example
+\paper  @{
+   foo = 1.0
+   \paperIdent % wrong and invalid
+@}
 
+\paper @{
+   \paperIdent % correct
+   foo = 1.0
+@}
+@end example
 
 
 @node Music expressions
@@ -504,14 +478,13 @@ reference to the first identifier useless.}
 
 @cindex music expressions
 
-Music in @emph{Mudela} is entered as a music expression.  Notes, rests,
+Music in @emph{Lilypond} is entered as a music expression.  Notes, rests,
 lyric syllables are music expressions (the atomic
-expressions)
+expressions),
 @cindex atomic music expressions
-, and you can combine
-music expressions to form new ones.  This example forms a compound
-expressions out of the quarter @code{c} note and a @code{d}
-note:
+and you can combine music expressions to form new ones.  This example
+forms a compound expressions out of the quarter @code{c} note and a
+@code{d} note:
 
 @example 
 \sequential @{ c4 d4 @} 
@@ -522,8 +495,8 @@ first, and then the `@code{d}' (as opposed to playing them
 simultaneously, for instance).
 
 Atomic music expression are discussed in
-subsection XREF-atomicmusic [FIXME].  Compound music expressions are
-discussed in subsection XREF-compoundmusic [FIXME].
+subsection @ref{Atomic music expressions}.  Compound music expressions are
+discussed in subsection @ref{Compound music expressions}.
 
 
 
@@ -551,7 +524,7 @@ corresponding to C and 7 corresponding to B.  The shift is zero for a
 natural, negative to add flats, or positive to add sharps.
 
 In Note and Chord mode, pitches may be designated by names.  See
-section XREF-notelang [FIXME] for pitch names in different languages.
+section @ref{Other languages} for pitch names in different languages.
 
 The syntax for duration specification is
 
@@ -566,13 +539,12 @@ note, etc.  The number of dots after the note is given by
 @var{dotcount}.
 
 In Note, Chord, and Lyrics mode, durations may be designated by
-numbers and dots.  See Section XREF-notelang [FIXME] for details.
+numbers and dots.  
 
 
 @node Note specification
 @section Note specification
-
-@cindex note specification
+@cindex Note specification
 
 @cindex pitches
 
@@ -590,57 +562,55 @@ The pitch of the note is specified by the note's name.
 The default names are the Dutch note names.  The notes are specified
 by the letters `@code{c}' through `@code{b}', where `@code{c}' is an
 octave below middle C and the letters span the octave above that C. 
-In Dutchcindex(notenames!Dutch), a sharp is formed by adding
-`@code{-is}' to the end of a pitch name.  A flat is formed by adding
-`@code{-es}'. Double sharps and double flats are obtained by adding
-`@code{-isis}' or `@code{-eses}'.  `@code{aes}' and `@code{ees}' are
-contracted to `@code{as}' and `@code{es}' in Dutch, but both forms will
-be accepted.
+In Dutch,
+@cindex notenames!Dutch
+a sharp is formed by adding `@code{-is}' to the end of a pitch name.  A
+flat is formed by adding `@code{-es}'. Double sharps and double flats
+are obtained by adding `@code{-isis}' or `@code{-eses}'.  `@code{aes}'
+and `@code{ees}' are contracted to `@code{as}' and `@code{es}' in Dutch,
+but both forms will be accepted.
 
 LilyPond has predefined sets of notenames for various languages.  See
-section XREF-notelang [FIXME] for details.
-
+section @ref{Other languages}.
 
 The optional octave specification takes the form of a series of
 single quote (`@code{'}@indexcode{'}') characters or a series of comma
 (`@code{,}@indexcode{,}') characters.  Each @code{'} raises the pitch by one
 octave; each @code{,} lowers the pitch by an octave.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   c' d' e' f' g' a' b' c''
-@end mudela
+@end lilypond
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   cis' dis' eis' fis' gis' ais' bis'
-@end mudela
+@end lilypond
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   ces' des' es' fes' ges' as' bes'
-@end mudela
+@end lilypond
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   cisis' eisis' gisis' aisis' beses'
-@end mudela
+@end lilypond
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   ceses' eses' geses' ases' beses'
-@end mudela
+@end lilypond
 
-Whenever a C-sharp is desired,  you must specify a C-sharp.  LilyPond
+Whenever a C-sharp is desired, you must specify a C-sharp.  LilyPond
 will determine what accidentals to typeset depending on the key and
-context.  A reminder accidental 
+context.  A reminder accidental
 @cindex reminder accidental
- can be
-forced by adding an exclamation mark `@code{!}' after the pitch.  A
-cautionary accidental, 
+can be forced by adding an exclamation mark `@code{!}' after the pitch.
+A cautionary accidental,
 @cindex cautionary accidental
- i.e., an
-accidental within parentheses can be obtained by adding the question
-mark `@code{?}@indexcode{?}' after the pitch.
+i.e., an accidental within parentheses can be obtained by adding the
+question mark `@code{?}@indexcode{?}' after the pitch.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   cis' d' e' cis'  c'? d' e' c'!
-@end mudela
+@end lilypond
 
 
 @cindex duration
@@ -659,7 +629,7 @@ c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64
 
 @quotation
 
-@mudela[]
+@lilypond[]
 \score {
   \notes \relative c'' {
     a\longa a\breve  
@@ -673,7 +643,7 @@ c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64
     } %}
   }
 }
-@end mudela
+@end lilypond
 @end quotation
 
 @quotation
@@ -687,25 +657,24 @@ r1 r2 r4 r8 r16 r32 r64 r64
 
 @quotation
 
-@mudela[]
+@lilypond[]
 \score {
   \notes \relative c'' {
     r\longa r\breve  
     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";
     }
   }
 }
-@end mudela
+@end lilypond
 @end quotation
 
 If the duration is omitted then it is set equal to the previous
@@ -713,36 +682,45 @@ duration.  If there is no previous duration, a quarter note is
 assumed.  The duration can be followed by a dot (`@code{.}@indexcode{.}')
 to obtain dotted note lengths.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   a'4. b'4.
-@end mudela
+@end lilypond
 
 You can alter the length of duration by writing
 `@code{*}@var{fraction}' after it.  This will not affect the
 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
+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.
+
+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.
+
+Note that there is currently no way to condense multiple rests into a
 single multimeasure rest.
 
 
+
 @cindex lyrics expressions
 
 Syllables are entered like notes, with pitches replaced by text.  For
 example, `@code{Twin-4 kle4 twin-4 kle4}' enters four syllables, each
 with quarter note duration.  Note that the hyphen has no special
 meaning for lyrics, and does not introduce special symbols.  See
-section XREF-modes [FIXME] for a description of what is interpreted as
+section @ref{Lexical modes} for a description of what is interpreted as
 lyrics.
 
 Spaces can be introduced into a lyric either by using quotes
 (`@code{"}') or by using an underscore without quotes: `@code{He_could4
 not4}'.  All unquoted underscores are converted to spaces.  Printing
-lyrics is discussed in section XREF-lyricprint [FIXME].
+lyrics is discussed in section @ref{lyricprint}.
 
 
 
@@ -787,23 +765,21 @@ formatting, this is the feature to use. The downside to this is that
 you need to know exactly how the backend works. Example:
 
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
 \relative c'' { c4
        \context Staff \outputproperty
                #(make-type-checker 'Note_head)
                #'extra-offset = #'(5.0 . 7.5)
 <c8 e g> }
-@end mudela
+@end lilypond
 
 This selects all note heads occurring at current staff level, and sets
 the extra-offset of those heads to (5,7.5), shifting them up and
 right.
 
 Use of this feature is entirely on your own risk: if you use this, the
-result will depend very heavily on the implentation of the backend,
-which we change unscrupulously.
-
-
+result will depend very heavily on the implementation of the backend,
+which we change regularly and unscrupulously.
 
 
 @cindex commands
@@ -812,7 +788,6 @@ Commands are music expressions that have no duration.
 
 
 @example
-
   @code{\key}@keyindex{key} @var{pitch} @var{type} @code{;}
 @end example
 
@@ -830,24 +805,14 @@ mode names @code{\ionian}@keyindex{ionian},
 @code{\phrygian}@keyindex{phrygian}, and @code{\dorian}@keyindex{dorian}
 are also defined.
 
-@example
-
-  @code{\keysignature}@keyindex{keysignature} @var{pitchseq} @code{;}
-@end example
-
-Specify an arbitrary key signature.  The pitches from @var{pitch} will
-be printed in the key signature in the order that they appear on the
-list.
-
         
 @example
   \mark@keyindex{mark} @var{unsigned};
   \mark @var{string};
 @end example
 
-Prints a mark over or under (depending on the
-@code{markDirection}@indexcode{markDirection} property) the staff.  You must add
-@code{Mark_engraver}@indexcode{Mark_engraver} to either the Score or Staff context for
+Prints a mark over or under the staff.  You must add
+@code{Mark_engraver}@indexcode{Mark_engraver} to the Score context for
 this to work.
 
 @node barlines
@@ -857,45 +822,26 @@ this to work.
   \bar@keyindex{bar} @var{bartype};
 @end example
 
-This is a request to print a special bar symbol. It replaces the 
-regular bar symbol with a special
-symbol.  The argument @var{bartype} is a string which specifies the
-kind of bar to print.  Options are @code{":|"}
-@cindex "|A@@@code{:|}
-,
-@code{"|:"}
-@cindex "|B@@@code{|:}
-, @code{":|:"}
-@cindex "|C@@@code{:|:}
-,
-@code{"||"}
-@cindex "|D@@@code{||}
-, @code{"|."}
-@cindex "|E@@@code{|.}
-,
-@code{".|"}
-@cindex "|F@@@code{.|}
-, and @code{".|."}
-@cindex "|G@@@code{.|.}
-. 
-These produce, respectively, a right repeat, a left repeat, a double
-repeat, a double bar, a start bar, an end bar, and a thick double
-bar.  If @var{bartype} is set to @code{"empty"} then nothing is
-printed, but a line break is allowed at that spot.
-
-You are encouraged to use @code{\repeat} for repetitions.
-See section XREF-sec-repeats [FIXME].
+This is a short-cut for doing
+@example
+  \property Score.whichBar = @var{bartype} 
+@end example
 
+You are encouraged to use @code{\repeat} for repetitions.  See
+@ref{Repeats}, and the documentation of @code{whichBar} in
+@ref{(lilypond-internals)LilyPond context properties}.
 
 
 @example
-
   \time@keyindex{time} @var{numerator}@code{/}@var{denominator} @code{;}
 @end example
 
-Change the time signature.  The default time signature is 4/4. 
-The time signature is used to generate bar lines.
+A short-cut for doing
+@example
+     \property Score.timeSignatureFraction = #'(@var{numerator} . @var{denominator})
+@end example
+
+See the documentation of @code{timeSignatureFraction}
 
 @example
 
@@ -906,18 +852,21 @@ Used to specify the tempo.  For example, `@code{\tempo 4 = 76;}'
 requests output with 76 quarter notes per minute.
 
 @example
-
   \partial@keyindex{partial} @var{duration} @code{;}
 @end example
 
+Short cut for 
+
+@example
+  \property Score.measurePosition = @var{length of duration}
+@end example
+
+See the documentation of @code{measurePosition}.
+
 @cindex anacrusis
 
 @cindex upstep
 
-This creates an incomplete measure (anacrusis, upbeat) at the start of 
-the music, e.g., `@code{\partial 8*2;}' creates a starting measure 
-lasting two eighth notes.
-
 @example
 
   @code{|}@indexcode{|}
@@ -929,15 +878,15 @@ 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
-be used to shorten measures.
+measure boundary.  This can help you finding errors in the input.
+Depending on the value of @code{barCheckNoSynchronize}
+@indexcode{barCheckNoSynchronize} The beginning of the measure will be
+relocated, so this can also be used to shorten measures.
 
 
 @example
-
   \penalty@keyindex{penalty} @var{int} @code{;}
 @end example
 
@@ -946,61 +895,20 @@ Discourage or encourage line breaks.  See identifiers
 section [on identifiers] [FIXME].
 
 @example
-
   \clef@keyindex{clef} @var{clefname} @code{;}
 @end example
 
-Music expression that sets the current clef.  The argument is a
-string which specifies the name of the clef.  Several clef names are
-supported.  If `@code{_8}' or `@code{^8}' is added to the end of a clef
-name, then the clef lowered or raised an octave will be generated. 
-Here are the supported clef names with middle C shown in each
-clef:
-
-@quotation
-
-@mudela[]
-\score {
-  \notes {
-    \cadenzaOn
-    %\property Voice.textStyle = typewriter
-    \clef subbass;     c'4-"\kern -5mm subbass" 
-    \clef bass;        c'4^"\kern -2mm bass"
-    \clef baritone;    c'4_"\kern -5mm baritone"
-    \clef varbaritone; c'4^"\kern -6mm varbaritone"
-    \clef tenor;       c'4_"\kern -3mm tenor"
-    \clef "G_8";       c'4^"\kern -2mm G\\_8" 
-  }  
-  \paper {
-    linewidth = -1.0;
-  }
-}
-@end mudela
-@end quotation
+Short-cut for
 
-@quotation
+@example
+  \property Clef.clefGlyph = @var{symbol associated with clefname} 
+  \property Clef.clefPosition = @var{clef Y-position for clefname}
+  \property Clef.clefOctavation = @var{extra pitch of clefname}
+@end example
 
-@mudela[]
-\score {
-  \notes {
-       \cadenzaOn
-    \clef alto;         c'4_"\kern -2mm alto"
-    \clef mezzosoprano; c'4^"\kern -9mm mezzosoprano"
-    \clef soprano;      c'4_"\kern -6mm soprano"
-    \clef treble;       c'4^"\kern -4mm treble"
-    \clef french;       c'4_"\kern -4mm french"
-  }
-  \paper {
-    linewidth = 4.5 \in;
-  }
-}
-@end mudela
-@end quotation
+Supported clef-names include 
 
-The three clef symbols can also be obtained using the names `@code{G}', 
-`@code{C}' or `@code{F}', optionally followed by an integer which 
-indicates at which note line the clef is located. An as example, the 
-@code{mezzosoprano} clef can also be given as `@code{C2}'.
+[todo]
 
 @example
 
@@ -1013,47 +921,42 @@ notes printed.  It works in Note Mode or Lyrics Mode.  In Note mode,
 this has the same effect as the space rest `@code{s}'.
 
 
-@cindex beams
-
 @node Manual beams
 @section Manual beams
+@cindex beams
 
 A beam is specified by surrounding the beamed notes with brackets
 `@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'.  
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   [a'8 a'] [a'16 a' a' a']
-@end mudela
+@end lilypond
 
 Some more elaborate constructions:
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   [a'16 <a' c''> c'' <a' c''>]
   \times 2/3 { [e'8 f' g'] }
-@end mudela
+@end lilypond
 
-Beaming can be generated automatically; see section XREF-autobeam [FIXME].
+Beaming can be generated automatically; see section @ref{Automatic Beaming}.
 
-[OUTDATED, FIXME]
 
-To place tremolo marks 
+To place tremolo marks between notes, use @code{\repeat} with tremolo
+style.
 @cindex tremolo beams
- between two notes, begin
-with `@code{[:}@var{length}' and end with `@code{]}'.  Tremolo marks
-will appear instead of beams.  Putting more than two notes in such a
-construction will produce odd effects.  To create tremolo beams on a
-single note, simply attach `@code{:}@var{length}' to the note itself
-(see also section XREF-tremolo [FIXME]).
-  
-@ignore
-@mu dela[fragment,verbatim,center]
-  [:16 e'1 g'] [:8 e'4 f']
-@end mudela
-  
-@mud ela[fragment,verbatim,center]
-  c'4:32 [:16 c'8 d'8]
-@end mudela
-@end ignore
+To create tremolo beams on a single note, simply attach
+`@code{:}@var{length}' to the note itself.
+
+@lilypond[fragment,verbatim,center]
+  \repeat "tremolo" 8 { c16 d16 }
+  \repeat "tremolo" 4 { c16 d16 }    
+@end lilypond
+
+@lilypond[fragment,verbatim,center]
+  c'4:32
+@end lilypond
+
 
 @cindex --@@@code{-}@code{-}
 
@@ -1077,14 +980,9 @@ Ties are indicated using the tilde symbol `@code{~}@indexcode{~}'.
 If you try to tie together chords which have no common pitches, a
 warning message will appear and no ties will be created.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   e' ~ e' <c' e' g'> ~ <c' e' g'>
-@end mudela
-
-
-
-[TODO: explain Requests]
-
+@end lilypond
 
 @cindex articulations
 
@@ -1101,7 +999,7 @@ forced to appear above or below the note by writing
 respectively.  Here is a chart showing symbols above notes, with the
 name of the corresponding symbol appearing underneath.
 
-@mudela[]
+@lilypond[]
 
   \score {
     < \notes {
@@ -1129,26 +1027,25 @@ name of the corresponding symbol appearing underneath.
     }
   }
 
-@end mudela
+@end lilypond
 
 In addition, it is possible to place arbitrary strings of text or
 @TeX{} above or below notes by using a string instead of an
 identifier: `@code{c^"text"}'.  Fingerings 
 @cindex fingering
- can be
-placed by simply using digits.  All of these note ornaments appear in
-the printed output but have no effect on the MIDI rendering of the
-music.
+can be placed by simply using digits.  All of these note ornaments
+appear in the printed output but have no effect on the MIDI rendering of
+the music.
 
 To save typing, fingering instructions (digits 0 to 9 are
 supported) and single characters shorthands exist for a few
 common symbols
 
-@mudela[]
+@lilypond[]
 
   \score {
     \notes {
-      \property Voice.textStyle = typewriter
+      \property Voice.TextScript \set #'font-style = #'typewriter
       c''4-._"c-."      s4
       c''4--_"c-{}-"    s4
       c''4-+_"c-+"      s4
@@ -1166,7 +1063,7 @@ common symbols
     }
   }
 
-@end mudela
+@end lilypond
 
 Dynamic marks are specified by using an identifier after a note:
 `@code{c4-\ff}' (the dash is optional for dynamics: `@code{c4 \ff})'.  
@@ -1203,7 +1100,6 @@ c4-\textscript "foo" "normal"
 
 This is equivalent to `@code{c4-6 c4-"foo"}'.  
 
-
 @cindex scripts
 
 @example
@@ -1229,9 +1125,9 @@ the slur.  The terminal `@code{)}' appears to the left of the
 first note in the slur.  This makes it possible to put a note in
 slurs from both sides:
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
-@end mudela
+@end lilypond
 
 
 @cindex crescendo
@@ -1248,10 +1144,10 @@ and @code{\rced} go after the last note.  Because these marks are
 bound to notes, if you want to get several marks during one note, you
 must use spacer notes.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   c'' \< \! c''   d'' \decr e'' \rced 
   < f''1 { s4 \< \! s2 \> \! s4 } >
-@end mudela
+@end lilypond
 
 
 @example
@@ -1269,19 +1165,17 @@ use the shorthands which are defined in the initialization file
 
 You can attach a (general) span request to a note using
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   c'4-\spanrequest \start "slur"
   c'4-\spanrequest \stop "slur"
-@end mudela
+@end lilypond
 
 The slur syntax with parentheses is a shorthand for this.
 
 
-
-@cindex tremolo marks
-
 @node stem tremolo
 @section stem tremolo
+@cindex tremolo marks
 
 Tremolo marks can be printed on a single note by adding
 `@code{:}[@var{length}]' after the note.  The length must be at
@@ -1290,9 +1184,9 @@ the note stem.  If the length is omitted, then the last value is
 used, or the value of the @code{tremoloFlags}@indexcode{tremoloFlags} property if there was
 no last value.
 
-@mudela[verbatim,fragment,center]
+@lilypond[verbatim,fragment,center]
   c'2:8 c':32
-@end mudela
+@end lilypond
 
 
 
@@ -1305,13 +1199,13 @@ Music expressions are compound data structures.  You can nest music
 expressions any way you like.  This simple example shows how three
 chords can be expressed in two different ways:
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \notes \context Staff {
     \cadenzaOn
     <a c'> <b  d' > <c' e'>
     < { a b  c' } { c' d' e' } >
   }
-@end mudela
+@end lilypond
 
 @cindex context selection
 @c @keyindex{context}
@@ -1322,11 +1216,7 @@ chords can be expressed in two different ways:
 
 Interpret @var{musicexpr} within a context of type @var{contexttype}. 
 If the context does not exist, it will be created.  The new context
-can optionally be given a name.  See
-section XREF-contextselection [FIXME] and XREF-contextdefs [FIXME] for more
-information on interpretation contexts.
-
-
+can optionally be given a name.  
 
 @cindex input modes
 
@@ -1337,14 +1227,9 @@ Mode switching keywords form compound music expressions: @code{\notes}
 @var{musicexpr}, and @code{\lyrics} @keyindex{lyrics} @var{musicexpr}. 
 These expressions do not add anything to the meaning of their
 arguments.  They are just a way to indicate that the arguments should
-be parsed in indicated mode.  See section XREF-modes [FIXME] for more
+be parsed in indicated mode.  See @ref{Lexical modes} for more
 information on modes.
 
-More information on context selection can be found in
-section XREF-contextselection [FIXME].
-
-
-
 @cindex sequential music
 
 
@@ -1390,35 +1275,35 @@ elements.  The following shorthand is a common idiom:
 If you try to use a chord as the first thing in your score, you might
 get multiple staffs instead of a chord.
 
-@mudela[verbatim,center]
+@lilypond[verbatim,center]
   \score {
     \notes <c''4 e''>
     \paper {
       linewidth = -1.;
     }
   }
-@end mudela
+@end lilypond
 
 This happens because the chord is interpreted by a score context.
 Each time a note is encountered a default Voice context (along with a
 Staff context) is created.  The solution is to explicitly instantiate
 a Voice context:
 
-@mudela[verbatim,center]
+@lilypond[verbatim,center]
   \score {
     \notes\context Voice <c''4 e''>
     \paper {
       linewidth = -1.;
     }
   }
-@end mudela
+@end lilypond
 
 
 
-@cindex relative pitch specification
 
 @node relative
 @section relative
+@cindex relative pitch specification
 
 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
@@ -1442,31 +1327,31 @@ specified that will act as the predecessor of the first note of
 
 Entering scales is straightforward in relative mode.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \relative c' {
     c d e f g a b c c,
   }
-@end mudela
+@end lilypond
 
 And octave changing marks are used for intervals greater than a fourth.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \relative c'' {
     c g c f, c' a, e'' }
-@end mudela
+@end lilypond
 
 If the preceding item is a chord, the first note of the chord is used
 to determine the first note of the next chord.  But other notes
 within the second chord are determined by looking at the immediately
 preceding note.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \relative c' {
     c <c e g> 
     <c' e g>
     <c, e' g>
   }
-@end mudela 
+@end lilypond 
 
 The pitch after the @code{\relative} contains a notename.  To parse
 the pitch as a notename, you have to be in note mode, so there must
@@ -1485,7 +1370,7 @@ less error-prone, and more readable.
 
 Chord names are a way to generate simultaneous music expressions that
 correspond with traditional chord names.  It can only be used in
-Chord mode (see section XREF-modes [FIXME]).
+Chord mode (see section @ref{Lexical modes}).
 
 @example
 
@@ -1504,7 +1389,7 @@ must be separated by a dot (`@code{.}').
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
 \transpose c'' {
   \chords {
     c1  c:3-       c:7     c:8
@@ -1512,7 +1397,7 @@ must be separated by a dot (`@code{.}').
   }
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
 The second type of modifier that may appear after the `@code{:}' is a
@@ -1525,14 +1410,14 @@ which replaces the 5th with a 4th.
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
 \transpose c'' {
   \chords {
     c1:m c:min7 c:maj c:aug c:dim c:sus
   }
 }
 
-@end mudela
+@end lilypond
 @end quotation
  
 
@@ -1540,13 +1425,13 @@ Chord subtractions are used to eliminate notes from a chord.  The
 notes to be subtracted are listed after a `@code{^}' character,
 separated by dots.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \transpose c'' {
     \chords {
       c1^3 c:7^5.3 c:8^7
     }
   }
-@end mudela 
+@end lilypond 
 
 Chord inversions can be specified by appending `@code{/}@indexcode{/}' and
 the name of a single note to a chord.  This has the effect of
@@ -1554,28 +1439,28 @@ lowering the specified note by an octave so it becomes the lowest
 note in the chord.  If the specified note is not in the chord, a
 warning will be printed.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \transpose c''' {
     \chords {
       c1 c/e c/g c:7/e
     }
   }
 
-@end mudela 
+@end lilypond 
 
 Bass notes can be added by `@code{/+}@indexcode{/+}' and
 the name of a single note to a chord.  This has the effect of
 adding the specified note to the chord, lowered by an octave,
 so it becomes the lowest note in the chord.
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   \transpose c''' {
     \chords {
       c1 c/+c c/+g c:7/+b
     }
   }
 
-@end mudela 
+@end lilypond 
 
 Throughout these examples, chords have been shifted around the staff
 using @code{\transpose}.
@@ -1600,9 +1485,9 @@ optionally with a bracket.  The most common tuplet is the triplet in
 which 3 notes have the length of 2, so the notes are 2/3 of
 their written length:
 
-@mudela[fragment,verbatim,center]
+@lilypond[fragment,verbatim,center]
   g'4 \times 2/3 {c'4 c' c'} d'4 d'4
-@end mudela
+@end lilypond
 
 
 
@@ -1616,6 +1501,7 @@ their written length:
 A grace note expression has duration 0; the next real note is
 assumed to be the main note.
 
+
 You cannot have the grace note after the main note, in terms of
 duration, and main notes, but you can typeset the grace notes to the
 right of the main note using the property
@@ -1627,17 +1513,17 @@ 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]
+@lilypond[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
+@end lilypond
 @end quotation
 
 At present, nesting @code{\grace}@keyindex{grace} notes, e.g.
@@ -1657,16 +1543,16 @@ error, since there will be no main note to attach the grace notes to.
 
 
 
-@cindex repeats
-
 @node Repeats
 @section Repeats
+@cindex repeats
+
 
 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.
@@ -1703,24 +1589,24 @@ Normal notation repeats are used like this:
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
   c'1
   \repeat volta 2 { c'4 d' e' f' }
   \repeat volta 2 { f' e' d' c' }
 
-@end mudela
+@end lilypond
 @end quotation
 
 With alternative endings:
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
   c'1
   \repeat volta 2 {c'4 d' e' f'} 
   \alternative { {d'2 d'} {f' f} }
 
-@end mudela
+@end lilypond
 @end quotation
 
 Folded repeats look like this:@footnote{Folded repeats offer little
@@ -1730,17 +1616,17 @@ implemented.}
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
   c'1
   \repeat fold 2 {c'4 d' e' f'} 
   \alternative { {d'2 d'} {f' f} }
 
-@end mudela
+@end lilypond
 @end quotation
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
 \context Staff {
   \relative c' {
     \partial 4;
@@ -1749,7 +1635,7 @@ implemented.}
   }
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
 If you don't give enough alternatives for all of the repeats, then
@@ -1758,7 +1644,7 @@ the specified number of repeats.
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[fragment,verbatim]
 \context Staff {
   \relative c' {
     \repeat volta 3 { \partial 4; e | c2 d2 | e2 f2 | }
@@ -1768,7 +1654,7 @@ the specified number of repeats.
   }
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
 It is possible to nest @code{\repeat}.  This is not entirely
@@ -1777,10 +1663,10 @@ bars will not.
 
 
 
-@cindex transposition of pitches
 
 @node transpose
 @section transpose
+@cindex transposition of pitches
 
 A music expression can be transposed with
 @code{\transpose}@keyindex{transpose}.  The syntax is
@@ -1800,16 +1686,16 @@ will print flats.
 
 @quotation
 
-@mudela[fragment,verbatim]
+@lilypond[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
+@end lilypond
 @end quotation
 
 If you want to use both @code{\transpose} and @code{\relative}, then
@@ -1840,16 +1726,16 @@ notes.
 
 @quotation
 
-@mudela[verbatim,fragment]
+@lilypond[verbatim,fragment]
 \addlyrics
 \transpose c'' {
-  \property Voice.automaticMelismata = "1"
+  \property Voice.automaticMelismata = ##t
   c8 () cis d8. e16 f2
 }
 \context Lyrics \lyrics {
  do4 re mi fa }
 
-@end mudela
+@end lilypond
 @end quotation
 
 You should use a single rhythm melody, and single rhythm lyrics (a
@@ -1858,7 +1744,7 @@ undesired effects when using multiple stanzas:
 
 @quotation
 
-@mudela[verbatim,fragment]
+@lilypond[verbatim,fragment]
 \addlyrics
 \transpose c'' {
   c8 () cis d8. e16 f2
@@ -1867,7 +1753,7 @@ undesired effects when using multiple stanzas:
 < { do4 re mi fa }
   { do8 re mi fa } >
 
-@end mudela
+@end lilypond
 @end quotation
 
 It is valid (but probably not very useful) to use notes instead of
@@ -1929,105 +1815,280 @@ foo = -6
 @node Notation conversion specifics
 @section Notation conversion specifics
 
-[todo]
 
+@node Automatic Beaming
+@section Automatic Beaming
 @cindex automatic beam generation
+@cindex autobeam
 
-@node autobeam
-@section autobeam
+@c beamAuto vs autoBeam ?
 
 By default, LilyPond will generate beams automatically.  This feature
-can be disabled by setting the @code{Voice.noAutoBeaming}@indexcode{Voice.noAutoBeaming}
-property to 1.  It can be overridden for specific cases by
-specifying explicit beams as described in
-section XREF-manualbeam [FIXME].
+can be disabled by setting the
+@code{Voice.beamAuto}@indexcode{Voice.beamAuto} property to false.
+It can be overridden for specific cases by specifying explicit beams.
+
 
 A large number of Voice properties are used to decide how to generate
-beams.  Their default values appear in @file{auto-beam-settings.ly}.
-In general, beams can begin anywhere, but their ending location is
-significant.  Beams can end on a beat, or at durations specified by
-the @code{Voice.beamAutoEnd}@indexcode{Voice.beamAutoEnd} property.  To end beams every
-quarter note, for example, you could set
-@code{Voice.beamAutoEnd}@indexcode{Voice.beamAutoEnd} equal to `@code{"1/4"}'.  To end beams
-at every three eighth notes you would set it to `@code{"3/8"}'.  The
-same syntax can be used to specify beam starting points using
-@code{Voice.beamAutoBegin}@indexcode{Voice.beamAutoBegin}.
-
-To allow different settings for different time signatures, these
-property names can start with `@code{time}@var{N}@code{_}@var{M}' to
-restrict the definition to `@var{N}@code{/}@var{M}' time.  For example,
-to specify beams ending only for 6/8 time you would use the
-property @code{Voice.time6_8beamAutoEnd}.  To allow different endings
-for notes of different durations, the duration can be tacked onto the
-end of the property.  To specify beam endings for beams that contain
-32nd notes, you would use @code{Voice.beamAutoEnd_32}.
+beams.  Their default values appear in @file{scm/auto-beam.scm}.  In
+general, beams can begin anywhere, but their ending location is
+significant.  Beams can end on a beat, or at durations specified by the
+properties in
+@code{Voice.autoBeamSettings}@indexcode{Voice.autoBeamSettings}.
+To end beams every quarter note, for example, you could set the property
+@code{(end * * * *)} @indexcode{(end * * * *)} to `@code{(make-moment 1
+4)}'.  To end beams at every three eighth notes you would set
+it to `@code{(make-moment 1 8)}'.
+The same syntax can be used to specify beam
+starting points using
+@code{(begin * * * *)}@indexcode{(begin * * * *)}, eg:
+@quotation
+@example
+\property Voice.autoBeamSettings \override
+    #'(end * * * *) = #(make-moment 1 4)
+\property Voice.autoBeamSettings \override
+    #'(begin * * * *) = #(make-moment 1 8)
+@end example
+@end quotation
 
+To allow different settings for different time signatures, instead of
+the first two asterisks @code{* *} you can specify a time signature; use
+@code{(end N M * *)} to restrict the definition to
+`@var{N}@code{/}@var{M}' time.  For example, to specify beams ending
+only for 6/8 time you would use the property @code{(end 6 8 * *)}.
 
+To allow different endings for notes of different durations, instead of
+th last two asterisks you can specify a duration; use @code{(end * * N
+M)} to restrict the definition to beams that contain notes of
+`@var{N}@code{/}@var{M}' duration.
 
-@cindex chord names
+For example, to specify beam endings for beams that contain 32nd notes,
+you would use @code{(end * * 1 32)}.
 
+
+@node Chord Names
+@section Chord Names
+@cindex chord names
 @cindex chords
 
 @cindex printing!chord names
 
-For displaying printed chord names, use the @code{ChordNames}@indexcode{ChordNames}
-and @code{ChordNameVoice}@indexcode{ChordNameVoice} contexts.  The chords may be entered
-either using the notation described above, or directly using
-simultaneous music.
+For displaying printed chord names, use the
+@code{ChordNames}@indexcode{ChordNames} and
+@code{ChordNameVoice}@indexcode{ChordNameVoice} contexts.  The chords
+may be entered either using the notation described above, or directly
+using simultaneous music.
+
+@quotation
+@lilypond[verbatim]
+scheme = \notes {
+  \chords {a1 b c} <d f g>  <e g b>
+}
+\score {
+  \notes<
+    \context ChordNamesVoice \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper { linewidth = -1.; }
+}
+@end lilypond
+@end quotation
+
+
+You can make the chord changes stand out more by setting property
+@code{ChordNames.chordChanges} to true.  This will only display
+chord names when there's a change in the chords scheme, but always
+display the chord name after a line break:
 
+@c bug
 @quotation
+@lilypond[verbatim]
+scheme = \chords {
+  c1:m \break c:m c:m c:m d
+}
 
-@mudela[fragment,verbatim]
-<
-  \context ChordNames {
-    \chords{a b c} \notes{<d f g>  <e g b>}
-  }
-  \context Staff \notes {
-    a b c' d' e'
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper{
+    linewidth = 40 * \staffspace;
+    \translator {
+      \ChordNamesContext
+      chordChanges = ##t
+    }
   }
->
-
-@end mudela
+}
+@end lilypond
 @end quotation
 
+
+
 LilyPond examines chords specified as lists of notes to determine a
-name to give the chord.  By default, LilyPond will not try to
-identify chord inversions:
+name to give the chord. LilyPond will not try to
+identify chord inversions or added base, which may result in strange
+chord names when chords are entered as a list of pitches:
+
+@quotation
+@lilypond[verbatim,center]
+scheme = \notes {
+  <c'1 e' g'>
+  <e' g' c''>
+  <e e' g' c''>
+}
 
-@mudela[fragment,verbatim,center]
+\score {
   <
-    \context ChordNameVoice \notes {
-      <e'1 g' c''>
-    }
-    \context Thread \notes {
-      <e'1 g' c''>
-    }
+    \context ChordNamesVoice \scheme
+    \context Staff \scheme
   >
-@end mudela
+  \paper { linewidth = -1.; }
+}
+@end lilypond
+@end quotation
 
-If you want inversions to be recognized, you must set the property
-@code{ChordNames.chordInversion}@indexcode{ChordNames.chordInversion}:
+To specify chord inversions, append @code{/<notename>}.  To specify an
+added bass note, append @code{/+<notename}:
 
-@mudela[fragment,verbatim,center]
-  <
-    \property Score.chordInversion = 1
-    \context ChordNameVoice \notes {
-      <e'1 g' c''>
-    }
-    \context Thread \notes {
-      <e'1 g' c''>
-    }
+@quotation
+@lilypond[verbatim,center]
+scheme = \chords {
+  d1 d/a d/+gis
+}
+
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
   >
-@end mudela
+  \paper { linewidth = -1.; }
+}
+@end lilypond
+@end quotation
 
+The chord names that LilyPond should print are fully customisable.  The
+default code can be found in @file{scm/chord-name.scm}.  Chord names are
+based on Banter style naming, which is unambiguous and has a logical
+structure.  Typical American style chord names are implemented as a
+variation on Banter names, they can be selected by setting poperty
+@code{ChordName.style} to @code{american}:
 
+@quotation
+@lilypond[verbatim]
+\include "english.ly"
+
+scheme = \chords {
+  c         % Major triad
+  cs:m      % Minor triad
+  df:m5-    % Diminished triad
+  c:5^3     % Root-fifth chord
+  c:4^3     % Suspended fourth triad
+  c:5+      % Augmented triad
+  c:2^3     % "2" chord
+  c:m5-.7-  % Diminished seventh
+  c:7+      % Major seventh
+  c:7.4^3   % Dominant seventh suspended fourth
+  c:5+.7    % Augmented dominant seventh
+  c:m5-.7   % "Half" diminished seventh
+  c:5-.7    % Dominant seventh flat fifth
+  c:5-.7+   % Major seventh flat fifth
+  c:m7+     % Minor-major seventh
+  c:m7      % Minor seventh
+  c:7       % Dominant seventh
+  c:6       % Major sixth
+  c:m6      % Minor sixth
+  c:9^7     % Major triad w/added ninth
+  c:6.9^7   % Six/Nine chord
+  c:9       % Dominant ninth 
+  c:7+.9    % Major ninth
+  c:m7.9    % Minor ninth
+}
 
-@cindex lyrics
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper {
+    \translator { 
+      \ChordNamesContext
+      ChordName \override #'word-space = #1 
+      ChordName \override #'style = #'american
+    }
+  }
+}
+@end lilypond
+@end quotation
+
+Similarly, Jazz style chord names are implemented as a variation on
+American style names:
+@quotation
+@lilypond[verbatim]
+scheme = \chords {
+  % major chords
+  c
+  c:6          % 6 = major triad with added sixth
+  c:maj                % triangle = maj
+  c:6.9^7      % 6/9 
+  c:9^7                % add9
+
+  % minor chords
+  c:m          % m = minor triad
+  c:m.6                % m6 = minor triad with added sixth
+  c:m.7+       % m triangle = minor major seventh chord
+  c:3-.6.9^7   % m6/9 
+  c:m.7                % m7
+  c:3-.9       % m9
+  c:3-.9^7     % madd9
+
+  % dominant chords
+  c:7          % 7 = dominant
+  c:7.5+       % +7 = augmented dominant
+  c:7.5-       % 7b5 = hard diminished dominant
+  c:9          % 7(9)
+  c:9-         % 7(b9)
+  c:9+         % 7(#9)
+  c:13^9.11    % 7(13)
+  c:13-^9.11   % 7(b13)
+  c:13^11      % 7(9,13)
+  c:13.9-^11   % 7(b9,13)
+  c:13.9+^11   % 7(#9,13)
+  c:13-^11     % 7(9,b13)
+  c:13-.9-^11  % 7(b9,b13)
+  c:13-.9+^11  % 7(#9,b13)
+
+  % half diminished chords
+  c:m5-.7              % slashed o = m7b5
+  c:9.3-.5-    % o/7(pure 9)
+
+  % diminished chords
+  c:m5-.7-     % o = diminished seventh chord
+}
+
+\score {
+  \notes <
+    \context ChordNames \scheme
+    \context Staff \transpose c'' \scheme
+  >
+  \paper {
+    \translator { 
+      \ChordNamesContext
+      ChordName \override #'word-space = #1 
+      ChordName \override #'style = #'jazz
+    }
+  }
+}
+@end lilypond
+@end quotation
 
-@cindex printing!lyrics
 
 @node lyricprint
 @section lyricprint
+@cindex lyrics
+
+@cindex printing!lyrics
+
 
 Lyric syllables must be interpreted within a @code{Lyrics} context
 
@@ -2037,8 +2098,7 @@ Lyric syllables must be interpreted within a @code{Lyrics} context
 Here is a full example: 
 
 @quotation
-
-@mudela[verbatim]
+@lilypond[verbatim]
 \score {
   <
     \notes \transpose c'' {
@@ -2052,7 +2112,7 @@ Here is a full example:
   >
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
 You may want a continuous line after the syllables to show melismata. 
@@ -2064,7 +2124,7 @@ shorten it by using a blank lyric (using `@code{_}').
 
 @quotation
 
-@mudela[verbatim]
+@lilypond[verbatim]
 \score {
   <
     \notes \relative c'' {
@@ -2076,7 +2136,7 @@ shorten it by using a blank lyric (using `@code{_}').
   >
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
      
@@ -2089,7 +2149,7 @@ For example:
 
 @quotation
 
-@mudela[verbatim]
+@lilypond[verbatim]
 \score {
   <
     \notes \transpose c'' {
@@ -2103,7 +2163,7 @@ For example:
   >
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
 
@@ -2123,10 +2183,10 @@ A context is an object that holds the reading state of the
 expression; it contains information like
 
 @itemize @bullet
-  @item  What notes are playing at this point?
-  @item  What symbols will be printed at this point?
-  @item  In what style will they printed?
-  @item  What is the current key signature, time signature, point within
+  @item What notes are playing at this point?
+  @item What symbols will be printed at this point?
+  @item In what style will they printed?
+  @item What is the current key signature, time signature, point within
        the measure, etc.?
 @end itemize
 
@@ -2175,14 +2235,14 @@ one is created.  For example,
 
 @quotation
 
-@mudela[verbatim]
+@lilypond[verbatim]
 \score {
   \notes \relative c'' {
     c4 <d4 \context Staff = "another" e4> f
   }
 }
 
-@end mudela
+@end lilypond
 @end quotation
 
 In this example, the @code{c} and @code{d} are printed on the
@@ -2222,7 +2282,7 @@ Lastly, you may wonder, why this:
 
 doesn't result in this:
 
-@mudela[]
+@lilypond[]
 
   \score {
     \notes \relative c'' {
@@ -2230,7 +2290,7 @@ doesn't result in this:
     }
   }
 
-@end mudela
+@end lilypond
 
 For the @code{c4}, a default @code{Staff} (with a contained
 @code{Voice}) context is created.  After the @code{c4} ends, no
@@ -2242,95 +2302,6 @@ sequential music is also the default @code{Voice} context.
 The @code{d4} gets interpreted in the same context
 as @code{c4}.
 
-
-
-These are the contexts supplied with the package.  They are defined
-in the initialization file @file{ly/engraver.ly}.
-
-@table @code
-  @item @code{Grace}@indexcode{Grace} 
-    The context for handling grace notes.  It is instantiated
-    automatically when you use @code{\grace}.  Basically, it is an
-    `embedded' miniature of the Score context.  Since this context
-    needs special interaction with the rest of LilyPond, you should
-    not explicitly instantiate it.
-
-  @item @code{LyricVoice}@indexcode{LyricVoice}  
-    Corresponds to a voice with lyrics.  Handles the printing of a
-    single line of lyrics.
-
-  @item @code{Thread}@indexcode{Thread}  
-    Handles note heads, and is contained in the Voice context.  You
-    have to instantiate this explicitly if you want to adjust the
-    style of individual note heads.
-
-  @item @code{Voice}@indexcode{Voice}  
-    Corresponds to a voice on a staff.  This context handles the
-    conversion of dynamic signs, stems, beams, super- and subscripts,
-    slurs, ties, and rests.
-
-    You have to instantiate this explicitly if you want to have
-    multiple voices on the same staff.
-
-  @item @code{ChordNamesVoice}@indexcode{ChordNamesVoice}  
-    A voice with chord names.  Handles printing of a line of chord
-    names.
-
-  @item @code{ChordNames}@indexcode{ChordNames}  
-    Typesets chord names.  Can contain @code{ChordNamesVoice}
-    contexts.
-
-  @item @code{Lyrics}@indexcode{Lyrics}  
-    Typesets lyrics.  It can contain @code{LyricVoice} contexts.
-
-  @item @code{Staff}@indexcode{Staff}  
-    Handles clefs, bar lines, keys, accidentals.  It can contain
-    @code{Voice} contexts.
-
-  @item @code{RhythmicStaff}@indexcode{RhythmicStaff}  
-    A context like @code{Staff} but for printing rhythms.  Pitches are
-    ignored; the notes are printed on one line.  It can contain
-    @code{Voice} contexts.
-
-  @item @code{GrandStaff}@indexcode{GrandStaff}  
-    Contains @code{Staff} or @code{RhythmicStaff} contexts.  It adds a
-    brace on the left side, grouping the staffs together.  The bar
-    lines of the contained staffs are connected vertically.  It can
-    contain @code{Staff} contexts.
-
-  @item @code{PianoStaff}@indexcode{PianoStaff}  
-    Just like @code{GrandStaff} but with @code{minVerticalAlign} set
-    equal to @code{maxVerticalAlign} so that interstaff beaming and
-    slurring can be used.
-
-  @item @code{StaffGroup}@indexcode{StaffGroup}  
-    Contains @code{Staff} or @code{RhythmicStaff} contexts.  Adds a
-    bracket on the left side, grouping the staffs together.  The bar
-    lines of the contained staffs are connected vertically.  It can
-    contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
-    @code{Lyrics} contexts.
-
-  @item @code{ChoirStaff}@indexcode{ChoirStaff}  
-    Identical to @code{StaffGroup} except that the contained staffs
-    are not connected vertically.
-
-  @item @code{Score}@indexcode{Score}  
-    This is the top level notation context.  No other context can
-    contain a @code{Score} context.  This context handles the
-    administration of time signatures.  It also makes sure that items
-    such as clefs, time signatures, and key-signatures are aligned
-    across staffs.  It can contain @code{Lyrics}, @code{Staff},
-    @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
-    @code{ChoirStaff} contexts.
-
-    You cannot explicitly instantiate a Score context (since it is
-    not contained in any other context).  It is instantiated
-    automatically when an output definition (a @code{\score} or
-    @code{\paper} block) is processed.
-@end table
-
-
-
 Properties that are set in one context are inherited by all of the
 contained contexts.  This means that a property valid for the
 @code{Voice} context can be set in the @code{Score} context (for
@@ -2341,768 +2312,148 @@ corresponding to the appropriate context.  In this case, the syntax
 is
 
 @example
-
   @var{propname} @code{=} @var{value}
 @end example
 
 This assignment happens before interpretation starts, so a
 @code{\property} expression will override any predefined settings.
 
-The @code{\property} expression will create any property you specify.
-There is no guarantee that a property will be used.  So if you spell
-a property name wrong, there will be no error message.
-
 The property settings are used during the interpretation phase.  They
 are read by the LilyPond modules where interpretation contexts are
 built of.  These modules are called @emph{translators}.  Translators for
 notation are called @emph{engravers}, and translators for sound are
 called @emph{performers}.
 
-The precise result of a property is determined by the implementation
-of the translator that reads them.  Therefore, the result of a
-property can vary, since it is implementation and configuration
-dependent.
-
-In order to fully find out what properties are used, you must
-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.
-
-
-@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
+@mbinclude properties.itely
 
+@node Page layout
+@section Page layout
 
-TODO:
+@subsection Paper block
 
+The most important output definition is the @code{\paper} block, for
+music notation.  The syntax is
 
-@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)
+  @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}}
 @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.
+where each of the items is one of
 
-  @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.
+@itemize @bullet
+  @item  An assignment.  The assignment must be terminated by a
+       semicolon.  
 
-  @item @code{beamAutoEnd}@indexcode{beamAutoEnd}  @propertytype{?}
-    Specifies when automatically generated beams can end.  See
-    section XREF-autobeam [FIXME].
+  @item  A context definition.  See section @ref{contextdefs} for
+       more information on context definitions.
 
-  @item @code{beamAutoBegin}@indexcode{beamAutoBegin}  @propertytype{?}
-    Specifies when automatically generated beams can start.  See
-    section XREF-autobeam [FIXME].
+@ignore
 
+                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
+       
+       A margin shape declaration.  The syntax is
 
-  @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.
+       @example
 
-  @item @code{dynamicStyle}@indexcode{dynamicStyle} @propertytype{string}
-    Set the text style for dynamics.
+         \shape @var{indent1}@code{,} @var{width1}@code{,}
+                      @var{indent2}@code{,} @var{width2} @dots{} @code{;}
+       @end example
 
-  @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.
+       @keyindex{shape}
 
-@mudela[verbatim]
-c''16 \property Staff.fontSize = -2 c''16
-@end mudela
+       Each pair of @var{indent} and @var{width} values is a dimension
+       specifying how far to indent and how wide to make the line. 
+       The indentation and width of successive lines are specified by
+       the successive pairs of dimensions.  The last pair of
+       dimensions will define the characeristics of all lines beyond
+       those explicitly specified.
+@end ignore
 
-   @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  \stylesheet  declaration.  Its syntax is
+       @example
+               \stylesheet @var{alist}
+       @end example
 
-@item @code{collisionMergeDotted}@indexcode{collisionMergeDotted} @propertytype{boolean}
+       See @file{font.scm} for details of @var{alist}.
+@end itemize
 
-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}
+@subsection Paper variables 
 
+The paper block has some variables you may want to use or change:
 
-[FIXME: this should be moved]
+@table @samp
+  @item @code{indent}@indexcode{indent}  
+    The indentation of the first line of music.
 
-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.
+  @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.
   
-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:
-
+  @item @code{linewidth}@indexcode{linewidth}  
+    Sets the width of the lines.  If set to -1.0, a single
+    unjustified line is produced.  If you use this variable, you
+    probably want to define it in staff spaces, ie
     @example
-      \keysignature bes fis'
+        linewidth = 30 * \staffspace;
     @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.
+  @item @code{textheight}@indexcode{textheight}  
+    Sets the total height of the music on each page. Only used by
+    ly2dvi.
 
-    @quotation
+  @item @code{interscoreline}@indexcode{interscoreline}  
+    Sets the spacing between the score lines. Defaults to 16 pt.
 
-@mudela[fragment,verbatim,center]
-r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3
+  @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.
 
-@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.
+  @item @code{stafflinethickness}@indexcode{stafflinethickness}  
+    Determines the thickness of staff lines, and also acts as a scaling
+    parameter for other line thicknesses.
 @end table
 
 
+@subsection Line breaks
 
-@node Notation output definitions
-@section Notation output definitions
+@cindex line breaks
+@cindex breaking lines
 
-@cindex output
+Line breaks are normally computed automatically. They are chosen such
+that the resulting spacing has low variation, and looks neither cramped
+nor loose.
 
-@cindex notation output
+Occasionally you might want to override the automatic breaks; you can do
+this by specifying @code{\break} (see also @ref{Pre-defined
+Identifiers}). This will force a line break at this point. Do remember
+that line breaks can only occur at places where there are barlines.  If
+you want to have a line break where there is no barline, you can force a
+barline by entering @code{\bar "";}.
 
-@cindex output definition
+@subsection Page breaks
 
-@node paper
-@section paper
+Page breaks are normally computed by @TeX{}, so they are not under direct
+control.  However, you can insert a commands into the .tex output to
+instruct @TeX{} where to break pages. For more details, see  the
+example file @file{input/test/between-systems.ly}
 
-The most important output definition is the @code{\paper} block, for
-music notation.  The syntax is
 
-@example
+@cindex page breaks
+@cindex breaking pages
 
-  @code{\paper @{} [@var{paperidentifier}] @var{items} @code{@}}
-@end example
 
-where each of the items is one of
-
-@itemize @bullet
-  @item  An assignment.  The assignment must be terminated by a
-       semicolon.  See section XREF-papervars [FIXME] for information on
-       paper variables.
+@subsection Font size
 
-  @item  A context definition.  See section XREF-contextdefs [FIXME] for
-       more information on context definitions.
-
-  @item
-       FIXME now in SCM
-
-       A margin shape declaration.  The syntax is
-
-       @example
-
-         \shape @var{indent1}@code{,} @var{width1}@code{,}
-                      @var{indent2}@code{,} @var{width2} @dots{} @code{;}
-       @end example
-
-       @keyindex{shape}
-
-       Each pair of @var{indent} and @var{width} values is a dimension
-       specifying how far to indent and how wide to make the line. 
-       The indentation and width of successive lines are specified by
-       the successive pairs of dimensions.  The last pair of
-       dimensions will define the characeristics of all lines beyond
-       those explicitly specified.
-
-  @item  A font declaration.  Its syntax is
-
-       @example
-
-         @var{fontsize} @code{=} \font@keyindex{font} @var{fontname}
-       @end example
-
-       @var{fontsize} is an integer describing the font to be used. 
-       0 is the default font.  @var{fontname} is the basename of
-       a font (usually a member of the Feta family).
-@end itemize
-
-
-
-@cindex changing font size and paper size
+@cindex font size
+@cindex paper size
 
 The Feta font provides musical symbols at six different sizes.  These
 fonts are 11 point, 13 point, 16 point, 20 point,
@@ -3110,67 +2461,48 @@ fonts are 11 point, 13 point, 16 point, 20 point,
 height of the five lines in a staff when displayed in the font.
 
 Definitions for these sizes are the files @file{paperSZ.ly}, where
-@code{SZ} is one of 11, 13, 16, 20, 23 and 26.  If you include
-any of these files, the identifiers @code{paper_eleven},
-@code{paper_thirteen}, @code{paper_sixteen}, @code{paper_twenty},
-@code{paper_twentythree}, and @code{paper_twentysix} are defined
-respectively.  The default @code{\paper} block is also set.
-
-To change the paper size, you must first set the
-@code{papersize}@indexcode{papersize} variable at top level.  Set it to the strings
-@code{a4}, @code{letter}, or @code{legal}.  After this specification,
-you must set the font as described above.  If you want the default
-font, then use the 20 point font.  The new paper size will not
-take effect if the font is not loaded and selected afterwards.  Paper
-size selection works by loading a file named after the paper size you
-select.
-
+@code{SZ} is one of 11, 13, 16, 20, 23 and 26.  If you include any of
+these files, the identifiers @code{paperEleven}, @code{paperThirteen},
+@code{paperSixteen}, @code{paperTwenty}, @code{paperTwentythree}, and
+@code{paperTwentysix} are defined respectively.  The default
+@code{\paper} block is also set.
 
+The font definitions are generated using a Scheme function. For more
+details, see the file @file{font.scm}.
 
-@cindex paper variables
+@subsection paper size
 
-@node Paper variables
-@section Paper variables
+@cindex paper size
+@cindex page size
 
-There is a large number of paper variables that are used to control
-details of the layout.  These variables control the defaults for the
-entire score.  Usually, they do not have to be changed; they are by
-default set to values that depend on the font size in use.  The
-values are used by the graphic objects while formatting the score;
-they are therefore implementation dependent.  Most variables are
-accompanied by documentation in the initalization file
-@file{params.ly} or @file{paperSZ.ly}, where @code{SZ} is the staff
-height in points.
-
-Nevertheless, here are some variables you may want to use or change:
-
-@table @code
-  @item @code{indent}@indexcode{indent}  
-    The indentation of the first line of music.
-
-  @item @code{interline}@indexcode{interline}  
-    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.
-  
-  @item @code{linewidth}@indexcode{linewidth}  
-    Sets the width of the lines.  If set to -1.0, a single
-    unjustified line is produced.
+To change the paper size, you must first set the
+@code{papersize}@indexcode{papersize} variable at top level.  Set it to
+the strings @code{a4}, @code{letter}, or @code{legal}.  After this
+specification, you must set the font as described above.  If you want
+the default font, then use the 20 point font.  The new paper size will
+not take effect if the font is not loaded and selected afterwards.
 
-  @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 
-    added to the string you specify.
+@example
+        papersize = "a4"
+        \include "paper16.ly"
 
-  @item @code{rulethickness}@indexcode{rulethickness}  
-    Determines the thickness of staff and bar lines. 
-@end table
+        \score @{
+                ...
+                \paper @{ \paperSixteen @}
+        @}
+@end example
 
+The file "paper16.ly" will now include a file named @file{a4.ly}, which
+will set the paper variables @code{hsize} and @code{vsize} (used by
+@code{ly2dvi})
 
 @node contextdefs
 @section contextdefs
 
 @cindex context definition
+@cindex translator definition
+@cindex engraver hacking
+
 
 A notation contexts is defined by the following information
 
@@ -3210,7 +2542,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.
 
@@ -3229,8 +2561,7 @@ one of
 @itemize @bullet
   @item  @code{\consists} @var{engravername} @code{;}  
     Add @var{engravername} to the list of modules in this context. 
-    Section XREF-engravers [FIXME] contains an overview of the engravers
-    available.  The order of engravers added with @code{\consists} is
+  The order of engravers added with @code{\consists} is
     significant.
   
   @item  @code{\consistsend} @var{engravername} @code{;}  
@@ -3245,8 +2576,12 @@ one of
     
   @item  @code{\accepts} @var{contextname} @code{;}  
     Add @var{contextname} to the list of  context this context can
-    contain.  The first listed context the context to create by
+    contain.  The first listed context is the context to create by
     default.
+
+  @item @code{\denies}. The opposite of @code{\accepts}. Added for
+completeness, but is never used in practice.
   
   @item  @code{\remove} @var{engravername} @code{;}  
     Remove a previously added (with @code{\consists}) engraver.
@@ -3289,7 +2624,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. 
 
@@ -3336,150 +2671,11 @@ translator:
 @end quotation
 
       
-
-@node engravers
-@section engravers
-
-The engravers for paper output are:
-
-[incomplete, FIXME]
-
-@table @code
-  @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.
-
-  @item @code{Beam_engraver}@indexcode{Beam_engraver}  
-    Handles beam requests by engraving beams.  Normally appears in
-    the @code{Voice} translator.  If omitted, then notes will be
-    printed with flags instead of beams.
-
-  @item @code{Beam_req_swallow_translator}
-    @indexcode{Beam_req_swallow_translator}  
-    Swallows beam requests.  In @code{LyricVoice}.  
-
-  @item @code{Chord_name_engraver}@indexcode{Chord_name_engraver}  
-    Engraves chord names.  Normally in @code{ChordNameVoice} .
-
-  @item @code{Chord_tremolo_engraver}@indexcode{Chord_tremolo_engraver}
-
-  @item @code{Clef_engraver}@indexcode{Clef_engraver}  
-    Engraves the clef symbol.  Normally in @code{Staff}.
-
-  @item @code{Collision_engraver}@indexcode{Collision_engraver}
-
-  @item @code{Dot_column_engraver}@indexcode{Dot_column_engraver}  
-    Engraves dots on dotted notes shifted to the right of the note. 
-    Normally in @code{Voice}.  If omitted, then dots appear on top of
-    the notes.
-
-  @item @code{Dynamic_engraver}@indexcode{Dynamic_engraver}  
-    Engraves dynamics symbols.  Normally in @code{Voice}.
-
-  @item @code{Font_size_engraver}@indexcode{Font_size_engraver}
-
-  @item @code{Key_engraver}@indexcode{Key_engraver}  
-    Engraves the key signature.  Normally in @code{Staff}.
-
-  @item @code{Local_key_engraver}@indexcode{Local_key_engraver}
-
-  @item @code{Lyric_engraver}@indexcode{Lyric_engraver}  
-    Engraves lyrics.  Normally in @code{LyricVoice}.
-
-  @item @code{Multi_measure_rest_engraver}
-    @indexcode{Multi_measure_rest_engraver}  
-    Engraves multi-measure rests that are produced with @code{R}. 
-    Normally in @code{Voice}.
-
-  @item @code{Piano_bar_engraver}@indexcode{Piano_bar_engraver}
-
-  @item @code{Pitch_squash_engraver}@indexcode{Pitch_squash_engraver}  
-    Treat all pitches as middle C.  Used in @code{RhythmicStaff}. 
-    Note that the notes move, but the locations of accidentals stay
-    the same.
-
-  @item @code{Priority_horizontal_align_engraver}
-    @indexcode{Priority_horizontal_align_engraver}
-
-  @item @code{Repeat_engraver}@indexcode{Repeat_engraver}  
-    Handles repeats?  In @code{Staff} and @code{RhythmicStaff}.
-
-  @item @code{Rest_collision_engraver}@indexcode{Rest_collision_engraver}  
-    Handles collisions of rests.  In @code{Staff}.
-
-  @item @code{Rest_engraver}@indexcode{Rest_engraver}  
-    Engraves rests.  Normally in @code{Voice}.
-
-  @item @code{Rhythmic_column_engraver}@indexcode{Rhythmic_column_engraver}
-
-  @item @code{Score_priority_engraver}@indexcode{Score_priority_engraver}
-
-  @item @code{Script_engraver}@indexcode{Script_engraver}  
-    Handles note ornaments generated by @code{\script}.  Normally in
-    @code{Voice}.
-
-  @item @code{Separating_line_group_engraver}
-    @indexcode{Separating_line_group_engraver}
-
-  @item @code{Skip_req_swallow_translator}
-    @indexcode{Skip_req_swallow_translator}
-
-  @item @code{Slur_engraver}@indexcode{Slur_engraver}  
-    Engraves slurs.  Normally in @code{Voice}.
-
-  @item @code{Span_bar_engraver}@indexcode{Span_bar_engraver}  
-    Engraves lines across multiple staffs.  Normally in
-    @code{Staffgroup} and @code{GrandStaff}.  Removing this from
-    @code{StaffGroup} gives the definition of @code{ChoirStaff}.
-
-  @item @code{Span_score_bar_engraver}@indexcode{Span_score_bar_engraver}
-
-  @item @code{Staff_group_bar_engraver}@indexcode{Staff_group_bar_engraver}
-
-  @item @code{Instrument_name_engraver}@indexcode{Instrument_name_engraver}
-    Prints the name of the instrument (specified by
-    @code{Staff.instrument} and @code{Staff.instr}) at the left of the
-    staff.
-
-  @item @code{Staff_sym_engraver}@indexcode{Staff_sym_engraver}
-
-  @item @code{Stem_engraver}@indexcode{Stem_engraver}  
-    Engraves stems.  Normally in @code{Voice}.
-
-  @item @code{Ties_engraver}@indexcode{Ties_engraver}  
-    Engraves ties.  Normally in @code{Voice}.
-
-  @item @code{Time_signature_engraver}@indexcode{Time_signature_engraver}  
-    Engraves the time signature.  Normally in @code{Staff} and
-    @code{RhythmicStaff}.
-
-  @item @code{Timing_engraver}@indexcode{Timing_engraver}  
-    Responsible for synchronizing timing information from staffs. 
-    Normally in @code{Score}.  In order to create polyrhythmic music,
-    this engraver should be removed from @code{Score} and placed in
-    @code{Staff}.
-
-  @item @code{Tuplet_engraver}@indexcode{Tuplet_engraver}  
-    Engraves tuplet brackets?  In @code{Staff}.
-
-  @item @code{Vertical_align_engraver}@indexcode{Vertical_align_engraver} 
-@end table
-
-
-
 @node Sound output
 @section Sound output
 
-
-
-The MIDI block is analogous to the paper block, but it is simpler.
-The @code{\midi} block can contain:
+The MIDI block is analogous to the paper block, but it is somewhat
+simpler.  The @code{\midi} block can contain:
 @cindex MIDI block
 
 @itemize @bullet
@@ -3563,28 +2759,6 @@ piano.
 @c @end quotation
 
 
-@cindex MIDI types and performers
-
-The types available for  MIDI translators are:
-
-@table @code
-  @item @code{Performer_group_performer}@indexcode{Performer_group_performer}
-  @item @code{Score_performer}@indexcode{Score_performer}
-  @item @code{Staff_performer}@indexcode{Staff_performer}
-@end table
-
-The performers for MIDI translators are:
-
-@table @code
-  @item @code{Key_performer}@indexcode{Key_performer}
-  @item @code{Time_signature_performer}@indexcode{Time_signature_performer}
-  @item @code{Note_performer}@indexcode{Note_performer}
-  @item @code{Lyric_performer}@indexcode{Lyric_performer}
-  @item @code{Swallow_performer}@indexcode{Swallow_performer}
-@end table
-
-
-
 @node Pre-defined Identifiers
 
 @section Pre-defined Identifiers
@@ -3594,89 +2768,35 @@ The performers for MIDI translators are:
 
 Various identifiers are defined in the initialization files to
 provide shorthands for some settings.  Most of them are in
-@file{ly/declarations.ly}.
+@file{ly/declarations.ly} and @file{ly/property.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}.
 
-  @item @code{\center}@keyindex{center}  
-    Used for setting direction  properties.  Equals 0.
-
-  @item @code{\down}@keyindex{down}  
-    Used for setting direction setting properties.  Is equal
-    to -1.
-
-  @item @code{\free}@keyindex{free}  
-    Used for setting direction setting properties.  Is equal
-    to 0.
-
-  @item @code{\left}@keyindex{left}  
-    Used for setting text alignment property.  Is equal to -1.
-
   @item @code{\nobreak}@keyindex{nobreak}  
     Prevent a line break in music by using a large negative argument
     for the keyword @code{\penalty}.
 
-  @item @code{\none}@keyindex{none}  
-    Used for setting @code{Score.beamslopedamping} and
-    @code{Score.beamquantisation} properties.  Is equal to 0.
-
-  @item @code{\normal}@keyindex{normal}  
-    Used for setting @code{Score.beamslopedamping} and
-    @code{Score.beamquantisation} properties.  Is equal to 1.
-
-  @item @code{\normalkey}@keyindex{normalkey}  
-    Select normal key signatures where each octave has the same key
-    signature.  This sets the @code{Staff.keyoctaviation} property.
-
-  @item @code{\right}@keyindex{right}  
-    Used for setting text alignment property.  Is set to 1.
-
-  @item @code{\shiftoff}@keyindex{shiftoff}  
-    Disable horizontal shifting of note heads that collide.  Sets the
-    @code{Voice.horizontalNoteShift} property.
+  @item @code{\shiftOff}@keyindex{shiftOff}  
+    Disable horizontal shifting of note heads that collide. 
 
-  @item @code{\shifton}@keyindex{shifton}  
+  @item @code{\shiftOn}@keyindex{shiftOn}  
     Enable note heads that collide with other note heads to be
-    shifted horiztonally.  Sets the @code{Voice.horizontalNoteShift}
-    property.
+    shifted horiztonally. Also @code{\shiftOnn} and @code{\shiftOnnn}
+set different shift values.
 
-  @item @code{\slurboth}@keyindex{slurboth}  
-    Allow slurs to be above or below notes.  This sets the
-    @code{Voice.slurVerticalDirection} property.
-
-  @item @code{\slurdown}@keyindex{slurdown}  
-    Force slurs to be below notes.  This sets the
-    @code{Voice.slurVerticalDirection} property.
-
-  @item @code{\slurup}@keyindex{slurup}  
-    Force slurs to be above notes.  This sets the
-    @code{Voice.slurVerticalDirection} property.
-
-  @item @code{\specialkey}@keyindex{specialkey}  
-    Allow key signatures do differ in different octaves.  This sets
-    the @code{Staff.keyoctaviation} property.
-
-  @item @code{\stemboth}@keyindex{stemboth}  
+  @item @code{\stemBoth}@keyindex{stemBoth}  
     Allow stems, beams, and slurs to point either upwards or
-    downwards, decided automatically by LilyPond.  This sets the
-    @code{Voice.verticalDirection} property.
+    downwards, decided automatically by LilyPond.
 
-  @item @code{\stemdown}@keyindex{stemdown}  
-    Force stems, beams, and slurs to point down.  This sets the
-    @code{Voice.verticalDirection} property.
+  @item @code{\stemDown}@keyindex{stemDown}  
+    Force stems, beams, and slurs to point down.
 
-  @item @code{\stemup}@keyindex{stemup}  
-    Force stems, beams and slurs to point up.  This sets the
-    @code{Voice.verticalDirection} property.
+  @item @code{\stemUp}@keyindex{stemUp}  
+    Force stems, beams and slurs to point up.
 
-  @item @code{\traditional}@keyindex{traditional}  
-    Used for setting the @code{Score.beamquantisation} property.  Is
-    equal to 2.
-
-  @item @code{\up}@keyindex{up}  
-    Used for setting various direction properties.  Is equal
-    to 1.
 @end table
+
+