[ << 入出力全般 ] | [Top][Contents][Index] | [ スペースの問題 >> ] |
[ < 入力ファイルに取り組む ] | [ Up : 入力ファイルに取り組む ] | [ 1 つのソースから異なる版を生成する > ] |
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 のインストール ファイルが優先されます。
[ << 入出力全般 ] | [Top][Contents][Index] | [ スペースの問題 >> ] |
[ < 入力ファイルに取り組む ] | [ Up : 入力ファイルに取り組む ] | [ 1 つのソースから異なる版を生成する > ] |