]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/usage/suggestions.itely
New upstream version 2.19.80
[lilypond.git] / Documentation / ja / usage / suggestions.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2
3 @ignore
4     Translation of GIT committish: 5fb3f8cf17ce7b57d22584429d736f188e4827d7
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.19.21"
12
13 @c Translators: Tomohiro Tatejima, Yoshiki Sawada
14 @c Translation status: post-GDP
15
16
17 @node LilyPond 入力ファイルの記述に対する提案
18 @chapter LilyPond 入力ファイルの記述に対する提案
19 @translationof Suggestions for writing files
20
21 今やあなたはもっと大きな LilyPond 入力ファイル -- チュートリアルにあるような@c
22 小さな例ではなく、楽曲全体 -- を書き始める準備が整っています。@c
23 しかしながら、どのように書き進めていくべきなのでしょうか?
24
25 LilyPond があなたの入力ファイルを理解でき、望みの出力を作り出している限り、@c
26 あなたの入力ファイルがどのようなものであるかは問題になりません。@c
27 しかしながら、LilyPond 入力ファイルを書いているときに考慮すべきことが@c
28 他にもいくつかあります。
29
30 @itemize
31 @item あなたがミスをしたとしたらどうでしょうか?@c
32 LilyPond ファイルの構造はエラーを見つけ出すことを@c
33 より容易に (あるいはより困難に) します。
34
35 @item あなたがあなたの入力ファイルを誰か他の人と共有したいとしたら@c
36 どうでしょうか?@c
37 実際には、あなたが数年前のあなた自身の入力ファイルを変更したいとしたら@c
38 どうでしょうか?@c
39 一読して理解可能な LilyPond 入力ファイルがある一方で、@c
40 あなたを 1 時間も悩ます入力ファイルもあるかもしれません。
41
42 @item あなたがあなたの LilyPond ファイルを最近のバージョンの LilyPond のために@c
43 アップグレードしたいとしたらどうでしょうか?@c
44 入力構文は LilyPond の改良に合わせてしばしば変更されます。@c
45 たいていの変更は @code{convert-ly} で自動的に変換できますが、@c
46 いくつかの変更は手動での援助を必要とするかもしれません。@c
47 LilyPond 入力ファイルはより容易に (あるいはより困難に)
48 更新できるように構成することができます。
49
50 @end itemize
51
52 @menu
53 * 一般的な提案::
54 * 既存の音楽を譜刻する::
55 * 大きなプロジェクト::
56 * トラブルシュート::
57 * Make と Makefile::
58 @end menu
59
60
61 @node 一般的な提案
62 @section 一般的な提案
63 @translationof General suggestions
64
65 ここで、譜刻の際に起こる、最もよくある問題を回避 (あるいは修正) する@c
66 手助けになりうる提案をいくつか挙げます:
67
68 @itemize
69 @item
70 どんなに小さいファイルでも、@strong{すべての入力ファイルに必ず
71 @code{@bs{}version} 番号を含めるべきです}。@c
72 これは、LilyPond のどのバージョンでファイルが作られたかを覚えておかなくて@c
73 良くなりますし、@ref{convert-ly を使ってファイルを更新する} の際に特に@c
74 関わってきます (convert-ly は @code{\version} が含まれている必要があります)。@c
75 あるいは他のユーザに入力ファイルを送る際 (例えばメーリング リストで助けを@c
76 得るとき) にも重要です。@c
77 テンプレートはすべて @code{@bs{}version} 情報を保持しているということに@c
78 注意してください。
79
80 @item
81 @strong{入力ファイル 1 行につき、1 小節の音楽を書きます}。 これは@c
82 入力ファイルに関するあらゆる問題のデバッグを簡単にします。
83
84 @item
85 @strong{@ruser{小節と小節番号のチェック}と@ruser{オクターブ チェック}を含めます。}@c
86 入力ファイルにこのような@q{チェック}を含めておくことで、@c
87 ミスを特定するのが早くなります。@c
88 チェックをどのぐらいの頻度で追加するかは、その音楽の複雑さ次第です。@c
89 簡単な音楽であれば、戦略上重要なポイントにいくつか追加するだけで十分でしょう。@c
90 しかし、多くの声部や譜を持つようなもっと複雑な音楽であれば、おそらく各小節に@c
91 チェックを入れたほうが良いでしょう。
92
93 @item
94 @strong{入力ファイルにコメントをつけます}。@c
95 コメントとして音楽テーマへの参照
96 (@q{ヴァイオリンの第 2 テーマ}, @q{第 4 変奏})
97 など) や、単純に小節番号を追加することは、@c
98 入力ファイルの中の場所を特定するのを簡単にします。特に後で何かを変更しなければ@c
99 ならない場合や、LilyPond 入力ファイルを他の人に渡す際には特に役立ちます。
100
101 @item
102 @strong{セクションの開始時に明示的に演奏時間を付け加えます}。@c
103 例えば、ただ @code{c d e f} と書く代わりに @code{c4 d e f} と書くことで、@c
104 後で音楽を再配置するのが簡単になります。
105
106 @item
107 @strong{波括弧と並列表記にインデントを施します}。問題はしばしば、@c
108 どちらかの括弧が@q{足りない}ことが原因です。波括弧の@q{始まり}と@q{終わり}
109 (あるいは @code{<<} と @code{>>}) に明確なインデントを追加することで、@c
110 このような問題を避けやすくなります。例えば以下の入力:
111
112 @example
113 \new Staff @{
114   \relative @{
115     r4 g'8 g c8 c4 d |
116     e4 r8 |
117     % Ossia section
118     <<
119       @{ f8 c c | @}
120       \new Staff @{
121         f8 f c |
122       @}
123     >>
124     r4 |
125   @}
126 @}
127 @end example
128
129 @noindent
130 は以下の入力より括弧の対応を追いかけやすいです:
131
132 @example
133 \new Staff @{ \relative @{ r4 g'8 g c4 c8 d | e4 r8
134 % Ossia section
135 << @{ f8 c c @} \new Staff @{ f8 f c @} >> r4 | @} @}
136 @end example
137
138 @item
139 @code{\layout} ブロックにオーバライドを追加することによって、@c
140 @strong{音楽とスタイルを分割します}:
141
142 @example
143 \score @{
144   @var{@dots{}music@dots{}}
145   \layout @{
146    \override TabStaff.Stemstencil = ##f
147  @}
148 @}
149 @end example
150
151 このオーバライドは新しいコンテキストを生成しませんが、@c
152 コンテキストが生成された際に適用されます。@c
153 @rlearning{変数と関数を用いて入力の手間を省く}や@c
154 @rlearning{スタイル シート}も参照してください。
155
156 @end itemize
157
158
159 @node 既存の音楽を譜刻する
160 @section 既存の音楽を譜刻する
161 @translationof Typesetting existing music
162
163 既存の楽譜からの音楽を入力している
164 (つまり、既存の楽譜の楽曲を譜刻している) のなら、
165
166 @itemize
167
168 @item 1 回につき 1 つのシステム
169 (訳者: システムとは譜の集まりのこと。例えば、ピアノ譜での 1 システムとは、@c
170 右手譜 1 小節とそれに対応する左手譜 1 小節)
171 を入力し (しかし、それでもテキスト 1 行につき 1 小節だけにします)、@c
172 それを終えたときに各システムをチェックします。@c
173 処理をスピード アップさせるために @code{showLastLength} プロパティや
174 @code{showFirstLength} プロパティを使うことになるかもしれません --
175 @ruser{Skipping corrected music} を参照してください。
176
177 @item @code{mBreak = @{ @bs{}break @}} を定義して、写している楽譜が@c
178 改行するたびに @code{@bs{}mBreak} を入力ファイルに挿入します。@c
179 これにより、LilyPond の音楽とオリジナルの音楽を比較することが@c
180 ずっと容易になります。@c
181 入力した楽譜の校正が終わったときに、それらの改行すべてを削除するために
182 @code{mBreak = @{ @}} を定義することになるかもしれません。@c
183 これにより、LilyPond は LilyPond が最適と思う場所に@c
184 改行を入れることができるようになります。
185
186 @item 移調楽器のパートは変数に入力します。@c
187 移調楽器の音符は以下で囲むことを推奨します:
188
189 @example
190 \transpose c natural-pitch @{@dots{}@}
191 @end example
192
193 @noindent
194 (@code{natural-pitch} はその楽器のオープン ピッチです)
195 これにより、変数の中の音楽は C で効率的に記述することができます。@c
196 変数を使用していれば、必要なときに移調しなおすこともできます
197 (例えば、楽譜をコンサート ピッチで譜刻したり、@c
198 トロンボーン パートをト音記号からヘ音記号に変換したり、など)。@c
199 音楽をすべて変数の中に首尾一貫したピッチで記述しておけば、@c
200 移調のミスは起こりにくくなります。
201
202 また、移調が C との間で行われるだけ
203 -- つまり、他に使用する調が楽器のナチュラル ピッチだけ:
204 B-フラット トランペットなら bes、@c
205 A-フラット クラリネットなら aes --
206 であるとしても、音楽を変数に格納しておくべきです。@c
207
208 @end itemize
209
210
211 @node 大きなプロジェクト
212 @section 大きなプロジェクト
213 @translationof Large projects
214
215 大きなプロジェクトに取り組んでいるとき、@c
216 LilyPond 入力ファイルの構造をすっきりさせておくことが不可欠です。
217
218 @itemize
219
220 @item @strong{各ボイスに対して変数を使用して}、@c
221 定義の中の構造を最小限にします。@c
222 @code{@bs{}score} セクションの構造が最も変更される可能性が高い箇所です。@c
223 一方、@code{violin} 定義は LilyPond のバージョンが新しくなっても@c
224 変更される可能性はまずありません。
225
226 @example
227 violin = \relative @{
228 g'4 c'8. e16
229 @}
230 @dots{}
231 \score @{
232   \new GrandStaff @{
233     \new Staff @{
234       \violin
235     @}
236   @}
237 @}
238 @end example
239
240 @item @strong{調整を音楽定義から分離します}。@c
241 このことは前にも触れましたが、大きなプロジェクトでは絶対に不可欠なことです。@c
242 @code{fthenp} の定義を変更する必要が生じた場合、変更は 1 回で済み、@c
243 @code{violin} の内部にはまったく手を触れる必要がありません。
244
245 @example
246 fthenp = _\markup@{
247   \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
248 violin = \relative @{
249 g'4\fthenp c'8. e16
250 @}
251 @end example
252
253 @end itemize
254
255
256 @node トラブルシュート
257 @section トラブルシュート
258 @translationof Troubleshooting
259
260 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
261 書くことになります。@c
262 LilyPond が返すメッセージはエラーを見つけ出す@c
263 手助けになるかもしれませんが、多くの場合、@c
264 問題の原因を探し出すために調査を行う必要があります。
265
266 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
267 ブロック コメント (@code{%@{@dots{}%@}} で記述します) です。@c
268 問題がどこにあるかわからない場合、@c
269 入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
270 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
271 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。@c
272 コンパイルが通らなかった場合は、コンパイルが通るようになるまで@c
273 コメント アウトしたままにしておきます。
274
275 極端な場合、最終的に以下のようになるかもしれません:
276
277 @example
278 \score @{
279   <<
280     % \melody
281     % \harmony
282     % \bass
283   >>
284   \layout@{@}
285 @}
286 @end example
287
288 @noindent
289 (言い換えると、何の音楽も持たないファイルです)
290
291 こうなったとしても、あきらめないでください。@c
292 少しだけコメントを外して -- 例えば、バス パートを --
293 コンパイルが通るかどうか試してみます。@c
294 コンパイルが通らなかった場合は、バスの音楽をすべてコメント アウトします
295 (しかし、@code{@bs{}score} の中の @code{@bs{}bass} はコメントを@c
296 外したままにしておきます)。
297
298 @example
299 bass = \relative @{
300 %@{
301   c'4 c c c
302   d d d d
303 %@}
304 @}
305 @end example
306
307 そして、問題を起こしている行を見つけ出すまで、@c
308 @code{bass} パートから少しずつコメントを外していきます。
309
310 もう 1 つの非常に有用なデバッグ テクニックは
311 @rweb{Tiny examples} を構築することです。
312
313
314 @node Make と Makefile
315 @section Make と Makefile
316 @translationof Make and Makefiles
317
318 @cindex makefiles
319 @cindex make
320
321 LilyPond を実行できるほとんどすべてのプラットフォームが
322 @code{make} というソフトウェアをサポートします。@c
323 このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
324 ファイル @code{Makefile} は、@c
325 ファイルの依存関係と、@c
326 あるファイルから別のファイルを作り出すために@c
327 オペレーティング システムに渡す必要があるコマンドを定義します。@c
328 例えば、@code{Makefile} は LilyPond を実行して
329 @code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
330 作り出す方法を記述します。
331
332 自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
333 自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
334 これが当てはまるのは、@c
335 多くのインクルード ファイルと複数の出力オプション
336 (例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
337 非常に大きなプロジェクト、あるいは、@c
338 ビルドするために複雑なコマンドを必要とするプロジェクト
339 (@code{lilypond-book} プロジェクトなど)
340 です。@c
341 @code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
342 さまざまです。@c
343 プログラム GNU Make は
344 GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
345 Windows でも利用可能です。
346
347 @code{make} の使い方についてのすべての詳細は
348 @strong{GNU Make マニュアル} を参照してください。@c
349 これから示すのは @code{make} でできることのほんの一例です。
350
351 @code{Makefile} の中に規則を定義するためのコマンドは、@c
352 プラットフォームによって異なります。@c
353 例えば、さまざまな種類がある GNU/Linux と MacOS は @code{bash} を@c
354 使いますが、Windows は @code{cmd} を使います。@c
355 MacOS X では、コマンド ライン インタプリタを使用するためにシステムを@c
356 コンフィグレーションする必要があるということに注意してください。@c
357 ここで、@code{Makefile} の例をいくつか
358 GNU/Linux/MacOS 用と Windows 用の両方のバージョンで示します。
359
360 最初の例は、4 楽章のオーケストラのためのもので、@c
361 以下のようなディレクトリ構造を持ちます:
362
363 @example
364 Symphony/
365 |-- MIDI/
366 |-- Makefile
367 |-- Notes/
368 |   |-- cello.ily
369 |   |-- figures.ily
370 |   |-- horn.ily
371 |   |-- oboe.ily
372 |   |-- trioString.ily
373 |   |-- viola.ily
374 |   |-- violinOne.ily
375 |   `-- violinTwo.ily
376 |-- PDF/
377 |-- Parts/
378 |   |-- symphony-cello.ly
379 |   |-- symphony-horn.ly
380 |   |-- symphony-oboes.ly
381 |   |-- symphony-viola.ly
382 |   |-- symphony-violinOne.ly
383 |   `-- symphony-violinTwo.ly
384 |-- Scores/
385 |   |-- symphony.ly
386 |   |-- symphonyI.ly
387 |   |-- symphonyII.ly
388 |   |-- symphonyIII.ly
389 |   `-- symphonyIV.ly
390 `-- symphonyDefs.ily
391 @end example
392
393 @code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある
394 @code{.ly} ファイルは音符を
395 @code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
396
397 @example
398 %%% top of file "symphony-cello.ly"
399 \include ../symphonyDefs.ily
400 \include ../Notes/cello.ily
401 @end example
402
403 この @code{Makefile} はターゲットとして
404 @code{score} (フル スコアの楽曲全体)、@c
405 @code{movements} (フル スコアの個々の楽章)、@c
406 それに @code{parts} (演奏者のための個々のパート) を持ちます。@c
407 さらに、web や email で配布するのに適したソース ファイルの tarball
408 (訳者: 複数のファイルをコマンド @code{tar} で 1 つのファイルにまとめたもの)
409 を作成するターゲット @code{archive} もあります。@c
410 ここでは GNU/Linux や MacOS X 用の @code{Makefile} を示します。@c
411 これをプロジェクトのトップ ディレクトリに
412 @code{Makefile} という名前で保存する必要があります:
413
414 @warning{ターゲットやパターン ルールが定義されたとき、@c
415 そのあとの行はスペースではなく Tab で始まる必要があります。}
416
417 @example
418 # 出力ファイル名
419 piece = symphony
420 # いくつプロセッサがあるかを決定します
421 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
422 # lilypond を実行するコマンド
423 LILY_CMD = lilypond -ddelete-intermediate-files \
424                     -dno-point-and-click -djob-count=$(CPU_CORES)
425
426 # この Makefile で使用される拡張子
427 .SUFFIXES: .ly .ily .pdf .midi
428
429 # 入力ファイルと出力ファイルのサーチは VPATH 変数でリストアップされている
430 # ディレクトリの中で行われます。それらのディレクトリはすべて (GNU make 変数
431 # `CURDIR' によって与えられる) カレント ディレクトリのサブディレクトリです。
432 VPATH = \
433   $(CURDIR)/Scores \
434   $(CURDIR)/PDF \
435   $(CURDIR)/Parts \
436   $(CURDIR)/Notes
437
438 # LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
439 # パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
440 # 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
441 %.pdf %.midi: %.ly
442         $(LILY_CMD) $<; \           # this line begins with a tab
443         if test -f "$*.pdf"; then \
444             mv "$*.pdf" PDF/; \
445         fi; \
446         if test -f "$*.midi"; then \
447             mv "$*.midi" MIDI/; \
448         fi
449
450 notes = \
451   cello.ily \
452   horn.ily \
453   oboe.ily \
454   viola.ily \
455   violinOne.ily \
456   violinTwo.ily
457
458 # 楽章の依存関係
459 $(piece)I.pdf: $(piece)I.ly $(notes)
460 $(piece)II.pdf: $(piece)II.ly $(notes)
461 $(piece)III.pdf: $(piece)III.ly $(notes)
462 $(piece)IV.pdf: $(piece)IV.ly $(notes)
463
464 # 総譜の依存関係
465 $(piece).pdf: $(piece).ly $(notes)
466
467 # パート譜の依存関係
468 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
469 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
470 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
471 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
472 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
473 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
474
475 # 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
476 # `make score' とタイプします。
477 .PHONY: score
478 score: $(piece).pdf
479
480 # すべてのパートを生成するには `make parts' とタイプします。
481 # 楽器 `foo' のためのパートを生成するには `make foo.pdf' とタイプします。
482 # 例: `make symphony-cello.pdf'
483 .PHONY: parts
484 parts: $(piece)-cello.pdf \
485        $(piece)-violinOne.pdf \
486        $(piece)-violinTwo.pdf \
487        $(piece)-viola.pdf \
488        $(piece)-oboes.pdf \
489        $(piece)-horn.pdf
490
491 # 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
492 .PHONY: movements
493 movements: $(piece)I.pdf \
494            $(piece)II.pdf \
495            $(piece)III.pdf \
496            $(piece)IV.pdf
497
498 all: score parts movements
499
500 archive:
501         tar -cvvf stamitz.tar \       # this line begins with a tab
502         --exclude=*pdf --exclude=*~ \
503         --exclude=*midi --exclude=*.tar \
504         ../Stamitz/*
505 @end example
506
507
508 Windows プラットフォームには特別な面倒さがあります。@c
509 Windows 用の GNU Make をダウンロードしてインストールした後、@c
510 システム環境変数に正しいパスを設定して、@c
511 DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
512 これを行うには、@c
513 "マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
514 それから @code{詳細設定} を選択します。@c
515 それから @code{環境変数} をクリックして、@c
516 @code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
517 @code{編集} をクリックして、@c
518 GNU Make の実行ファイルへのパスを追加します。@c
519 そのパスは以下のようになります
520 (訳者: GNU Make のインストールのされ方によって異なります):
521
522 @example
523 C:\Program Files\GnuWin32\bin
524 @end example
525
526 Linux/MacOS X とは異なるシェル コマンドを扱い、@c
527 いくつかのデフォルト システム ディレクトリの中に存在する@c
528 ファイル空間を扱うために、@c
529 @code{Makefile} 自体を変更する必要があります。@c
530 Windows は @code{tar} コマンドを持たないため、@c
531 @code{archive} ターゲットは除去されます。@c
532 また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
533
534 @example
535 ## WINDOWS VERSION
536 ##
537 piece = symphony
538 LILY_CMD = lilypond -ddelete-intermediate-files \
539                     -dno-point-and-click \
540                     -djob-count=$(NUMBER_OF_PROCESSORS)
541
542 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
543 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
544           do @@echo %%~sb)
545
546 .SUFFIXES: .ly .ily .pdf .mid
547
548 VPATH = \
549   $(workdir)/Scores \
550   $(workdir)/PDF \
551   $(workdir)/Parts \
552   $(workdir)/Notes
553
554 %.pdf %.mid: %.ly
555         $(LILY_CMD) $<      # this line begins with a tab
556         if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # begin with tab
557         if exist "$*.mid" move /Y "$*.mid" MIDI/  # begin with tab
558
559 notes = \
560   cello.ily \
561   figures.ily \
562   horn.ily \
563   oboe.ily \
564   trioString.ily \
565   viola.ily \
566   violinOne.ily \
567   violinTwo.ily
568
569 $(piece)I.pdf: $(piece)I.ly $(notes)
570 $(piece)II.pdf: $(piece)II.ly $(notes)
571 $(piece)III.pdf: $(piece)III.ly $(notes)
572 $(piece)IV.pdf: $(piece)IV.ly $(notes)
573
574 $(piece).pdf: $(piece).ly $(notes)
575
576 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
577 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
578 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
579 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
580 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
581 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
582
583 .PHONY: score
584 score: $(piece).pdf
585
586 .PHONY: parts
587 parts: $(piece)-cello.pdf \
588        $(piece)-violinOne.pdf \
589        $(piece)-violinTwo.pdf \
590        $(piece)-viola.pdf \
591        $(piece)-oboes.pdf \
592        $(piece)-horn.pdf
593
594 .PHONY: movements
595 movements: $(piece)I.pdf \
596            $(piece)II.pdf \
597            $(piece)III.pdf \
598            $(piece)IV.pdf
599
600 all: score parts movements
601 @end example
602
603
604 次の @code{Makefile} は、@c
605 LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
606 このドキュメントは目次を持ちます。@c
607 目次を作成するには、@c
608 リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
609 .pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
610 HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
611
612 @example
613 SHELL=/bin/sh
614 FILE=myproject
615 OUTDIR=out
616 WEBDIR=htmlout
617 VIEWER=acroread
618 BROWSER=firefox
619 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
620 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
621 PDF=cd $(OUTDIR) && pdflatex $(FILE)
622 HTML=cd $(WEBDIR) && latex2html $(FILE)
623 INDEX=cd $(OUTDIR) && makeindex $(FILE)
624 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
625
626 all: pdf web keep
627
628 pdf:
629         $(LILYBOOK_PDF)  # begin with tab
630         $(PDF)           # begin with tab
631         $(INDEX)         # begin with tab
632         $(PDF)           # begin with tab
633         $(PREVIEW)       # begin with tab
634
635 web:
636         $(LILYBOOK_HTML) # begin with tab
637         $(HTML)          # begin with tab
638         cp -R $(WEBDIR)/$(FILE)/ ./  # begin with tab
639         $(BROWSER) $(FILE)/$(FILE).html &  # begin with tab
640
641 keep: pdf
642         cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # begin with tab
643
644 clean:
645         rm -rf $(OUTDIR) # begin with tab
646
647 web-clean:
648         rm -rf $(WEBDIR) # begin with tab
649
650 archive:
651         tar -cvvf myproject.tar \ # begin this line with tab
652         --exclude=out/* \
653         --exclude=htmlout/* \
654         --exclude=myproject/* \
655         --exclude=*midi \
656         --exclude=*pdf \
657         --exclude=*~ \
658         ../MyProject/*
659 @end example
660
661 TODO: make this thing work on Windows
662
663 この @code{Makefile} は Windows では機能しません。@c
664 Windows ユーザの代替手段として、@c
665 ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
666 これは @code{Makefile} のように依存関係を保持できませんが、@c
667 少なくともビルド処理を単一のコマンドに縮小します。@c
668 以下のコードを
669 @command{build.bat} あるいは @command{build.cmd} として保存してください。@c
670 このバッチ ファイルは DOS プロンプトから実行することができ、@c
671 単にそのアイコンをダブル クリックすることでも実行することができます。
672
673 @example
674 lilypond-book --output=out --pdf myproject.lytex
675 cd out
676 pdflatex myproject
677 makeindex myproject
678 pdflatex myproject
679 cd ..
680 copy out\myproject.pdf MyProject.pdf
681 @end example
682
683
684 @seealso
685 アプリケーションの使用方法:
686 @rprogram{コマンド ラインの使用方法},
687 @rprogram{lilypond-book}