### 1.6.2 Modifying single staves

This section explains how to change specific attributes of one staff: for example, modifying the number of staff lines or the staff size. Methods to start and stop staves and set ossia sections are also described.

#### Staff symbol

The `\stopStaff` and `\startStaff` commands can be used to stop or (re)start the staff lines respectively, from being printed at any point witin a score.

>     \stopStaff f4 d \startStaff g, e
>     f'4 d \stopStaff g, e
>     f'4 d \startStaff g, e

#### Predefined commands

`\startStaff`, `\stopStaff`.

The lines of a staff belong to the `StaffSymbol` grob (including ledger lines) and can be modified using `StaffSymbol` properties, but these modifications must be made before the staff is (re)started.

The number of staff lines can be altered:

>     f4 d \stopStaff
>     \override Staff.StaffSymbol.line-count = #2
>     \startStaff g, e |

>     f'4 d \stopStaff
>     \revert Staff.StaffSymbol.line-count
>     \startStaff g, e |

The position of each staff line can also be altered. A list of numbers sets each line’s position. `0` corresponds to the normal center line, and the normal line positions are `(-4 -2 0 2 4)`. A single staff line is printed for every value entered so that the number of staff lines, as well as their position, can be changed with a single override.

>     f4 d \stopStaff
>     \override Staff.StaffSymbol.line-positions = #'(1 3 5 -1 -3)
>     \startStaff g, e |
>     f'4 d \stopStaff
>     \override Staff.StaffSymbol.line-positions = #'(8 6.5 -6 -8 -0.5)
>     \startStaff g, e

To preserve typical stem directions (in the bottom half of the staff stems point up, in the top half they point down), align the center line (or space) of the customized staff with the position of the normal center line (0). The clef position and the position of middle C may need to be adjusted accordingly to fit the new lines. See Clef.

Staff line thickness can be altered. Ledger lines and note stems, by default, are also affected.

>     \new Staff \with {
>       \override StaffSymbol.thickness = #3
>     }
>     { f4 d g, e }

It is also possible to set ledger line thickness independently of staff lines.

>     \new Staff \with {
>       \override StaffSymbol.thickness = #2
>       \override StaffSymbol.ledger-line-thickness = #'(0.5 . 0.4)
>     }
>     { f'4 a, a,, f }

The first value is multiplied by the staff line thickness, the second by the staff space and then the two values are added together to give the new thickness of the ledger line.

The vertical positions of ledger lines can be altered,

>     \new Staff \with {
>       \override StaffSymbol.ledger-positions = #'(-3 -2 -1 2 5 6)
>     }
>     { f'4 a, a,, f }

Additional ledger lines can be made to appear above or below note heads depending on the current position relative to other note heads that also have their own ledger lines.

>     \new Staff \with {
>       \override StaffSymbol.ledger-extra = #4
>     }
>     { f'4 a, d, f, }

Ledger lines can also be made to appear inside the staff where custom staff lines are required. The example shows the default position of ledger lines when the explicit `ledger-position` is and is not set. The `\stopStaff` is needed in the example to revert the `\override` for the whole `StaffSymbol`.

>     \override Staff.StaffSymbol.line-positions = #'(-8 0 2 4)
>     d4 e f g
>     \stopStaff
>     \startStaff
>     \override Staff.StaffSymbol.ledger-positions = #'(-8 -6 (-4 -2) 0)
>     d4 e f g

The distance between staff lines can be altered. This affects ledger line spacing as well.

>     \new Staff \with {
>       \override StaffSymbol.staff-space = #1.5
>     }
>     { f'4 d, g, e, }

#### Selected Snippets

Making some staff lines thicker than the others

For educational purposes, a staff line can be thickened (e.g., the middle line, or to emphasize the line of the G clef). This can be achieved by adding extra lines very close to the line that should be emphasized, using the `line-positions` property of the `StaffSymbol` object.

>     {
>       \override Staff.StaffSymbol.line-positions =
>         #'(-4 -2 -0.2 0 0.2 2 4)
>       d'4 e' f' g'
>     }

#### See also

Music Glossary: line, ledger line, staff.

Notation Reference: Clef.

Snippets: Staff notation.

Internals Reference: StaffSymbol, staff-symbol-interface.

#### Ossia staves

Ossia staves can be set by creating a new simultaneous staff in the appropriate location:

>     \new Staff \relative c'' {
>       c4 b d c
>       <<
>         { c4 b d c }
>         \new Staff { e4 d f e }
>       >>
>       c4 b c2
>     }

However, the above example is not what is usually desired. To create ossia staves that are above the original staff, have no time signature or clef, and have a smaller font size, tweaks must be used. The Learning Manual describes a specific technique to achieve this goal, beginning with Nesting music expressions.

The following example uses the `alignAboveContext` property to align the ossia staff. This method is most appropriate when only a few ossia staves are needed.

>     \new Staff = "main" \relative c'' {
>       c4 b d c
>       <<
>         { c4 b d c }

>         \new Staff \with {
>           \remove "Time_signature_engraver"
>           alignAboveContext = #"main"
>           fontSize = #-3
>           \override StaffSymbol.staff-space = #(magstep -3)
>           \override StaffSymbol.thickness = #(magstep -3)
>           firstClef = ##f
>         }
>         { e4 d f e }
>       >>
>       c4 b c2
>     }

If many isolated ossia staves are needed, creating an empty `Staff` context with a specific context id may be more appropriate; the ossia staves may then be created by calling this context and using `\startStaff` and `\stopStaff` at the desired locations. The benefits of this method are more apparent if the piece is longer than the following example.

>     <<
>       \new Staff = "ossia" \with {
>         \remove "Time_signature_engraver"
>         \hide Clef
>         fontSize = #-3
>         \override StaffSymbol.staff-space = #(magstep -3)
>         \override StaffSymbol.thickness = #(magstep -3)
>       }
>       { \stopStaff s1*6 }

>       \new Staff \relative c' {
>         c4 b c2
>         <<
>           { e4 f e2 }
>           \context Staff = "ossia" {
>             \startStaff e4 g8 f e2 \stopStaff
>           }
>         >>
>         g4 a g2 \break
>         c4 b c2
>         <<
>           { g4 a g2 }
>           \context Staff = "ossia" {
>             \startStaff g4 e8 f g2 \stopStaff
>           }
>         >>
>         e4 d c2
>       }
>     >>

Using the `\Staff \RemoveEmptyStaves` command to create ossia staves may be used as an alternative. This method is most convenient when ossia staves occur immediately following a line break. For more information about `\Staff \RemoveEmptyStaves`, see Hiding staves.

>     <<
>       \new Staff = "ossia" \with {
>         \remove "Time_signature_engraver"
>         \hide Clef
>         fontSize = #-3
>         \override StaffSymbol.staff-space = #(magstep -3)
>         \override StaffSymbol.thickness = #(magstep -3)
>       } \relative c'' {
>         R1*3
>         c4 e8 d c2
>       }
>       \new Staff \relative c' {
>         c4 b c2
>         e4 f e2
>         g4 a g2 \break
>         c4 b c2
>         g4 a g2
>         e4 d c2
>       }
>     >>

>     \layout {
>       \context {
>         \Staff \RemoveEmptyStaves
>         \override VerticalAxisGroup.remove-first = ##t
>       }
>     }

#### Selected Snippets

Vertically aligning ossias and lyrics

This snippet demonstrates the use of the context properties `alignBelowContext` and `alignAboveContext` to control the positioning of lyrics and ossias.

>     \paper {
>       ragged-right = ##t
>     }

>     \relative c' <<
>       \new Staff = "1" { c4 c s2 }
>       \new Staff = "2" { c4 c s2 }
>       \new Staff = "3" { c4 c s2 }
>       { \skip 2
>         <<
>           \lyrics {
>             \set alignBelowContext = #"1"
>             lyrics4 below
>           }
>           \new Staff \with {
>             alignAboveContext = #"3"
>             fontSize = #-2
>             \override StaffSymbol.staff-space = #(magstep -2)
>             \remove "Time_signature_engraver"
>           } {
>             \tuplet 6/4 {
>               \override TextScript.padding = #3
>               c8[^"ossia above" d e d e f]
>             }
>           }
>         >>
>       }
>     >>

#### See also

Music Glossary: ossia, staff, Frenched staff.

Learning Manual: Nesting music expressions, Size of objects, Length and thickness of objects.

Notation Reference: Hiding staves.

Snippets: Staff notation.

Internals Reference: StaffSymbol.

#### Hiding staves

Staff lines can be hidden by removing the `Staff_symbol_engraver` from the `Staff` context. As an alternative, `\stopStaff` may be used.

>     \new Staff \with {
>       \remove "Staff_symbol_engraver"
>     }
>     \relative c''' { a8 f e16 d c b a2 }

Empty staves can be hidden by setting the `\Staff \RemoveEmptyStaves` command in the `\layout` block. In orchestral scores, this style is known as ‘Frenched Score’. By default, this command hides and removes all empty staves in a score except for those in the first system.

Note: A staff is considered empty when it contains only multi-measure rests, rests, skips, spacer rests, or a combination of these elements.

>     \layout {
>       \context {
>         \Staff \RemoveEmptyStaves
>       }
>     }

>     \relative c' <<
>       \new Staff {
>         e4 f g a \break
>         b1 \break
>         a4 b c2
>       }
>       \new Staff {
>         c,4 d e f \break
>         R1 \break
>         f4 g c,2
>       }
>     >>

`\Staff \RemoveEmptyStaves` can also be used to create ossia sections for a staff. For details, see Ossia staves.

The `\VaticanaStaff \RemoveEmptyStaves` command may be used to hide empty staves in ancient music contexts. Similarly, `\RhythmicStaff \RemoveEmptyStaves` may be used to hide empty `RhythmicStaff` contexts.

#### Predefined commands

`\Staff \RemoveEmptyStaves`, `\VaticanaStaff \RemoveEmptyStaves`, `\RhythmicStaff \RemoveEmptyStaves`.

#### Selected Snippets

Removing the first empty line

The first empty staff can also be removed from the score by setting the `VerticalAxisGroup` property `remove-first`. This can be done globally inside the `\layout` block, or locally inside the specific staff that should be removed. In the latter case, you have to specify the context (`Staff` applies only to the current staff) in front of the property.

The lower staff of the second staff group is not removed, because the setting applies only to the specific staff inside of which it is written.

>     \layout {
>       \context {
>         \Staff \RemoveEmptyStaves
>         % To use the setting globally, uncomment the following line:
>         % \override VerticalAxisGroup.remove-first = ##t
>       }
>     }
>     \new StaffGroup <<
>       \new Staff \relative c' {
>         e4 f g a \break
>         c1
>       }
>       \new Staff {
>         % To use the setting globally, comment this line,
>         % uncomment the line in the \layout block above
>         \override Staff.VerticalAxisGroup.remove-first = ##t
>         R1 \break
>         R
>       }
>     >>
>     \new StaffGroup <<
>       \new Staff \relative c' {
>         e4 f g a \break
>         c1
>       }
>       \new Staff {
>         R1 \break
>         R
>       }
>     >>

#### See also

Music Glossary: Frenched staff.

Learning Manual: Visibility and color of objects.

Notation Reference: Changing context default settings, Staff symbol, Ossia staves, Hidden notes, Invisible rests, Visibility of objects.

Snippets: Staff notation.

Internals Reference: ChordNames, FiguredBass, Lyrics, Staff, VerticalAxisGroup, Staff_symbol_engraver.

#### Known issues and warnings

Removing `Staff_symbol_engraver` also hides bar lines. If bar line visibility is forced, formatting errors may occur. In this case, use the following overrides instead of removing the engraver:

>     \omit StaffSymbol
>     \override NoteHead.no-ledgers = ##t

For the Known issues and warnings associated with `\Staff \RemoveEmptyStaves` see Changing context default settings.

其他语言：deutsch, español, français, italiano, 日本語。
About automatic language selection.

#### LilyPond — Notation Reference v2.18.2 (稳定分支).