LilyPond 記譜法リファレンス: 3.1.5 ファイル構造

### 3.1.5 ファイル構造

‘`.ly`’ ファイルは最上位の表記を任意の数だけ保持することができます – ここで、最上位の表記とは以下の中の 1 つです:

- `\paper`, `\midi`, `\layout` などの出力定義。最上位にある出力定義はブック全体のデフォルト設定を変更します。最上位に同じタイプの出力定義が複数ある場合は組み合わされますが、衝突した場合は後ろの方にある出力定義が優先されます。出力定義が `\layout` ブロックにどのような影響を与えるかの詳細は `\layout` ブロック を参照してください。
- `#(set-default-paper-size "a7" 'landscape)` や `#(ly:set-option 'point-and-click #f)` などの Scheme 表記。
- `\header` ブロック。これはグローバル (ファイル構造の最上位) ヘッダ ブロックになります。このブロックは、ファイル内にある全てのブックにおける、作曲者、曲名といったタイトル フィールドのデフォルト設定を持ちます (タイトルの説明を参照してください)。
- `\score` ブロック。このスコアは他の最上位のスコアとともに単一の `\book` にまとめられます。この振る舞いは、変数 `toplevel-score-handler` を最上位の階層で設定することによって、変更することができます。(デフォルトのハンドラはファイル ‘`../scm/lily-library.scm`’ で定義され、‘`../ly/declarations-init.ly`’ でセットされています。)
- `\book` ブロックは複数の楽章 (すなわち、複数の `\score` ブロック) を論理的に 1 つのドキュメントにまとめます。複数の `\score` が存在する場合、それぞれの `\book` ブロックに対して 1 つずつ出力ファイルが作成され、それぞれの出力ファイルの中では該当するすべての楽章が連結されます。‘`.ly`’ ファイルの中で明示的に `\book` ブロックを指定する必要があるケースはただ 1 つ、単一の入力ファイルから複数の出力ファイルを作成することを望む場合です。例外の 1 つに lilypond-book ドキュメントがあります – そこでは、同じ例の中に複数の `\socre` あるいは `\markup` を配置したければ、明示的に `\book` ブロックを追加する必要があります。この振る舞いは、変数 `toplevel-score-handler` を最上位の階層で設定することによって、変更することができます。デフォルトのハンドラは初期化ファイル ‘`../scm/lily.scm`’ で定義されています。
- `\bookpart` ブロック。改ページを簡単にするため、あるいは異なるパートで別々の `\paper` 設定を使用するために、ブックは – `\bookpart` を用いて – いくつかのパートに分割される可能性があります。
- 以下のような複合音楽表記:

  >     { c'4 d' e'2 }

  これは楽節を `\score` に付け加え、その楽節を他のすべての最上位 `\score` や音楽表記とともに単一のブックにフォーマットにします。言い換えると、上記の音楽表記だけを保持しているファイルは以下のように翻訳されます:

  >     \book {
  >       \score {
  >         \new Staff {
  >           \new Voice {
  >             { c'4 d' e'2 }
  >           }
  >         }
  >         \layout { }
  >       }
  >       \paper { }
  >       \header { }
  >     }

  この振る舞いは、変数 `toplevel-score-handler` を最上位の階層で設定することによって、変更することができます。デフォルトのハンドラは初期化ファイル ‘`../scm/lily.scm`’ で定義されています。

- マークアップ テキスト。例として以下の歌詞を挙げます:

  >     \markup {
  >        2.  The first line verse two.
  >     }

  マークアップ テキストは、それが出現した場所で、スコアあるいは音楽表記の上、間、あるいは下に描かれます。

- 以下のような変数:

  >     foo = { c4 d e d }

  これは後で使用することができます。使用するには、入力ファイルの中で `\foo` と入力します。変数の名前は、(ASCII) 数字、複数のアンダスコア、複数のダッシュまたはスペースを含めないようにすべきです。Unicode が提供する他のすべての文字、例えばラテン文字、ギリシャ文字、中国語、キリル文字はすべて許可されます。隣接しない 1 つのアンダスコアやダッシュも許可されます。言い換えると、`HornIII` や `αβγXII` のような変数名は機能します。

  ダブル クォーテーションに囲まれた変数名は、すべての文字の組み合わせが許可されます。この場合、バックスラッシュとダブル クォーテーションはバックスラッシュでエスケープする必要があります (これらは実際に使うべきではありません) 。例: `"foo bar"`, `"a-b-c"`, `"Horn 3"`

以下の例は最上位の階層で入力される可能性がある 3 つのものを示しています:

>     \layout {
>       % Don't justify the output
>       ragged-right = ##t
>     }

>     \header {
>        title = "Do-re-mi"
>     }

>     { c'4 d' e2 }

ファイルの任意の場所で、以下の編集指示のいずれかが入力される可能性があります:

- `\version`
- `\include`
- `\sourcefilename`
- `\sourcefileline`
- `%` 記号で始まる単一行コメント。
- `%{ … %}` で囲まれる複数行コメント。

通常、入力の要素間にある空白は無視され、可読性を良くするために自由に削除あるいは追加することができます。しかしながら、以下の状況ではエラーを避けるために空白を挿入する必要があります:

- 波括弧の前後。
- コマンドあるいは変数 – すなわち、`\` 記号で始まる要素 – の後。
- Scheme 表記として解釈される要素 – すなわち、`#` 記号で始まる要素 – の後。
- Scheme 表記要素を区切る空白。
- `lyricmode` 中にある `\set` と `\override` コマンドの前後。

#### 参照

学習マニュアル: How LilyPond input files work

記譜法リファレンス: タイトルの説明, `\layout` ブロック

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

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