@node Contexts explained
@subsection Contexts explained
-@c FIXME Rethink and rewrite
+@ignore
+@c TODO Rethink and rewrite
>> > > - list of contexts: my *danger unmaintainable*
->> > > alarm just went off. I'm
+>> > > alarm just went off. I'm
I knew it would... And leaving out some of them is perfectly fine
with me.
should be there, and then we could simply list the remaining ones
without
further explanation and with links to the IR.
+@end ignore
+
+@c TODO Improve layout, order and consistency of wording -td
+
+@c TODO Add introduction which explains contexts in generality -td
+
+@unnumberedsubsec Score - the master of all contexts
+
+This is the top level notation context. No other context can
+contain a Score context. By default the Score context handles
+the administration of time signatures and makes sure that items
+such as clefs, time signatures, and key-signatures are aligned
+across staves.
+
+A Score context is instantiated implicitly when a
+@code{\score @{@dots{}@}} or @code{\layout @{@dots{}@}} block is
+processed, or explicitly when a @code{\new Score} command is
+executed.
+
+@subheading Top-level contexts: Staff containers
+
+@subsubheading StaffGroup
+
+Groups staves while adding a bracket on the left side, grouping
+the staves together. The bar lines of the contained staves are
+connected vertically. StaffGroup only consists of a collection
+of staves, with a bracket in front and spanning bar lines.
+
+@unnumberedsubsubsec ChoirStaff
+
+Identical to StaffGroup except that the bar lines of the contained
+staves are not connected vertically.
+
+@unnumberedsubsubsec GrandStaff
+
+A group of staves, with a brace on the left side, grouping
+the staves together. The bar lines of the contained staves are
+connected vertically.
+
+@unnumberedsubsubsec PianoStaff
+
+TODO No longer correct? Check. -td
+
+Just like GrandStaff but with a forced distance between the
+staves, so cross staff beaming and slurring can be used.
+
+@unnumberedsubsubsec DrumStaff
+
+Handles typesetting for percussion. Can contain DrumVoice
+
+@unnumberedsubsubsec InnerStaffGroup
+
+TODO -td
+
+@unnumberedsubsubsec InnerChoirStaff
+
+TODO -td
+
+@heading Staff-level contexts
+
+@unnumberedsubsubsec Staff
+
+Handles clefs, bar lines, keys, accidentals. It can contain
+Voice contexts.
+
+@unnumberedsubsubsec RhythmicStaff
+
+Like Staff but for printing rhythms. Pitches are ignored;
+the notes are printed on one line.
+@unnumberedsubsubsec TabStaff
-The Master Of All Contexts
-==========================
-
- * Score
- This is the top level notation context. No other context
-can
- contain a 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 staves.
- 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 \score or
-\layout
- block) is processed.
- (it should also be made clear somewhere what the
-difference is between
- \score and \Score).
-
-Top-level contexts: Staff containers
-====================================
- * StaffGroup
- Groups staves while adding a bracket on the left side,
- grouping the staves together. The bar lines of the
-contained
- staves are connected vertically. StaffGroup only consists
-of a
- collection of staves, with a bracket in front and spanning
-bar
- lines.
- * ChoirStaff
- Identical to StaffGroup except that the contained staves
-are
- not connected vertically.
- * GrandStaff
- A group of staves, with a brace on the left side, grouping
-the
- staves together. The bar lines of the contained staves are
- connected vertically.
- * PianoStaff
- Just like GrandStaff but with a forced distance between
-the
- staves, so cross staff beaming and slurring can be used.
- * DrumStaff
- Handles typesetting for percussion. Can contain DrumVoice
- * InnerStaffGroup
- * InnerChoirStaff
-
-Staff-level contexts
-====================
- * Staff
- Handles clefs, bar lines, keys, accidentals. It can
-contain
- Voice contexts.
- * RhythmicStaff
- Like Staff but for printing rhythms. Pitches are
- ignored; the notes are printed on one line.
- * TabStaff
- Context for generating tablature. By default lays the
-music
- expression out as a guitar tablature, printed on six
-lines.
- * VaticanaStaff
- Same as Staff, except that it is accommodated for
- typesetting a piece in gregorian style.
- * MensuralStaff
- Same as Staff, except that it is accommodated for
- typesetting a piece in mensural style.
-
-Voice-level (bottom) contexts
-=============================
-What is generated by default here? The voice-level contexts
-initiate
-certain properties and start engravers.
-
- * 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.
- Bottom context.
- * VaticanaVoice
- Same as Voice, except that it is accommodated for
- typesetting a piece in gregorian style.
- * MensuralVoice
- Same as Voice, except that it is accommodated for
- typesetting a piece in mensural style.
- * Lyrics
- Corresponds to a voice with lyrics. Handles the printing
-of a
- single line of lyrics.
- Bottom context.
- * DrumVoice
- A voice on a percussion staff.
- * FiguredBass
-
- * ChordNames
- Typesets chord names. This context is a `bottom' context;
-it
- cannot contain other contexts.
+Context for generating tablature. By default lays the music
+expression out as a guitar tablature, printed on six lines.
+
+@unnumberedsubsubsec VaticanaStaff
+
+Same as Staff, except that it is designed for typesetting
+a piece in gregorian style.
+
+@unnumberedsubsubsec MensuralStaff
+
+Same as Staff, except that it is designed for typesetting
+a piece in mensural style.
+
+@unnumberedsubsec Voice-level (bottom) contexts
+
+Voice-level contexts initialise certain properties and start
+appropriate engravers. Being bottom-level contexts, they cannot
+contain other contexts.
+
+@unnumberedsubsubsec Voice
+
+Corresponds to a voice on a staff. This context handles the
+conversion of dynamic signs, stems, beams, super- and sub-scripts,
+slurs, ties, and rests. You have to instantiate this explicitly
+if you require multiple voices on the same staff.
+
+@unnumberedsubsubsec VaticanaVoice
+
+Same as Voice, except that it is designed for typesetting a piece
+in gregorian style.
+
+@unnumberedsubsubsec MensuralVoice
+
+Same as Voice, with modifications for typesetting a piece in
+mensural style.
+
+@unnumberedsubsubsec Lyrics
+
+Corresponds to a voice with lyrics. Handles the printing of a
+single line of lyrics.
+
+@unnumberedsubsubsec DrumVoice
+
+The voice context used in a percussion staff.
+
+@unnumberedsubsubsec FiguredBass
+
+The context in which BassFigure objects are created from
+input entered in @code{\figuremode} mode.
+
+@unnumberedsubsubsec TabVoice
+
+The voice context used within a TabStaff context. Usually left to
+be created implicitly.
+
+@unnumberedsubsubsec ChordNames
+
+Typesets chord names.
------------------------------
+
+TODO
+
Then the following, which I don't know what to do with:
- * TabVoice
* GregorianTranscriptionVoice
* GregorianTranscriptionStaff
context.
-
@node Creating contexts
@subsection Creating contexts
Some of these properties are common to all spanners; others are
restricted to a sub-set of the spanners.
-
@node Common properties
@section Common properties
* Aligning objects::
@end menu
+@c TODO Add new subsection Shapes of objects
+@c which would include Slur shapes
+@c with a Known issue: can't modify shapes if there are
+@c more than one at the same musical moment
+
@node Controlling visibility of objects
@subsection Controlling visibility of objects