3.3.1 LilyPond ファイルをインクルードする

大きなプロジェクトは別々のファイルに分割することができます。他のファイルを参照するには、以下のようにします:

\include "otherfile.ly"

\include "otherfile.ly" という行は、otherfile.ly の内容をカレント ファイルの \include がある場所に貼り付けるのと等価です。例えば、大きなプロジェクトでは、個々の楽器パートを別々のファイルで記述し、個々の楽器ファイルをまとめる “総譜” ファイルを作成することができます。通常、インクルードされるファイルはいくつかの変数を定義し、それらの変数は総譜ファイルの中で使用されます。インクルードされるファイルの中でタグ付きセクションにマークを付けて、それを楽譜の他の場所で使うことができます – 1 つのソースから異なる版を生成する を参照してください。

カレントのワーキング ディレクトリの中にあるファイルは \include コマンドに後にファイル名を指定するだけで参照することができます。他の場所にあるファイルはフル パス参照か相対パス参照 (ディレクトリ区切りとして、UNIX ではスラッシュ / を使用しますが、DOS/Windows ではバックスラッシュ \ を使用します) によって参照することができます。例えば、stuff.ly がカレントのワーキング ディレクトリよりも 1 つ上のディレクトリの中にある場合、以下のようにインクルードします:

\include "../stuff.ly"

あるいは、インクルードされるオーケストラのすべてのパート ファイルが、カレント ディレクトリ内部の parts というサブディレクトリの中に配置されている場合、以下のようにインクルードします:

\include "parts/VI.ly"
\include "parts/VII.ly"
… etc

インクルードされるファイルも \include 文を持つことができます。それら第 2 レベルの \include 文はそのファイルがメイン ファイルに組み込まれるまで解釈されません。そのため、第 2 レベルの \include 文で指定するファイル名はすべてメイン ファイルを保持しているディレクトリからの相対参照で指定しなければなりません – インクルード ファイルを保持しているディレクトリからではありません。しかしながら、この振る舞いは、オプション -drelative-includes をコマンド ラインで渡すことによって (あるいは、メイン入力ファイルの先頭に #(ly:set-option 'relative-includes #t) を付け加えることによって) グローバルに変更することができます。

relative-includes をセットした時、各 \include コマンドのパスはそのコマンドを保持しているファイルからの相対参照になります。この振る舞いを使用することが推奨されていて、lilypond の将来のバージョンではこの振る舞いがデフォルトになります。

relative-includes をファイル内の正しい位置で #t あるいは #f にセットすることで、メイン ディレクトリからの相対位置にあるファイルや、その他のディレクトリからの相対位置にあるファイルを同時に \include することができます。例えば、様々なファイルから使われるようなライブラリ libA のエントリ ポイントが、サブ ファイルを \include している場合、これらの \include 文の前に #(ly:set-option #relative-includes #t) を配置し、メインの .ly ファイルに読み込まれる時に、パスが正しく解釈されるようにします。このようになります:

libA/
  libA.ly
  A1.ly
  A2.ly
  …

エントリ ポイントとなるファイル libA.ly には以下の内容を含んでいます:

#(ly:set-option 'relative-includes #t)
\include "A1.ly"
\include "A2.ly"
…
% 通常の設定に戻します
#(ly:set-option 'relative-includes #f)

あとは以下の構文で、好きな .ly ファイルからライブラリ全体を読み込むことができます:

\include "~/libA/libA.ly"

さらに複雑なファイル構造も、設定を適切な場所で変更することによって扱うことができます。

コマンド ラインから LilyPond を呼び出すときにオプションとして指定したサーチ パスに含まれるディレクトリからファイルをインクルードすることもできます。サーチ パスを指定した場合、インクルードされるファイルはファイル名だけで指定されます。例えば、サーチ パスで指定する parts というサブディレクトリの中にあるファイルをインクルードする main.ly をコンパイルするには、main.ly を保持しているディレクトリに cd して、以下を入力します:

lilypond --include=parts main.ly

main.ly の中には以下を記述しておきます:

\include "VI.ly"
\include "VII.ly"
… etc

いくつもの楽譜でインクルードされるファイルは LilyPond ディレクトリ ../ly の中に置くことになるかもしれません (このディレクトリが存在する場所はインストールの仕方に依存します – Other sources of information を参照してください)。このディレクトリの中にあるファイルは、\include 文でファイル名を指定するだけでインクルードすることができます。この方法で english.ly のような言語依存のファイルをインクルードしています。

LilyPond は、実行開始時に、デフォルトでいくつかのファイルをインクルードします。このインクルードはユーザには明らかにされませんが、コマンド ラインから lilypond --verbose を実行することによってインクルードされるファイルを明らかにすることができます。--verbose オプションは、他の多くの情報とともに、LilyPond が使用するパスとファイルのリストを表示します。また、デフォルトでインクルードされるファイルのうち、より重要なファイルについて Other sources of information で議論されています。これらのファイルを編集することができますが、これらのファイルに加えられた変更は新しいバージョンの LilyPond をインストールすると失われます。

\include を使用している簡単な例がいくつか Scores and parts で示されています。

参照

学習マニュアル: Other sources of information, Scores and parts

既知の問題と警告

インクルードされるファイルに LilyPond のインストール ファイルと同じ名前が与えられている場合、LilyPond のインストール ファイルが優先されます。


LilyPond 記譜法リファレンス v2.25.22 (development-branch).