LilyPond Internals Reference: 2.1.18 PianoStaff

### 2.1.18 PianoStaff

Just like `GrandStaff`, but the staves are only removed together, never separately.

This context also accepts commands for the following context(s):

GrandStaff.

This context creates the following layout object(s):

Arpeggio, InstrumentName, SpanBar, SystemStartBar, SystemStartBrace, SystemStartBracket, SystemStartSquare and VerticalAlignment.

This context sets the following properties:

- Set translator property `instrumentName` to `'()`.
- Set translator property `instrumentName` to `'()`.
- Set translator property `localKeySignature` to `'()`.
- Set translator property `shortInstrumentName` to `'()`.
- Set translator property `shortInstrumentName` to `'()`.
- Set translator property `systemStartDelimiter` to `'SystemStartBrace`.
- Set translator property `topLevelAlignment` to `#f`.
- Set translator property `topLevelAlignment` to `#f`.

Context PianoStaff can contain ChordNames, DrumStaff, Dynamics, FiguredBass, Lyrics, RhythmicStaff, Staff and TabStaff.

This context is built from the following engraver(s):

> `Instrument_name_engraver`

>   Create a system start text for instrument or vocal names.

>   Properties (read)

>   > `currentCommandColumn` (graphical (layout) object)

>   >   Grob that is X-parent to all current breakable (clef, key signature, etc.) items.

>   > `instrumentName` (markup)

>   >   The name to print left of a staff. The `instrumentName` property labels the staff in the first system, and the `shortInstrumentName` property labels following lines.

>   > `shortInstrumentName` (markup)

>   >   See `instrumentName`.

>   > `shortVocalName` (markup)

>   >   Name of a vocal line, short version.

>   > `vocalName` (markup)

>   >   Name of a vocal line.

>   This engraver creates the following layout object(s):

>   InstrumentName.

> `Keep_alive_together_engraver`

>   This engraver collects all `Hara_kiri_group_spanner`s that are created in contexts at or below its own. These spanners are then tied together so that one will be removed only if all are removed. For example, if a `StaffGroup` uses this engraver, then the staves in the group will all be visible as long as there is a note in at least one of them.

> `Span_arpeggio_engraver`

>   Make arpeggios that span multiple staves.

>   Properties (read)

>   > `connectArpeggios` (boolean)

>   >   If set, connect arpeggios across piano staff.

>   This engraver creates the following layout object(s):

>   Arpeggio.

> `Span_bar_engraver`

>   Make cross-staff bar lines: It catches all normal bar lines and draws a single span bar across them.

>   This engraver creates the following layout object(s):

>   SpanBar.

> `System_start_delimiter_engraver`

>   Create a system start delimiter (i.e., a `SystemStartBar`, `SystemStartBrace`, `SystemStartBracket` or `SystemStartSquare` spanner).

>   Properties (read)

>   > `currentCommandColumn` (graphical (layout) object)

>   >   Grob that is X-parent to all current breakable (clef, key signature, etc.) items.

>   > `systemStartDelimiter` (symbol)

>   >   Which grob to make for the start of the system/staff? Set to `SystemStartBrace`, `SystemStartBracket` or `SystemStartBar`.

>   > `systemStartDelimiterHierarchy` (pair)

>   >   A nested list, indicating the nesting of a start delimiters.

>   This engraver creates the following layout object(s):

>   SystemStartBar, SystemStartBrace, SystemStartBracket and SystemStartSquare.

> `Vertical_align_engraver`

>   Catch groups (staves, lyrics lines, etc.) and stack them vertically.

>   Properties (read)

>   > `alignAboveContext` (string)

>   >   Where to insert newly created context in vertical alignment.

>   > `alignBelowContext` (string)

>   >   Where to insert newly created context in vertical alignment.

>   This engraver creates the following layout object(s):

>   VerticalAlignment.

> `Vertical_align_engraver`

>   Catch groups (staves, lyrics lines, etc.) and stack them vertically.

>   Properties (read)

>   > `alignAboveContext` (string)

>   >   Where to insert newly created context in vertical alignment.

>   > `alignBelowContext` (string)

>   >   Where to insert newly created context in vertical alignment.

>   This engraver creates the following layout object(s):

>   VerticalAlignment.

#### Internals Reference