as follows:
@lilypond[verbatim,quote,ragged-right]
-\new Staff ="main" {
+\new Staff = "main" {
\relative g' {
r4 g8 g c4 c8 d |
e4 r8
@cindex hymn structure
-Here is a example of the first line of a hymn with four
+Here is an example of the first line of a hymn with four
verses, set for SATB. In this case the words for all four
parts are the same. Note how we use variables to separate the
music notation and words from the staff structure. See too
Note the distinction between the name of the context type,
@code{Staff}, @code{Voice}, etc, and the identifying name of a
-particular instance of that type, which can be any sequence of letters
-and digits invented by the user. The identifying name is used to
+particular instance of that type, which can be any sequence of letters
+invented by the user. Digits and spaces can also be used in the
+identifying name, but then it has to be placed in quotes,
+i.e. @code{\new Staff = "MyStaff 1" @var{music-expression}}.
+The identifying name is used to
refer back to that particular instance of a context. We saw this in
use in the section on lyrics, see @ref{Voices and vocals}.
Engravers live and operate in Contexts.
Engravers such as the @code{Metronome_mark_engraver}, whose
-action and output applies to the score as a whole, operate in
+action and output apply to the score as a whole, operate in
the highest level context -- the @code{Score} context.
The @code{Clef_engraver} and @code{Key_engraver} are to be
-found in every Staff Context, as different staves may require
+found in every @code{Staff} Context, as different staves may require
different clefs and keys.
The @code{Note_heads_engraver} and @code{Stem_engraver} live
@seealso
-Internals reference: @rinternals{Engravers and performers}.
+Internals reference: @rinternals{Engravers and Performers}.
@node Modifying context properties
but occasionally it can be tricky. If the wrong context
is specified, no error message is produced, but the expected
action will not take place. For example, the
-@code{instrumentName} clearly lives in the Staff context, since
+@code{instrumentName} clearly lives in the @code{Staff} context, since
it is the staff that is to be named.
In this example the first staff is labelled, but not the second,
because we omitted the context name.
>>
@end lilypond
-Remember the default context name is Voice, so the second
+Remember the default context name is @code{Voice}, so the second
@code{\set} command set the property @code{instrumentName} in the
-Voice context to @qq{Alto}, but as LilyPond does not look
+@code{Voice} context to @qq{Alto}, but as LilyPond does not look
for any such property in the @code{Voice} context, no
further action took place. This is not an error, and no error
message is logged in the log file.
Similarly, if the property name is mis-spelt no error message is
-produced, and clearly the expected action cannot be performed. If
+produced, and clearly the expected action cannot be performed. In
fact, you can set any (fictitious) @q{property} using any name you
like in any context that exists by using the @code{\set} command. But
if the name is not known to LilyPond it will not cause any action to
@seealso
-Notation Reference: @ruser{Changing context default settings},
-@ruser{The set command}.
+Notation Reference:
+@ruser{Changing context default settings}.
+@c FIXME
+@c uncomment when backslash-node-name issue is resolved -pm
+@c @ruser{The set command}.
-Internals Reference: @rinternals{Contexts},
+Internals Reference:
+@rinternals{Contexts},
@rinternals{Tunable context properties}.