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