]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/application/working.itely
Docs: update Japanese LM and AU
[lilypond.git] / Documentation / ja / application / working.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2
3 @ignore
4     Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.12.0"
11
12
13 @c Translators: Yoshiki Sawada
14 @c Translation status: post-GDP
15
16
17 @node LilyPond プロジェクトに取り組む
18 @chapter LilyPond プロジェクトに取り組む
19 @translationof Working on LilyPond projects
20
21 このセクションでは一般的な問題のいくつかを@c
22 解決または回避する方法について説明します。@c
23 あなたにプログラミングの経験があるのなら、@c
24 ここで取り上げる TIPS の多くは当たり前のことに見えるかもしれませんが、@c
25 それでも本章を読むことをお勧めします。
26
27 @menu
28 * うまくいかないとき::
29 * Make と Makefile::
30 @end menu
31
32
33 @node うまくいかないとき
34 @section うまくいかないとき
35 @translationof When things don't work
36
37 @menu
38 * 古い入力ファイルをアップデートする::
39 * 一般的なエラー::
40 * トラブルシューティング (すべてをバラバラにする)::
41 * 最小化例::
42 @end menu
43
44
45 @node 古い入力ファイルをアップデートする
46 @subsection 古い入力ファイルをアップデートする
47 @translationof Updating old input files
48
49 @cindex convert-ly
50 @cindex updating old input files (ふるい入力ファイルをアップデートする)
51
52 LilyPond 入力構文はしばしば変更されます。@c
53 LilyPond 自体の改良に合わせて、構文 (入力言語) も変更されます。@c
54 これらの変更は@c
55 入力を読みやすく/書きやすくするために行われる場合もありますし、@c
56 LilyPond の新しい機能のために行われる場合もあります。
57
58 LilyPond は、このアップデートをより容易にするファイル 
59 -- @code{convert-ly} -- と一緒に公開されます。@c
60 このプログラムの実行方法についての詳細は 
61 @rprogram{convert-ly を使ってファイルを更新する} を参照してください。
62
63 残念なことに、@code{convert-ly} はすべての入力構文の変更を@c
64 処理できるわけではありません。@c
65 単純な探索-置換 
66 (@code{raggedright} が @code{ragged-right} になったなど) 
67 は処理しますが、@c
68 複雑すぎる変更もあります。@c
69 @code{convert-ly} が処理できない構文の変更は 
70 @rprogram{convert-ly を使ってファイルを更新する} にリストアップされています。
71
72 例えば、LilyPond 2.4 以前では、アクセントと非英語文字 
73 -- 例えば、@code{No@bs{}"el} 
74 (これは @q{クリスマス} に対応するフランス語となります) -- は 
75 LaTex を使って入力していました。@c
76 LilyPond 2.6 以降では、@c
77 特殊文字 @code{ë} を UTF-8 キャラクタとして@c
78 直接 LilyPond ファイルに入力するようになりました。@c
79 @code{convert-ly} はすべての LaTex 特殊文字を 
80 UTF-8 キャラクタに変更することはできません。@c
81 その場合、あなたが手動で古い LilyPond 入力ファイルを@c
82 アップデートする必要があります。
83
84
85 @node 一般的なエラー
86 @subsection 一般的なエラー
87 @translationof Common errors
88
89 以下で記述するエラーがしばしば起こりますが、@c
90 その原因は明白でなかったり、@c
91 簡単には見つからなかったりします。@c
92 一旦それらのエラーを経験して理解すれば、@c
93 それらの処理は簡単です。
94
95
96 @menu
97 * 音楽がページからはみ出す::
98 * 余計な譜が出現する::
99 * 見かけ上 ../ly/init.ly に発生するエラー::
100 * エラー メッセージ Unbound variable %::
101 * エラー メッセージ FT_Get_Glyph_Name::
102 @end menu
103
104 @node 音楽がページからはみ出す
105 @unnumberedsubsubsec 音楽がページからはみ出す
106 @translationof Music runs off the page
107
108 右の余白にはみ出した音楽や、過度に密集した音楽の原因は@c
109 ほとんどすべて音符の演奏時間を不適切に入力して、@c
110 小節の最後の音符が小節線を越えたためです。@c
111 小節の最後の音符が自動的に挿入される小節線のところで終わっていなくても@c
112 無効ではありません。@c
113 なぜなら、その音符は単に次の小節に持ち越すと見なされるからです。@c
114 しかしながら、そのような持ち越しの小節が長く続くと、@c
115 音楽は密集したり、ページからはみ出す可能性があります。@c
116 なぜなら、自動改行を挿入できるのは完全な小節 
117 -- つまり、すべての音符がその小節の終端までに終わっている小節 --
118 の終端だけだからです。
119
120 @warning{不適切な演奏時間は自動改行を抑制し、@c
121 その行の音楽は密集したり、ページからはみ出します。}
122
123 小節チェックを使うと不適切な演奏時間を簡単に見つけ出すことができます
124 -- @ruser{Bar and bar number checks} を参照してください。
125 @c -- @ruser{小節と小節番号チェック} を参照してください。
126
127 長く続く持ち越しの小節を持とうとするならば、@c
128 改行したいところに不可視の小節線を挿入する必要があります。@c
129 詳細は @ruser{Bar lines} を参照してください。
130 @c 詳細は @ruser{小節線} を参照してください。
131
132
133 @node 余計な譜が出現する
134 @unnumberedsubsubsec 余計な譜が出現する
135 @translationof An extra staff appears
136
137 コンテキストが @code{\new} で明示的に作成されてはいない場合、@c
138 すでに存在しているコンテキストには適用できないコマンドが発生すると@c
139 沈黙のうちにコンテキストが作成されます。@c
140 簡単な楽譜ではコンテキストの自動作成機能は有用であり、@c
141 この LilyPond マニュアルの中の例の大半がこの機能を利用しています。@c
142 しかしながら、@c
143 時々このコンテキスト自動作成機能が予期せぬ譜や楽譜を発生させます。@c
144 例えば、以下のコードはその後に続く譜の中にある符頭をすべて赤くすると@c
145 予期したものかもしれませんが、@c
146 実際のところ、その結果は 2 つの譜となり、@c
147 下側の譜の中の符頭はデフォルトの黒のままです。
148
149 @lilypond[quote,verbatim,relative=2]
150 \override Staff.NoteHead #'color = #red
151 \new Staff { a }
152 @end lilypond
153
154 こうなった原因は、@c
155 オーバライドが処理されたときに 
156 @code{Staff} コンテキストは存在しなかったためです。@c
157 そのため、@code{Staff} コンテキストが 1 つ暗黙的に作成され、@c
158 オーバライドはそのコンテキストに適用されます。@c
159 それから、@code{\new Staff} コマンドがもう 1 つ別の譜を作成し、@c
160 音符はそこに配置されます。@c
161 すべての符頭を赤くするための正しいコードは以下のようになります:
162
163 @lilypond[quote,verbatim,relative=2]
164 \new Staff {
165   \override Staff.NoteHead #'color = #red
166   a
167 }
168 @end lilypond
169
170 次の例として、@c
171 @code{\relative} コマンドが @code{\repeat} コマンドの中にある場合、@c
172 2 つの譜が生成され、2 番目の譜は 1 番目の譜からずれます。@c
173 なぜなら、@c
174 @code{\repeat} コマンドは 2 つの @code{\relative} ブロックを生成し、@c
175 それぞれのブロックは暗黙的に @code{Staff} ブロックと @code{\Voice} ブロックを@c
176 作成するからです。
177
178 @lilypond[quote,verbatim]
179 \repeat unfold 2 \relative { c d e f }
180 @end lilypond
181
182 正しい結果を得るには、@c
183 以下のように 
184 @code{\repeat} コマンドと @code{j\relative} コマンドの位置を入れ換えます:
185
186 @lilypond[quote,verbatim]
187 \relative {
188   \repeat unfold 2 { c d e f }
189 }
190 @end lilypond
191
192
193 @node 見かけ上 ../ly/init.ly に発生するエラー
194 @unnumberedsubsubsec 見かけ上 @code{../ly/init.ly} に発生するエラー
195 @translationof Apparent error in ../ly/init.ly
196
197 入力ファイルの形式が正しくない場合、@c
198 @code{../ly/init.ly} の中に構文エラーがあるという内容の@c
199 さまざまな原因が不明瞭なエラー メッセージが表示される可能性があります。@c
200 例えば、入力ファイルの中で括弧やクォートが対になっていない場合に、@c
201 そのようなエラーが発生します。
202
203 最も一般的なエラーは @code{score} ブロックの最後に@c
204 波括弧 (@code{@}}) が無いというエラーです。@c
205 その解決法は明白です:
206 @code{score} ブロックが正しく終わっていることをチェックしてください。@c
207 入力ファイルの正しい構造は @rlearning{LilyPond 入力ファイルの仕組み} で@c
208 記述しています。@c
209 角括弧と波括弧の対を自動的にハイライトするエディタを使用すると@c
210 そのようなエラーを防ぐのに役立ちます。
211
212 次に一般的なエラーの原因は@c
213 歌詞ブロックの最後の音節と閉じ波括弧 (@code{@}}) の間にスペースが@c
214 無いという場合です。@c
215 このスペースが無いと、@c
216 閉じ波括弧は音節の一部になってしまいます。@c
217 常に @emph{すべての} 中括弧の前後にスペースを置くことをお勧めします。@c
218 これは歌詞を使用するときに重要になります
219 -- @ruser{Lyrics explained} を参照してください。
220 @c -- @ruser{歌詞の説明} を参照してください。
221
222 このエラー メッセージは、@c
223 クォート (@code{"}) を閉じることを忘れた場合にも発生します。@c
224 そのような場合、@c
225 付随するエラー メッセージがエラーを起こした行の行番号を提示します。@c
226 対になっていないクォートは通常 1 行あるいは 2 行上にあります。
227
228
229 @node エラー メッセージ Unbound variable %
230 @unnumberedsubsubsec エラー メッセージ Unbound variable %
231 @translationof Error message Unbound variable %
232
233 @emph{Scheme} コメントではなく @emph{LilyPond} コメントを@c
234 保持している Scheme ルーチン 
235 (このような Scheme は無効です) 
236 が呼び出されると、@c
237 @qq{GUILE signalled an error ...} とともに@c
238 このエラー メッセージがコンソール出力やログ ファイルの最後に出現します。
239
240 LilyPond コメントはパーセント記号 (@code{%}) で始まりますが、@c
241 これを Scheme ルーチン内で使ってはいけません。@c
242 Scheme コメントは セミコロン (@code{;}) で始まります。
243
244
245 @node エラー メッセージ FT_Get_Glyph_Name
246 @unnumberedsubsubsec エラー メッセージ FT_Get_Glyph_Name
247 @translationof Error message FT_Get_Glyph_Name
248
249 入力ファイルが UTF-8 エンコーディングで保存されていない非 ASCII 文字を@c
250 保持している場合、@c
251 このエラー メッセージがコンソール出力やログ ファイルに出現します。@c
252 詳細は @ruser{Text encoding} を参照してください。
253 @c 詳細は @ruser{テキスト エンコーディング} を参照してください。
254
255
256 @node トラブルシューティング (すべてをバラバラにする)
257 @subsection トラブルシューティング (すべてをバラバラにする)
258 @translationof Troubleshooting (taking it all apart)
259
260 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
261 書くことになります。@c
262 LilyPond が返すメッセージはエラーを見つけ出す@c
263 手助けになるかもしれませんが、多くの場合、@c
264 問題の原因を探し出すために調査を行う必要があります。
265
266 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
267 ブロック コメント (@code{%@{ ... %@}} で記述します) です。@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 c' @{
300 %@{
301   c4 c c c
302   d d d d
303 %@}
304 @}
305 @end example
306
307 そして、問題を起こしている行を見つけ出すまで、@c
308 @code{bass} パートから少しずつコメントを外していきます。
309
310 もう 1 つの非常に有用なデバッグ テクニックは 
311 @c FIXME FIXME FIXME を構築することです。
312 @ref{最小化例} を構築することです。
313
314
315 @node 最小化例
316 @subsection 最小化例
317 @translationof Minimal examples
318
319 最小化例は可能な限り小さな例のことです。@c
320 最小化例は長い例よりも理解することがずっと容易です。@c
321 最小化例は以下の目的で使用されます:
322
323 @itemize
324 @item バグ レポート
325 @item メーリング リストに援助要請を送る
326 @item @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository} に例を追加する
327 @end itemize
328
329 可能な限り小さな例を構築するための規則はとても単純です: 
330 必要の無いものはすべて削除する。@c
331 ファイルの不要な部分を削除しようとしているとき、@c
332 実際に削除する代わりにコメント アウトを使用するというのは@c
333 とても良いアイディアです。@c
334 そうしておけば、ある行が実際には必要だということがわかった場合に、@c
335 その行をゼロから入力する代わりに、コメントを外すだけで済みます。
336
337 @qq{可能な限り小さく} という規則には 2 つの例外があります:
338
339 @itemize
340 @item @code{\version} 番号を含める。
341 @item 可能であれば、@c
342 例の先頭で @code{@bs{}paper@{ ragged-right=##t @}} を使う。
343 @end itemize
344
345 最小化例の要点は読みやすくするということです:
346
347 @itemize
348 @item 複雑な音符、調子、拍子を使うことを避ける 
349 -- それらの要素の振る舞いについて何かを示そうとしているのでない限り
350 @item @code{@bs{}override} コマンドを使わない 
351 -- それがその例のポイントでない限り
352 @end itemize
353
354
355 @node Make と Makefile
356 @section Make と Makefile
357 @translationof Make and Makefiles
358
359 @cindex makefiles
360 @cindex make
361
362 LilyPond を実行できるほとんどすべてのプラットフォームが 
363 @code{make} というソフトウェアをサポートします。@c
364 このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
365 ファイル @code{Makefile} は、@c
366 ファイルの依存関係と、@c
367 あるファイルから別のファイルを作り出すために@c
368 オペレーティング システムに渡す必要があるコマンドを定義します。@c
369 例えば、@code{Makefile} は LilyPond を実行して 
370 @code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
371 作り出す方法を記述します。
372
373 自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
374 自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
375 これが当てはまるのは、@c
376 多くのインクルード ファイルと複数の出力オプション 
377 (例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
378 非常に大きなプロジェクト、あるいは、@c
379 ビルドするために複雑なコマンドを必要とするプロジェクト
380 (@code{lilypond-book} プロジェクトなど)
381 です。@c
382 @code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
383 さまざまです。@c
384 プログラム GNU Make は 
385 GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
386 Windows でも利用可能です。
387
388 @code{make} の使い方についてのすべての詳細は 
389 @strong{GNU Make マニュアル} を参照してください。@c
390 これから示すのは @code{make} でできることのほんの一例です。
391
392 @code{Makefile} の中に規則を定義するためのコマンドは、@c
393 プラットフォームによって異なります。@c
394 例えば、さまざまな種類がある Linux と MacOS は @code{bash} を使いますが、@c
395 Windows は @code{cmd} を使います。@c
396 MacOS X では、コマンド ライン インタプリタを使用するためにシステムを@c
397 コンフィグレーションする必要があるということに注意してください。@c
398 ここで、@code{Makefile} の例をいくつか 
399 Linux/MacOS 用と Windows 用の両方のバージョンで示します。
400
401 最初の例は、4 楽章のオーケストラのためのもので、@c
402 以下のようなディレクトリ構造を持ちます:
403
404 @example
405 Symphony/
406 |-- MIDI/
407 |-- Makefile
408 |-- Notes/
409 |   |-- cello.ily
410 |   |-- figures.ily
411 |   |-- horn.ily
412 |   |-- oboe.ily
413 |   |-- trioString.ily
414 |   |-- viola.ily
415 |   |-- violinOne.ily
416 |   `-- violinTwo.ily
417 |-- PDF/
418 |-- Parts/
419 |   |-- symphony-cello.ly
420 |   |-- symphony-horn.ly
421 |   |-- symphony-oboes.ly
422 |   |-- symphony-viola.ly
423 |   |-- symphony-violinOne.ly
424 |   `-- symphony-violinTwo.ly
425 |-- Scores/
426 |   |-- symphony.ly
427 |   |-- symphonyI.ly
428 |   |-- symphonyII.ly
429 |   |-- symphonyIII.ly
430 |   `-- symphonyIV.ly
431 `-- symphonyDefs.ily
432 @end example
433
434 @code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある 
435 @code{.ly} ファイルは音符を 
436 @code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
437
438 @example
439 %%% top of file "symphony-cello.ly"
440 \include ../definitions.ily
441 \include ../Notes/cello.ily
442 @end example
443
444 この @code{Makefile} はターゲットとして 
445 @code{score} (フル スコアの楽曲全体)、@c
446 @code{movements} (フル スコアの個々の楽章)、@c
447 それに @code{parts} (演奏者のための個々のパート) を持ちます。@c
448 さらに、web や email で配布するのに適したソース ファイルの tarball 
449 (訳者: 複数のファイルをコマンド @code{tar} で 1 つのファイルにまとめたもの) 
450 を作成するターゲット @code{archive} もあります。@c
451 ここでは GNU/Linux や MacOS X 用の @code{Makefile} を示します。@c
452 これをプロジェクトのトップ ディレクトリに 
453 @code{Makefile} という名前で保存する必要があります:
454
455 @warning{ターゲットやパターン ルールが定義されたとき、@c
456 そのあとの行はスペースではなく Tab で始まる必要があります。}
457
458 @example
459 # the name stem of the output files
460 # 出力ファイル名の語幹: symphonyI.pdf, symphonyIII.ly など
461 piece = symphony
462 # determine how many processors are present
463 # いくつプロセッサがあるかを決定します
464 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
465 # The command to run lilypond
466 # lilypond を実行するコマンド
467 LILY_CMD = lilypond -ddelete-intermediate-files \
468                     -dno-point-and-click -djob-count=$(CPU_CORES)
469
470 # The suffixes used in this Makefile.
471 # この Makefile で使用される拡張子
472 .SUFFIXES: .ly .ily .pdf .midi
473
474 # Input and output files are searched in the directories listed in
475 # the VPATH variable.  All of them are subdirectories of the current
476 # directory (given by the GNU make variable `CURDIR').
477 # 入力ファイルと出力ファイルのサーチは VPATH 変数でリストアップされている
478 # ディレクトリの中で行われます。それらのディレクトリはすべて (GNU make 変数 
479 # `CURDIR' によって与えられる) カレント ディレクトリのサブディレクトリです。
480 VPATH = \
481   $(CURDIR)/Scores \
482   $(CURDIR)/PDF \
483   $(CURDIR)/Parts \
484   $(CURDIR)/Notes
485
486 # LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
487 # パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
488 # 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
489 %.pdf %.midi: %.ly
490         $(LILY_CMD) $<; \           # this line begins with a tab
491         if test -f "$*.pdf"; then \
492             mv "$*.pdf" PDF/; \
493         fi; \
494         if test -f "$*.midi"; then \
495             mv "$*.midi" MIDI/; \
496         fi
497
498 notes = \
499   cello.ily \
500   horn.ily \
501   oboe.ily \
502   viola.ily \
503   violinOne.ily \
504   violinTwo.ily
505
506 # The dependencies of the movements.
507 # ターゲット movements の依存関係
508 $(piece)I.pdf: $(piece)I.ly $(notes)
509 $(piece)II.pdf: $(piece)II.ly $(notes)
510 $(piece)III.pdf: $(piece)III.ly $(notes)
511 $(piece)IV.pdf: $(piece)IV.ly $(notes)
512
513 # The dependencies of the full score.
514 # ターゲット score の依存関係
515 $(piece).pdf: $(piece).ly $(notes)
516
517 # The dependencies of the parts.
518 # ターゲット parts の依存関係
519 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
520 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
521 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
522 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
523 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
524 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
525
526 # Type `make score' to generate the full score of all four
527 # movements as one file.
528 # 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
529 # `make score' とタイプします。
530 .PHONY: score
531 score: $(piece).pdf
532
533 # Type `make parts' to generate all parts.
534 # Type `make foo.pdf' to generate the part for instrument `foo'.
535 # Example: `make symphony-cello.pdf'.
536 # すべてのパートを生成するには `make parts' とタイプします。
537 # 楽器 `foo' のためのパートを生成するには `make foo.pdf' とタイプします。
538 # 例: `make symphony-cello.pdf'
539 .PHONY: parts
540 parts: $(piece)-cello.pdf \
541        $(piece)-violinOne.pdf \
542        $(piece)-violinTwo.pdf \
543        $(piece)-viola.pdf \
544        $(piece)-oboes.pdf \
545        $(piece)-horn.pdf
546
547 # Type `make movements' to generate files for the
548 # four movements separately.
549 # 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
550 .PHONY: movements
551 movements: $(piece)I.pdf \
552            $(piece)II.pdf \
553            $(piece)III.pdf \
554            $(piece)IV.pdf
555
556 all: score parts movements
557
558 archive:
559         tar -cvvf stamitz.tar \       # this line begins with a tab
560         --exclude=*pdf --exclude=*~ \
561         --exclude=*midi --exclude=*.tar \
562         ../Stamitz/*
563 @end example
564
565
566 Windows プラットフォームには特別な面倒さがあります。@c
567 Windows 用の GNU Make をダウンロードしてインストールした後、@c
568 システム環境変数に正しいパスを設定して、@c
569 DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
570 これを行うには、@c
571 "マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
572 それから @code{詳細設定} を選択します。@c
573 それから @code{環境変数} をクリックして、@c
574 @code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
575 @code{編集} をクリックして、@c
576 GNU Make の実行ファイルへのパスを追加します。@c
577 そのパスは以下のようになります 
578 (訳者: GNU Make のインストールのされ方によって異なります):
579
580 @example
581 C:\Program Files\GnuWin32\bin
582 @end example
583
584 Linux/MacOS X とは異なるシェル コマンドを扱い、@c
585 いくつかのデフォルト システム ディレクトリの中に存在する@c
586 ファイル空間を扱うために、@c
587 @code{Makefile} 自体を変更する必要があります。@c
588 Windows は @code{tar} コマンドを持たないため、@c
589 @code{archive} ターゲットは除去されます。@c
590 また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
591
592 @example
593 ## WINDOWS VERSION
594 ##
595 piece = symphony
596 LILY_CMD = lilypond -ddelete-intermediate-files \
597                     -dno-point-and-click \
598                     -djob-count=$(NUMBER_OF_PROCESSORS)
599
600 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
601 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
602           do @@echo %%~sb)
603
604 .SUFFIXES: .ly .ily .pdf .mid
605
606 VPATH = \
607   $(workdir)/Scores \
608   $(workdir)/PDF \
609   $(workdir)/Parts \
610   $(workdir)/Notes
611
612 %.pdf %.mid: %.ly
613         $(LILY_CMD) $<      # this line begins with a tab
614         if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # begin with tab
615         if exist "$*.mid" move /Y "$*.mid" MIDI/  # begin with tab
616
617 notes = \
618   cello.ily \
619   figures.ily \
620   horn.ily \
621   oboe.ily \
622   trioString.ily \
623   viola.ily \
624   violinOne.ily \
625   violinTwo.ily
626
627 $(piece)I.pdf: $(piece)I.ly $(notes)
628 $(piece)II.pdf: $(piece)II.ly $(notes)
629 $(piece)III.pdf: $(piece)III.ly $(notes)
630 $(piece)IV.pdf: $(piece)IV.ly $(notes)
631
632 $(piece).pdf: $(piece).ly $(notes)
633
634 $(piece)-cello.pdf: $(piece)-cello.ly cello.ily
635 $(piece)-horn.pdf: $(piece)-horn.ly horn.ily
636 $(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
637 $(piece)-viola.pdf: $(piece)-viola.ly viola.ily
638 $(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
639 $(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
640
641 .PHONY: score
642 score: $(piece).pdf
643
644 .PHONY: parts
645 parts: $(piece)-cello.pdf \
646        $(piece)-violinOne.pdf \
647        $(piece)-violinTwo.pdf \
648        $(piece)-viola.pdf \
649        $(piece)-oboes.pdf \
650        $(piece)-horn.pdf
651
652 .PHONY: movements
653 movements: $(piece)I.pdf \
654            $(piece)II.pdf \
655            $(piece)III.pdf \
656            $(piece)IV.pdf
657
658 all: score parts movements
659 @end example
660
661
662 次の @code{Makefile} は、@c
663 LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
664 このドキュメントは目次を持ちます。@c
665 目次を作成するには、@c
666 リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
667 .pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
668 HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
669
670 @example
671 SHELL=/bin/sh
672 FILE=myproject
673 OUTDIR=out
674 WEBDIR=htmlout
675 VIEWER=acroread
676 BROWSER=firefox
677 LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
678 LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
679 PDF=cd $(OUTDIR) && pdflatex $(FILE)
680 HTML=cd $(WEBDIR) && latex2html $(FILE)
681 INDEX=cd $(OUTDIR) && makeindex $(FILE)
682 PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
683
684 all: pdf web keep
685
686 pdf:
687         $(LILYBOOK_PDF)  # begin with tab
688         $(PDF)           # begin with tab
689         $(INDEX)         # begin with tab
690         $(PDF)           # begin with tab
691         $(PREVIEW)       # begin with tab
692
693 web:
694         $(LILYBOOK_HTML) # begin with tab
695         $(HTML)          # begin with tab
696         cp -R $(WEBDIR)/$(FILE)/ ./  # begin with tab
697         $(BROWSER) $(FILE)/$(FILE).html &  # begin with tab
698
699 keep: pdf
700         cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # begin with tab
701
702 clean:
703         rm -rf $(OUTDIR) # begin with tab
704
705 web-clean:
706         rm -rf $(WEBDIR) # begin with tab
707
708 archive:
709         tar -cvvf myproject.tar \ # begin this line with tab
710         --exclude=out/* \
711         --exclude=htmlout/* \
712         --exclude=myproject/* \
713         --exclude=*midi \
714         --exclude=*pdf \
715         --exclude=*~ \
716         ../MyProject/*
717 @end example
718
719 TODO: make this thing work on Windows
720
721 この @code{Makefile} は Windows では機能しません。@c
722 Windows ユーザの代替手段として、@c
723 ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
724 これは @code{Makefile} のように依存関係を保持できませんが、@c
725 少なくともビルド処理を単一のコマンドに縮小します。@c
726 以下のコードを 
727 @command{build.bat} あるいは @command{build.cmd} として保存してください。@c
728 このバッチ ファイルは DOS プロンプトから実行することができ、@c
729 単にそのアイコンをダブル クリックすることでも実行することができます。
730
731 @example
732 lilypond-book --output=out --pdf myproject.lytex
733 cd out
734 pdflatex myproject
735 makeindex myproject
736 pdflatex myproject
737 cd ..
738 copy out\myproject.pdf MyProject.pdf
739 @end example
740
741
742 @seealso
743 アプリケーションの使用方法:
744 FIXME
745 @c @rprogram{Setup for MacOS X},
746 @rprogram{コマンド ラインの使用方法},
747 @rprogram{lilypond-book}