LilyPond 記譜法リファレンス: 5.1.7 コンテキストの配置順序

### 5.1.7 コンテキストの配置順序

通常、コンテキストは入力ファイルの中で記述した順に楽譜の段の上から下に配置されます。コンテキストがネストされている場合、外側のコンテキストは入力ファイルの中で指定されたコンテキストを内側に保持して、内側のコンテキストは外側のコンテキストの “accepts” リストに含まれます。ネストされたコンテキストのうち外側のコンテキストの “accepts” リストに含まれないものは、ネストされずに外側のコンテキストの下に再配置されます。

コンテキストの “accepts” リストを `\accepts` コマンドや `\denies` コマンドで変更することができます。`\accepts` はコンテキストを “accepts” リストに追加して、`\denies` は “accepts” リストからコンテキストを削除します。

例えば、角括弧でグループ化された譜表は通常、波括弧でグループ化され小節線が繋げられる譜表グループの中にあることは通常見られず、デフォルトで `GrandStaff` は内部に `StaffGroup` を含めることができません。

>     \score {
>       \new GrandStaff <<
>         \new StaffGroup <<
>           \new Staff { c'1 }
>           \new Staff { d'1 }
>         >>
>         \new Staff { \set Staff.instrumentName = bottom f'1 }
>       >>
>     }

しかし、`\accepts` コマンドを使うことで、`StaffGroup` を`GrandStaff` コンテキストの中に含めることができます:

>     \score {
>       \new GrandStaff <<
>         \new StaffGroup <<
>           \new Staff { c'1 }
>           \new Staff { d'1 }
>         >>
>         \new Staff { \set Staff.instrumentName = bottom f'1 }
>       >>
>       \layout {
>         \context {
>           \GrandStaff
>           \accepts StaffGroup
>         }
>       }
>     }

`\denies` は主に、他のコンテキストをベースに新しいコンテキストを作成した時に、中にネストするコンテキストを変更するために用いられます。例えば、`VaticanaStaff` コンテキストは `Staff` コンテキストをベースにしていますが、“accepts” リストでは `Voice` コンテキストの代わりに `VaticanaVoice` コンテキストを保持しています。

コンテキストに保持されるべきコマンドが出現して、それを保持するための適切なコンテキストが存在しない場合、コンテキストが暗黙的に作成されるということに注意してください。

コンテキスト定義の中で、暗黙的に作り出されるサブコンテキストの種類は `\defaultchild` により指定されます。多くの音楽イベントは最下位 (‘`Bottom`’) のコンテキストが必要です。そのようなイベントが現れた場合、‘`defaultchild`’ 設定を持たないコンテキストに到達するまで、再帰的にサブコンテキストが作られます。

暗黙的にコンテキストが生成されることによって、予期しない譜や楽譜が生み出される可能性があります。`\new` で明示的にコンテキストを作ることでこれらの問題を回避できます。

短い期間、あるコンテキストを存在させる必要がある場合があります。オッシアの譜コンテキストが良い例です。通常、これは主音楽の対応するセクションと並列に、適切な場所でコンテキスト定義を行うことで実現します。デフォルトでは、一時コンテキストは既存のすべてのコンテキストの下に配置されます。“main” というコンテキストの上に配置し直すには以下のようにします:

>     \new Staff \with { alignAboveContext = "main" }

`ChoirStaff` のような複数の譜のレイアウトで一時的な歌詞を配置する場合 – 例えば、繰り返しセクションに 2 番目の歌詞を追加する場合 – にも同様な状況が発生します。デフォルトでは、一時的な歌詞は下段の譜の下に配置されます。一時的な歌詞コンテキストを `alignBelowContext` で定義することにより、1 番目の歌詞を保持する (名前付きの) 歌詞コンテキストの下に配置することができます。

一時コンテキストを再配置する例は他にもあります – Nesting music expressions、+個々の譜を変更する、それに 歌詞に特有のテクニック を参照してください。

#### 参照

学習マニュアル: Nesting music expressions

記譜法リファレンス: 個々の譜を変更する, 歌詞に特有のテクニック

アプリケーション使用方法: An extra staff appears

インストールされているファイル: ‘`ly/engraver-init.ly`’

#### LilyPond — 記譜法リファレンス v2.24.4 (安定版).

- 2. 専門的な記譜法
- 3. 入出力全般
- 4. スペースの問題
- 5. デフォルトを変更する
- A. 付表
- B. カンニング ペーパー
- C. GNU Free Documentation License
- D. LilyPond コマンド インデックス
- E. LilyPond インデックス