notation. For example, giving each staff a separate time signature.
@item
-Global layout: changing the appearance of the spacing, line
+Page layout: changing the appearance of the spacing, line
breaks, and page dimensions. These modifications are discussed
-in @ref{Global issues}.
+in @ref{Non-musical notation} and @ref{Spacing issues}.
@end itemize
Internally, LilyPond uses Scheme (a LISP dialect) to provide
Common rules for typesetting accidentals have been placed in a
function. This function is called as follows
-@cindex @code{set-accidental-style}
+@funindex set-accidental-style
@example
#(set-accidental-style 'STYLE #('CONTEXT#))
@end example
should be used instead.
@item modern
-@cindex @code{modern} style accidentals
+@funindex modern style accidentals
This rule corresponds to the common practice in the 20th century. This rule
prints the same accidentals as @code{default}, but temporary
accidentals also are canceled in other octaves. Furthermore,
@end lilypond
@item @code{modern-cautionary}
-@cindex @code{modern-cautionary}
+@funindex modern-cautionary
This rule is similar to @code{modern}, but the ``extra'' accidentals
(the ones not typeset by @code{default}) are typeset as cautionary
accidentals. They are printed in reduced size or with parentheses
cis' c'' cis'2 | c'' c'
@end lilypond
-@cindex @code{modern-voice}
+@funindex modern-voice
@item modern-voice
This rule is used for multivoice accidentals to be read both by musicians
playing one voice and musicians playing all voices. Accidentals are
typeset for each voice, but they @emph{are} canceled across voices in
the same @internalsref{Staff}.
-@cindex @code{modern-voice-cautionary}
+@funindex modern-voice-cautionary
@item modern-voice-cautionary
This rule is the same as @code{modern-voice}, but with the extra
accidentals (the ones not typeset by @code{voice}) typeset
some of them are typeset as cautionaries.
@item piano
-@cindex @code{piano} accidentals
+@funindex piano accidentals
This rule reflects 20th century practice for piano notation. Very similar to
@code{modern} but accidentals also get canceled
across the staves in the same @internalsref{GrandStaff} or
@internalsref{PianoStaff}.
@item piano-cautionary
-@cindex @code{#(set-accidental-style 'piano-cautionary)}
+@funindex #(set-accidental-style 'piano-cautionary)
Same as @code{#(set-accidental-style 'piano)} but with the extra
accidentals typeset as cautionaries.
@item no-reset
-@cindex @code{no-reset} accidental style
+@funindex no-reset accidental style
This is the same as @code{default} but with accidentals lasting
``forever'' and not only until the next measure
@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
@item forget
This is sort of the opposite of @code{no-reset}: Accidentals
-are not remembered at all---and hence all accidentals are
+are not remembered at all -- and hence all accidentals are
typeset relative to the key signature, regardless of what was
before in the music
@node Setting automatic beam behavior
@subsection Setting automatic beam behavior
-@cindex @code{autoBeamSettings}
-@cindex @code{(end * * * *)}
-@cindex @code{(begin * * * *)}
+@funindex autoBeamSettings
+@funindex (end * * * *)
+@funindex (begin * * * *)
@cindex automatic beams, tuning
@cindex tuning automatic beaming
3/8 and on the fourth beat of the measure (after 3/4, that is 2 times
3/8, has passed within the measure).
+If any unexpected beam behaviour occurs, check the default automatic beam
+settings in @file{scm/@/auto@/-beam@/.scm}
+for possible interference, because the beam
+endings defined there will still apply on top of your own overrides. Any
+unwanted endings in the default vales must be reverted for your time
+signature(s).
+
+For example, to typeset @code{(3 4 3 2)}-beam endings in 12/8, begin
+with
+
+@example
+%%% revert default values in scm/auto-beam.scm regarding 12/8 time
+#(revert-auto-beam-setting '(end * * 12 8) 3 8)
+#(revert-auto-beam-setting '(end * * 12 8) 3 4)
+#(revert-auto-beam-setting '(end * * 12 8) 9 8)
+
+%%% your new values
+#(override-auto-beam-setting '(end 1 8 12 8) 3 8)
+#(override-auto-beam-setting '(end 1 8 12 8) 7 8)
+#(override-auto-beam-setting '(end 1 8 12 8) 10 8)
+@end example
+
@cindex automatic beam generation
@cindex autobeam
-@cindex @code{autoBeaming}
+@funindex autoBeaming
@cindex lyrics
If beams are used to indicate melismata in songs, then automatic
@refcommands
-@cindex @code{\autoBeamOff}
+@funindex \autoBeamOff
@code{\autoBeamOff},
-@cindex @code{\autoBeamOn}
+@funindex \autoBeamOn
@code{\autoBeamOn}.
+@commonprop
+
+Beaming patterns may be altered with the @code{beatGrouping} property,
+
+@lilypond[quote,verbatim,relative=2,fragment,ragged-right]
+\time 5/16
+\set beatGrouping = #'(2 3)
+c8[^"(2+3)" c16 c8]
+\set beatGrouping = #'(3 2)
+c8[^"(3+2)" c16 c8]
+@end lilypond
+
@refbugs
The easiest command is @code{\new}, and it also the quickest to type.
It is prepended to a music expression, for example
-@cindex @code{\new}
+@funindex \new
@cindex new contexts
@cindex Context, creating
context already earlier with the same name.
-@cindex @code{\context}
+@funindex \context
@item
Like @code{\new}, the @code{\context} command also directs a music
@code{\context}, it is usually applied to @context{Voice}
@example
-\applyOutput #@var{function} % apply to Voice
+\applyOutput #'@var{context} #@var{function} % apply to Voice
@end example
To have it interpreted at the @context{Score} or @context{Staff} level use
these forms
@example
-\context Score \applyOutput #@var{function}
-\context Staff \applyOutput #@var{function}
+\context \applyOutput #'Score #@var{function}
+\context \applyOutput #'Staff #@var{function}
@end example
@end itemize
@subsection Changing context properties on the fly
@cindex properties
-@cindex @code{\set}
+@funindex \set
@cindex changing properties
Each context can have different @emph{properties}, variables contained
`on-the-fly', during the music, so that the setting only affects the
second group of eighth notes.
-@cindex @code{\unset}
+@funindex \unset
There is also an @code{\unset} command,
@example
starting a new context with @code{\new} or @code{\context}, and
modifying it,
-@cindex @code{\with}
+@funindex \with
@example
\new @var{context} \with @{
@}
@end example
-@cindex @code{\accepts}
+@funindex \accepts
Contexts form hierarchies. We want to hang the @context{ImproVoice}
under @context{Staff}, just like normal @code{Voice}s. Therefore, we
modify the @code{Staff} definition with the @code{\accepts}
@}
@end example
-@cindex @code{\denies}
+@funindex \denies
The opposite of @code{\accepts} is @code{\denies},
which is sometimes needed when reusing existing context definitions.
@cindex finding graphical objects
@cindex graphical object descriptions
@cindex tweaking
-@cindex @code{\override}
+@funindex \override
@cindex internal documentation
We demonstrate how to glean this information from the notation manual
@item @internalsref{Fingering}:
@internalsref{Fingering} objects are created by:
-@b{@internalsref{Fingering_engraver}}
+@internalsref{Fingering_engraver}
@item @internalsref{Fingering_engraver}:
-Music types accepted: @b{@internalsref{fingering-event}}
+Music types accepted: @internalsref{fingering-event}
@item @internalsref{fingering-event}:
Music event type @code{fingering-event} is in Music expressions named
-@b{@internalsref{FingerEvent}}
+@internalsref{FingerEvent}
@end itemize
This path goes against the flow of information in the program: it
the @internalsref{Fingering_engraver} plug-in says
@quotation
-Fingering_engraver is part of contexts: @dots{} @b{@internalsref{Voice}}
+Fingering_engraver is part of contexts: @dots{} @internalsref{Voice}
@end quotation
@node Objects connected to the input
@subsection Objects connected to the input
-@cindex @code{\tweak}
+@funindex \tweak
In some cases, it is possible to take a short-cut for tuning graphical
objects. For objects that result directly from a piece of the input,
The value of @code{context} (the alist) is used to initalize
the properties of individual grobs. Grobs also have
-properties, named in scheme style, with
+properties, named in Scheme style, with
@code{dashed-words}. The values of grob properties change
during the formatting process: formatting basically amounts
to computing properties using callback functions.