1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
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..
14 @c Translators: Yoshiki Sawada
15 @c Translation status: post-GDP
18 @node LilyPond プロジェクトに取り組む
19 @chapter LilyPond プロジェクトに取り組む
20 @translationof Working on LilyPond projects
22 このセクションでは一般的な問題のいくつかを@c
23 解決または回避する方法について説明します。@c
24 あなたにプログラミングの経験があるのなら、@c
25 ここで取り上げる TIPS の多くは当たり前のことに見えるかもしれませんが、@c
36 @translationof When things don't work
41 * トラブルシューティング (すべてをバラバラにする)::
46 @node 古い入力ファイルをアップデートする
47 @subsection 古い入力ファイルをアップデートする
48 @translationof Updating old input files
51 @cindex updating old input files (ふるい入力ファイルをアップデートする)
53 LilyPond 入力構文はしばしば変更されます。@c
54 LilyPond 自体の改良に合わせて、構文 (入力言語) も変更されます。@c
56 入力を読みやすく/書きやすくするために行われる場合もありますし、@c
57 LilyPond の新しい機能のために行われる場合もあります。
59 LilyPond は、このアップデートをより容易にするファイル
60 -- @code{convert-ly} -- と一緒に公開されます。@c
62 @rprogram{convert-ly を使ってファイルを更新する} を参照してください。
64 残念なことに、@code{convert-ly} はすべての入力構文の変更を@c
67 (@code{raggedright} が @code{ragged-right} になったなど)
70 @code{convert-ly} が処理できない構文の変更は
71 @rprogram{convert-ly を使ってファイルを更新する} にリストアップされています。
73 例えば、LilyPond 2.4 以前では、アクセントと非英語文字
74 -- 例えば、@code{No@bs{}"el}
75 (これは @q{クリスマス} に対応するフランス語となります) -- は
78 特殊文字 @code{ë} を UTF-8 キャラクタとして@c
79 直接 LilyPond ファイルに入力するようになりました。@c
80 @code{convert-ly} はすべての LaTex 特殊文字を
81 UTF-8 キャラクタに変更することはできません。@c
82 その場合、あなたが手動で古い LilyPond 入力ファイルを@c
88 @translationof Common errors
90 以下で記述するエラーがしばしば起こりますが、@c
93 一旦それらのエラーを経験して理解すれば、@c
100 * 見かけ上 ../ly/init.ly に発生するエラー::
101 * エラー メッセージ Unbound variable %::
102 * エラー メッセージ FT_Get_Glyph_Name::
106 @unnumberedsubsubsec 音楽がページからはみ出す
107 @translationof Music runs off the page
109 右の余白にはみ出した音楽や、過度に密集した音楽の原因は@c
110 ほとんどすべて音符の演奏時間を不適切に入力して、@c
111 小節の最後の音符が小節線を越えたためです。@c
112 小節の最後の音符が自動的に挿入される小節線のところで終わっていなくても@c
114 なぜなら、その音符は単に次の小節に持ち越すと見なされるからです。@c
115 しかしながら、そのような持ち越しの小節が長く続くと、@c
116 音楽は密集したり、ページからはみ出す可能性があります。@c
117 なぜなら、自動改行を挿入できるのは完全な小節
118 -- つまり、すべての音符がその小節の終端までに終わっている小節 --
121 @warning{不適切な演奏時間は自動改行を抑制し、@c
122 その行の音楽は密集したり、ページからはみ出します。}
124 小節チェックを使うと不適切な演奏時間を簡単に見つけ出すことができます
125 -- @ruser{Bar and bar number checks} を参照してください。
126 @c -- @ruser{小節と小節番号チェック} を参照してください。
128 長く続く持ち越しの小節を持とうとするならば、@c
129 改行したいところに不可視の小節線を挿入する必要があります。@c
130 詳細は @ruser{Bar lines} を参照してください。
131 @c 詳細は @ruser{小節線} を参照してください。
135 @unnumberedsubsubsec 余計な譜が出現する
136 @translationof An extra staff appears
138 コンテキストが @code{\new} で明示的に作成されてはいない場合、@c
139 すでに存在しているコンテキストには適用できないコマンドが発生すると@c
140 沈黙のうちにコンテキストが作成されます。@c
141 簡単な楽譜ではコンテキストの自動作成機能は有用であり、@c
142 この LilyPond マニュアルの中の例の大半がこの機能を利用しています。@c
144 時々このコンテキスト自動作成機能が予期せぬ譜や楽譜を発生させます。@c
145 例えば、以下のコードはその後に続く譜の中にある符頭をすべて赤くすると@c
147 実際のところ、その結果は 2 つの譜となり、@c
148 下側の譜の中の符頭はデフォルトの黒のままです。
150 @lilypond[quote,verbatim,relative=2]
151 \override Staff.NoteHead #'color = #red
157 @code{Staff} コンテキストは存在しなかったためです。@c
158 そのため、@code{Staff} コンテキストが 1 つ暗黙的に作成され、@c
159 オーバライドはそのコンテキストに適用されます。@c
160 それから、@code{\new Staff} コマンドがもう 1 つ別の譜を作成し、@c
162 すべての符頭を赤くするための正しいコードは以下のようになります:
164 @lilypond[quote,verbatim,relative=2]
166 \override Staff.NoteHead #'color = #red
172 @code{\relative} コマンドが @code{\repeat} コマンドの中にある場合、@c
173 2 つの譜が生成され、2 番目の譜は 1 番目の譜からずれます。@c
175 @code{\repeat} コマンドは 2 つの @code{\relative} ブロックを生成し、@c
176 それぞれのブロックは暗黙的に @code{Staff} ブロックと @code{\Voice} ブロックを@c
179 @lilypond[quote,verbatim]
180 \repeat unfold 2 \relative { c d e f }
185 @code{\repeat} コマンドと @code{j\relative} コマンドの位置を入れ換えます:
187 @lilypond[quote,verbatim]
189 \repeat unfold 2 { c d e f }
194 @node 見かけ上 ../ly/init.ly に発生するエラー
195 @unnumberedsubsubsec 見かけ上 @code{../ly/init.ly} に発生するエラー
196 @translationof Apparent error in ../ly/init.ly
199 @code{../ly/init.ly} の中に構文エラーがあるという内容の@c
200 さまざまな原因が不明瞭なエラー メッセージが表示される可能性があります。@c
201 例えば、入力ファイルの中で括弧やクォートが対になっていない場合に、@c
204 最も一般的なエラーは @code{score} ブロックの最後に@c
205 波括弧 (@code{@}}) が無いというエラーです。@c
207 @code{score} ブロックが正しく終わっていることをチェックしてください。@c
208 入力ファイルの正しい構造は @rlearning{LilyPond 入力ファイルの仕組み} で@c
210 角括弧と波括弧の対を自動的にハイライトするエディタを使用すると@c
214 歌詞ブロックの最後の音節と閉じ波括弧 (@code{@}}) の間にスペースが@c
217 閉じ波括弧は音節の一部になってしまいます。@c
218 常に @emph{すべての} 中括弧の前後にスペースを置くことをお勧めします。@c
220 -- @ruser{Lyrics explained} を参照してください。
221 @c -- @ruser{歌詞の説明} を参照してください。
224 クォート (@code{"}) を閉じることを忘れた場合にも発生します。@c
226 付随するエラー メッセージがエラーを起こした行の行番号を提示します。@c
227 対になっていないクォートは通常 1 行あるいは 2 行上にあります。
230 @node エラー メッセージ Unbound variable %
231 @unnumberedsubsubsec エラー メッセージ Unbound variable %
232 @translationof Error message Unbound variable %
234 @emph{Scheme} コメントではなく @emph{LilyPond} コメントを@c
238 @qq{GUILE signalled an error ...} とともに@c
239 このエラー メッセージがコンソール出力やログ ファイルの最後に出現します。
241 LilyPond コメントはパーセント記号 (@code{%}) で始まりますが、@c
242 これを Scheme ルーチン内で使ってはいけません。@c
243 Scheme コメントは セミコロン (@code{;}) で始まります。
246 @node エラー メッセージ FT_Get_Glyph_Name
247 @unnumberedsubsubsec エラー メッセージ FT_Get_Glyph_Name
248 @translationof Error message FT_Get_Glyph_Name
250 入力ファイルが UTF-8 エンコーディングで保存されていない非 ASCII 文字を@c
252 このエラー メッセージがコンソール出力やログ ファイルに出現します。@c
253 詳細は @ruser{Text encoding} を参照してください。
254 @c 詳細は @ruser{テキスト エンコーディング} を参照してください。
257 @node トラブルシューティング (すべてをバラバラにする)
258 @subsection トラブルシューティング (すべてをバラバラにする)
259 @translationof Troubleshooting (taking it all apart)
261 遅かれ早かれ、あなたは LilyPond がコンパイルできないファイルを@c
263 LilyPond が返すメッセージはエラーを見つけ出す@c
264 手助けになるかもしれませんが、多くの場合、@c
265 問題の原因を探し出すために調査を行う必要があります。
267 この目的のための最も強力なツールは 1 行コメント (@code{%} で記述します) と@c
268 ブロック コメント (@code{%@{ ... %@}} で記述します) です。@c
270 入力ファイルの大きな一部分をコメント アウトすることから始めます。@c
271 あるセクションをコメント アウトして、そのファイルを再びコンパイルしてみます。@c
272 コンパイルが通ったのなら、問題は今コメント アウトした部分の中にあります。@c
273 コンパイルが通らなかった場合は、コンパイルが通るようになるまで@c
276 極端な場合、最終的に以下のようになるかもしれません:
290 (言い換えると、何の音楽も持たないファイルです)
292 こうなったとしても、あきらめないでください。@c
293 少しだけコメントを外して -- 例えば、バス パートを --
294 コンパイルが通るかどうか試してみます。@c
295 コンパイルが通らなかった場合は、バスの音楽をすべてコメント アウトします
296 (しかし、@code{@bs{}score} の中の @code{@bs{}bass} はコメントを@c
300 bass = \relative c' @{
308 そして、問題を起こしている行を見つけ出すまで、@c
309 @code{bass} パートから少しずつコメントを外していきます。
311 もう 1 つの非常に有用なデバッグ テクニックは
312 @c FIXME FIXME FIXME を構築することです。
313 @ref{最小化例} を構築することです。
318 @translationof Minimal examples
320 最小化例は可能な限り小さな例のことです。@c
321 最小化例は長い例よりも理解することがずっと容易です。@c
326 @item メーリング リストに援助要請を送る
327 @item @uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository} に例を追加する
330 可能な限り小さな例を構築するための規則はとても単純です:
332 ファイルの不要な部分を削除しようとしているとき、@c
333 実際に削除する代わりにコメント アウトを使用するというのは@c
335 そうしておけば、ある行が実際には必要だということがわかった場合に、@c
336 その行をゼロから入力する代わりに、コメントを外すだけで済みます。
338 @qq{可能な限り小さく} という規則には 2 つの例外があります:
341 @item @code{\version} 番号を含める。
343 例の先頭で @code{@bs{}paper@{ ragged-right=##t @}} を使う。
346 最小化例の要点は読みやすくするということです:
349 @item 複雑な音符、調子、拍子を使うことを避ける
350 -- それらの要素の振る舞いについて何かを示そうとしているのでない限り
351 @item @code{@bs{}override} コマンドを使わない
356 @node Make と Makefile
357 @section Make と Makefile
358 @translationof Make and Makefiles
363 LilyPond を実行できるほとんどすべてのプラットフォームが
364 @code{make} というソフトウェアをサポートします。@c
365 このソフトウェアは @code{Makefile} という名前の特殊なファイルを読み込みます。@c
366 ファイル @code{Makefile} は、@c
368 あるファイルから別のファイルを作り出すために@c
369 オペレーティング システムに渡す必要があるコマンドを定義します。@c
370 例えば、@code{Makefile} は LilyPond を実行して
371 @code{ballad.ly} から @code{ballad.pdf} と @code{ballad.midi} を@c
374 自身の便利さのためかソース ファイルにアクセスしてくれる他の人のために、@c
375 自身のプロジェクト用に @code{Makefile} を作成することが良い場合があります。@c
377 多くのインクルード ファイルと複数の出力オプション
378 (例えば、フル スコア、パート スコア、指揮譜、ピアノ譜など) を持つ
380 ビルドするために複雑なコマンドを必要とするプロジェクト
381 (@code{lilypond-book} プロジェクトなど)
383 @code{Makefile} の複雑さと自由度は、必要性と作者のスキルに応じて、@c
386 GNU/Linux ディストリビューションと MacOS X にインストールされていて、@c
389 @code{make} の使い方についてのすべての詳細は
390 @strong{GNU Make マニュアル} を参照してください。@c
391 これから示すのは @code{make} でできることのほんの一例です。
393 @code{Makefile} の中に規則を定義するためのコマンドは、@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 用の両方のバージョンで示します。
402 最初の例は、4 楽章のオーケストラのためのもので、@c
420 | |-- symphony-cello.ly
421 | |-- symphony-horn.ly
422 | |-- symphony-oboes.ly
423 | |-- symphony-viola.ly
424 | |-- symphony-violinOne.ly
425 | `-- symphony-violinTwo.ly
435 @code{Scores} ディレクトリと @code{Parts} ディレクトリの中にある
437 @code{Notes} ディレクトリの中にある @code{.ily} ファイルから取得します:
440 %%% top of file "symphony-cello.ly"
441 \include ../definitions.ily
442 \include ../Notes/cello.ily
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} という名前で保存する必要があります:
456 @warning{ターゲットやパターン ルールが定義されたとき、@c
457 そのあとの行はスペースではなく Tab で始まる必要があります。}
460 # the name stem of the output files
461 # 出力ファイル名の語幹: symphonyI.pdf, symphonyIII.ly など
463 # determine how many processors are present
465 CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
466 # The command to run lilypond
468 LILY_CMD = lilypond -ddelete-intermediate-files \
469 -dno-point-and-click -djob-count=$(CPU_CORES)
471 # The suffixes used in this Makefile.
472 # この Makefile で使用される拡張子
473 .SUFFIXES: .ly .ily .pdf .midi
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' によって与えられる) カレント ディレクトリのサブディレクトリです。
487 # LY 入力ファイルから PDF ファイルと MIDI ファイルを作成するための
488 # パターン ルール。.pdf 出力ファイルは `PDF' サブディレクトリの中に
489 # 配置され、.midi ファイルは `MIDI' サブディレクトリの中に配置されます。
491 $(LILY_CMD) $<; \ # this line begins with a tab
492 if test -f "$*.pdf"; then \
495 if test -f "$*.midi"; then \
496 mv "$*.midi" MIDI/; \
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)
514 # The dependencies of the full score.
516 $(piece).pdf: $(piece).ly $(notes)
518 # The dependencies of the 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
527 # Type `make score' to generate the full score of all four
528 # movements as one file.
529 # 4 つすべての楽章のフル スコアを 1 つのファイルとして生成するには
530 # `make score' とタイプします。
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'
541 parts: $(piece)-cello.pdf \
542 $(piece)-violinOne.pdf \
543 $(piece)-violinTwo.pdf \
548 # Type `make movements' to generate files for the
549 # four movements separately.
550 # 4 つの楽章を別個のファイルとして生成するには `make movements' とタイプします。
552 movements: $(piece)I.pdf \
557 all: score parts movements
560 tar -cvvf stamitz.tar \ # this line begins with a tab
561 --exclude=*pdf --exclude=*~ \
562 --exclude=*midi --exclude=*.tar \
567 Windows プラットフォームには特別な面倒さがあります。@c
568 Windows 用の GNU Make をダウンロードしてインストールした後、@c
569 システム環境変数に正しいパスを設定して、@c
570 DOS シェルが Make プログラムを見つけられるようにする必要があります。@c
572 "マイ コンピュータ" を右クリックして、@code{プロパティ} を選択し、@c
573 それから @code{詳細設定} を選択します。@c
574 それから @code{環境変数} をクリックして、@c
575 @code{システム環境変数} パネルの中にある @code{Path} をハイライトしてから
577 GNU Make の実行ファイルへのパスを追加します。@c
579 (訳者: GNU Make のインストールのされ方によって異なります):
582 C:\Program Files\GnuWin32\bin
585 Linux/MacOS X とは異なるシェル コマンドを扱い、@c
586 いくつかのデフォルト システム ディレクトリの中に存在する@c
588 @code{Makefile} 自体を変更する必要があります。@c
589 Windows は @code{tar} コマンドを持たないため、@c
590 @code{archive} ターゲットは除去されます。@c
591 また、Windows が持つ MIDI ファイルのデフォルト拡張子は異なります。
597 LILY_CMD = lilypond -ddelete-intermediate-files \
598 -dno-point-and-click \
599 -djob-count=$(NUMBER_OF_PROCESSORS)
601 #get the 8.3 name of CURDIR (workaround for spaces in PATH)
602 workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
605 .SUFFIXES: .ly .ily .pdf .mid
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
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)
633 $(piece).pdf: $(piece).ly $(notes)
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
646 parts: $(piece)-cello.pdf \
647 $(piece)-violinOne.pdf \
648 $(piece)-violinTwo.pdf \
654 movements: $(piece)I.pdf \
659 all: score parts movements
663 次の @code{Makefile} は、@c
664 LaTeX で処理する @command{lilypond-book} ドキュメント用です。@c
667 リンクを更新するために @command{latex} コマンドを 2 回実行する必要があります。@c
668 .pdf 出力ファイルは @code{out} ディレクトリに保存され、@c
669 HTML 出力ファイルは @code{htmlout} ディレクトリに保存されます。
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 &
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
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
701 cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf # begin with tab
704 rm -rf $(OUTDIR) # begin with tab
707 rm -rf $(WEBDIR) # begin with tab
710 tar -cvvf myproject.tar \ # begin this line with tab
712 --exclude=htmlout/* \
713 --exclude=myproject/* \
720 TODO: make this thing work on Windows
722 この @code{Makefile} は Windows では機能しません。@c
723 Windows ユーザの代替手段として、@c
724 ビルド コマンドを保持する簡単なバッチ ファイルを作成する方法があります。@c
725 これは @code{Makefile} のように依存関係を保持できませんが、@c
726 少なくともビルド処理を単一のコマンドに縮小します。@c
728 @command{build.bat} あるいは @command{build.cmd} として保存してください。@c
729 このバッチ ファイルは DOS プロンプトから実行することができ、@c
730 単にそのアイコンをダブル クリックすることでも実行することができます。
733 lilypond-book --output=out --pdf myproject.lytex
739 copy out\myproject.pdf MyProject.pdf
746 @c @rprogram{Setup for MacOS X},
747 @rprogram{コマンド ラインの使用方法},
748 @rprogram{lilypond-book}