1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
12 @c Translators: Yoshiki Sawada
13 @c Translation status: post-GDP
16 @chapter LilyPond を実行する
17 @translationof Running LilyPond
19 この章では LilyPond を実行するための細かな規定について詳述します。
25 * convert-ly を使ってファイルを更新する::
32 @translationof Normal usage
34 たいていのユーザは GUI から LilyPond を実行します。@rlearning{最初のステップ} を@c
35 まだ読んでいないのなら、それを読んでください。
39 @section コマンド ラインの使用方法
40 @translationof Command-line usage
42 この節にはコマンド ラインで LilyPond を使用するための追加情報が含まれます。こ@c
43 れにはプログラムに追加オプションを渡す必要があるかもしれません。さらに、いくつ@c
44 かの特別なプログラム (@code{midi2ly} など) はコマンド ラインからしか利用できま@c
47 ここで @q{コマンド ライン} とは、OS の中にあるコマンド ラインを意味します。@c
48 Windows ユーザは @q{DOS シェル} という言葉の方が馴染みがあるかもしれません。@c
49 MaxOS@tie{}X ユーザは @q{ターミナル} や @q{コンソール} という言葉の方が馴染み@c
50 があるかもしれません。MaxOS@tie{}X ユーザは @ref{MacOS X のためのセットアップ} も読んでお@c
53 OS のコマンド ラインの使用方法についての説明はこのマニュアルが扱う範囲ではあり@c
54 ません。コマンド ラインに馴染みがない場合は、その内容を扱っている他のドキュ@c
59 * lilypond のコマンド ライン オプション::
63 @node Invoking lilypond
64 @subsection @command{lilypond} を呼び出す
65 @translationof Invoking lilypond
67 @cindex Invoking @command{lilypond}
68 @cindex command line options for @command{lilypond}
69 @cindex options, command line
72 @command{lilypond} 実行可能形式ファイルはコマンド ラインから以下のように呼び出@c
76 lilypond [@var{option}]@dots{} @var{file}@dots{}
79 拡張子を持たないファイル名で呼び出された場合、@file{.ly} が最初に試されます。@c
80 sudin から入力を読み込む場合には、@var{file} に対してダッシュ (@code{−}) を使@c
83 @file{filename.ly} が処理されると、lilypond は出力として @file{filename.ps} と
84 @file{filename.pdf} を作り出します。いくつかのファイルを指定することもできま@c
85 す。その場合、それらのファイルは個々に処理されます。@footnote{GUILE のステータ@c
86 スは @code{.ly} 処理後にリセットされません。そのため、Scheme 内部からいかなる@c
87 システム デフォルトも変更しないよう注意してください。}
89 @file{filename.ly} が複数の @code{\score} を含んでいる場合、2 つ目以降の score
90 は @file{filename-1.pdf} から始まる番号付きのファイルに出力されます。さらに、@c
91 @code{output-suffix} がベース名と番号の間に挿入されます。以下の内容を含んでい@c
95 #(define output-suffix "violin")
97 #(define output-suffix "cello")
102 @var{base}@file{-violin.pdf} と @var{base}@file{-cello-1.pdf} を出力します。
105 @node lilypond のコマンド ライン オプション
106 @subsection @command{lilypond} のコマンド ライン オプション
107 @translationof Command line options for lilypond
113 @item -e,--evaluate=@var{expr}
114 @file{.ly} ファイルを解析する前に Scheme @var{expr} を評価します。複数の
115 @code{-e} オプションが与えられた場合、それらは順番に評価されます。
117 表記は @code{guile-user} モジュールの中で評価されます。そのため、@var{expr} の@c
118 中で definition を使いたいのならば、@code{.ly} ファイルに以下をインクルードして:
121 #(use-modules (guile-user))
128 lilypond -e '(define-public a 42)'
133 @item -f,--format=@var{format}
134 フォーマットを指定します。@code{format} には @code{svg}, @code{ps}, @code{pdf},
137 例: @code{lilypond -fpng @var{filename}.ly}
141 @item -d,--define-default=@var{var}=@var{val}
142 これは内部プログラム オプション @var{var} に Scheme 値 @var{val} をセットしま@c
143 す。@var{val} が提供されていない場合、@var{#t} が使用されます。オプションを OFF
144 にするには、@var{var} の接頭辞として @code{no-} を付けます。つまり、
146 @cindex point and click, command line
155 -dpoint-and-click='#f'
159 ここで興味深いオプションをいくつか挙げます。
163 @code{lilypond -dhelp} を実行すると使用可能な @code{-d} オプションがすべて表示@c
167 このオプションはデフォルトの用紙サイズをセットします。
169 -dpaper-size=\"letter\"
173 文字列はエスケーブされたクォート ( @code{\"} ) で囲まれていなければならないと@c
175 @c Match " in previous line to help context-sensitive editors
178 @code{.ly} 入力を信用してはいけません。
180 Web サーバを通じて LilyPond フォーマットが利用可能な場合、@code{--safe} オプ@c
181 ションか @code{--jail} オプションのどちらかを@b{渡さなければなりません}。@c
182 @code{--safe} オプションは以下のようなインライン Scheme コードが大混乱をもたら@c
189 c4^#(ly:export (ly:gulp-file "/etc/passwd"))
194 訳者: #(system "rm -rf /") はルート ディレクトリ以下を削除し、export
195 (ly:gulp-file "/etc/passwd") はパスワード ファイルをエクスポートします。
197 @code{-dsafe} オプションはインライン Sceme 表記を特別なセーフ モジュールの中で@c
198 評価します。このセーフ モジュールは GUILE @file{safe-r5rs} モジュールから派生@c
199 したものですが、LilyPond API 関数をいくつか追加しています。これらの関数は
200 @file{scm/@/safe@/-lily@/.scm} でリスト アップされています。
202 さらに、セーフ モードは @code{\include} 指示を却下し、@TeX{} 文字列の中にある@c
205 セーフ モードでは、LilyPond 変数を Scheme にインポートすることはできません。
207 @code{-dsafe} はリソースの乱用を検出@emph{しません}。例えば循環データ構造体を@c
208 バックエンドに食わせることで、プログラムをハングさせることは可能です。そのた@c
209 め、パブリックにアクセス可能な Web サーバ上で LilyPond を使用する場合、そのプ@c
210 ロセスの CPU とメモリの両方の使用は制限されるべきです。
212 セーフ モードは多くの有用な LilyPond 断片がコンパイルされることを妨げます。@c
213 @code{--jail} はより安全な代替オプションですが、セット アップにより多くの作業@c
216 @cindex output format, setting
218 バックエンドに対して使用する出力フォーマットを指定します。@code{format} の選択@c
222 @cindex PostScript output
225 Postscript ファイルは TTF, Type1, OTF フォントを含んでいます。これらのフォン@c
226 トのサブセット化 (訳者: フォント セットを使用するフォントに限定すること) は行@c
227 われません。東洋の文字セットを使用する場合、巨大なファイルになる可能性がありま@c
231 縮約された PostScript (EPS)。これは各ページ (システム) をフォントを持たない@c
232 個別の @file{EPS} ファイルとして吐き出し、フォントを含めたすべてのページ (シス@c
233 テム) を持つ @file{EPS} ファイルを 1 つ吐き出します。
235 このモードは @command{lilypond-book} でデフォルトで使用されます。
238 @cindex SVG (Scalable Vector Graphics)
239 SVG (Scalable Vector Graphics)。これは各ページをフォントを埋め込まれた個別の
240 @file{SVG} ファイルとして吐き出します。埋め込みフォントをサポートする SVG
241 ビューアか埋め込みフォントを OTF フォントに置き換える機能を持つ SVG ビューアが@c
242 必要になります。UNIX では、@uref{http://www.inkscape.org,Inkscape} (バージョン
243 0.42 以降) を使うことになるかもしれません。使用前に、OTF フォントを LilyPond
244 ディレクトリ (一般には @file{/usr/share/lilypond/VERSION/fonts/otf/}) から
245 @file{~/.fonts/} にコピーしてください。
248 生データ -- 内部 Scheme ベース描画コマンド -- を吐き出します。
251 譜刻された楽譜を出力しません。@code{-dno-print-pages} と同じ効果を持ちます。
254 例: @code{lilypond -dbackend=svg @var{filename}.ly}
257 タイトルとファイル システム情報を保持している出力ファイルを生成します。
260 すべてのページを生成します。デフォルトです。@code{-dno-print-pages} は
261 @code{-dpreview} と組み合わせて使うと有用です。
270 @item -H,--header=@var{FIELD}
271 ヘッダ フィールドをファイル @file{BASENAME.@var{FIELD}} に吐き出します。
273 @item --include, -I=@var{directory}
274 @var{directory} を入力ファイルのサーチ パスに追加します。
275 @cindex file searching
278 @item -i,--init=@var{file}
279 init ファイルとして @var{file} をセットします (デフォルト: @file{init.ly})。
281 @item -o,--output=@var{FILE}
282 デフォルトの出力ファイルとして @var{FILE} をセットします。適切な接尾辞が追加さ@c
283 れます (つまり、pdf ならば拡張子 @code{.pdf} が追加されます)。
289 各ページの図を PNG フォーマットで生成します。これは内部で @code{--ps} を使用し@c
290 ます。画像の DPI 解像度は以下のようにセットします:
296 PDF を生成します。これは内部で @code{--ps} を使用します。
300 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
301 @command{lilypond} を chroot jail 環境で実行します。
302 @c (訳者: chroot jail 環境とはセキュリティのためにカレント プロセスに対して@c
303 ルート ディレクトリの位置を変更すること。)
305 @code{--jail} オプションは、Web サーバを通じて LilyPond 譜刻を実行するときや
306 LilyPond が外部から提供されたソースを実行するときに、@code{--safe} よりも自由@c
309 @code{--jail} オプションはコンパイル プロセスの開始直前に @command{lilypond} の
310 ルートを @var{jail} に変更します。それからユーザとグループを提供された環境に@c
311 マッチするように変更し、カレント ディレクトリは @var{dir} に変更されます。この@c
312 セットアップは jail (牢獄) から抜け出せないということを (少なくとも理論的には)
313 保証します。@code{--jail} を指定した @command{lilypond} の実行はルート (ユーザ@c
314 名) として行われる必要があります。通常、これは @command{sudo} を用いた安全な方@c
317 jail のセットアップは少々デリケートな問題です。LilyPond がソースをコンパイルす@c
318 るのに必要とされるものすべてを @emph{jail の内部} で見つけられるということを保@c
319 証しなければならないからです。一般的なセットアップには以下の項目が含まれます:
322 @item 専用のファイルシステムをセットアップする
323 @code{noexec}, @code{nodev}, @code{nosuid} などのセーフ オプションでマウントす@c
324 るための専用ファイルシステムを作成すべきです。こうすることで、LilyPond から実@c
325 行可能形式ファイルを実行したり、デバイスに直接書き込むことは不可能になります。@c
326 専用のパーティションを作成することを望まないのなら、適当なサイズのファイルを作@c
327 成し、それを使用してループ デバイス (ループバック デバイス) をマウントしてくだ@c
328 さい。専用ファイルシステムはさらに、 LilyPond が許可されたディスク容量以上には@c
331 @item 専用のユーザをセットアップする
332 jail 内部で LilyPond を実行する際、低い権限を持つ専用のユーザとグループ (仮に
333 @code{lily}/@code{lily} とします) で行うべきです。このユーザが書き込み可能な@c
334 ディレクトリが 1 つだけ存在すべきであり、それを @var{dir} に渡します。
337 LilyPond は実行中にいくつかのファイルを読み込む必要があります。それらのファイ@c
338 ルをすべて jail にコピーしておきます。それらのファイルが本当のルート ファイル@c
339 システムで存在しているパスと同じパスにコピーします。LilyPond インストールの内@c
340 容すべて (例えば、@file{/usr/share/lilypond}) をコピーすべきです。
342 問題が発生した場合、その原因を突き止める最も簡単な方法は @command{strace} を@c
343 使って LilyPond を実行することです。これによりどのファイルが見当たらないのかが@c
347 @code{noexec} でマウントされた jail の中では、外部プログラムを実行することは一@c
348 切できません。そのため、外部プログラムを必要としないバックエンドで LilyPond を@c
349 実行しなければなりません。すでに述べたように、jail モードでの LilyPond の実行@c
350 はスーパーユーザ権限で行われなければなりません (もちろん、その権限はすぐに外さ@c
351 れます)、たぶん @command{sudo} を使います。LilyPond が使用可能な CPU 時間を数@c
352 秒に制限する (例えば、@command{ulimit -t} を使って) というのは良いアイディアで@c
353 す。さらに、OS がサポートしているのなら、割り当て可能なメモリ容量を制限すると@c
362 冗長表示モードにします: 読み込むすべてのファイルのフル パスを表示して、時間情@c
366 GNU LilyPond の保証責任を表示します。(GNU LilyPond には@strong{保証責任はあり@c
372 @translationof Environment variables
375 @cindex LILYPOND_DATADIR
377 @command{lilypond} は以下の環境変数を認識します:
379 @item LILYPOND_DATADIR
380 これはデフォルトで参照するロケール メッセージとデータ ファイルがあるディレクト@c
381 リを指定します。このディレクトリは @file{ly/}, @file{ps/}, @file{tex/} などの@c
385 これはワーニング メッセージの言語を選択します。
387 @item LILYPOND_GC_YIELD
388 この変数を使ってメモリ使用量とパフォーマンスを調節することができます。これはメ@c
389 モリ管理の振る舞いを調整するパーセント値です。高い値にするとプログラムはより多@c
390 くのメモリを使用し、低い値にするとより多くの CPU 時間を使用します。デフォルト@c
398 @translationof Error messages
400 @cindex error messages
401 ファイルのコンパイルの最中にはさまざまなエラー メッセージが表示される可能性が@c
408 何か疑わしいことがあります。あなたが何か普通でないことをリクエストしている場合@c
409 は、そのメッセージを理解して、それを無視することができます。しかしながら、@c
410 Warning は通常、入力ファイルに何か問題があることを示しています。
413 何か明らかに問題があります。カレントの処理ステップ (構文解析、構文解釈、フォー@c
414 マット) は終了され、次のステップは飛ばされます。
419 何か明らかに問題があり、LilyPond はコンパイルを続けられません。これが起きるこ@c
420 とは稀です。これが起こるのはたいてい、フォントのインストールに問題があるためで@c
424 @cindex trace, Scheme
427 Scheme コードの実行中に発生するこのエラーは Sceme インタプリタによって引き起こ@c
428 されます。冗長オプション (@code{-V} または @code{--verbose}) 付きで実行してい@c
429 る場合、問題となっている関数呼び出しの呼び出し追跡が表示されます。
431 @item Programming error
432 @cindex Programming error
433 内部的な矛盾があります。このエラー メッセージはプログラマとデバッガを助けるこ@c
434 とを意図したものです。通常、それらは無視できます。時々、それらは非常に大きな@c
435 メッセージとなり、他の出力を見えにくくします。
437 @item Aborted (core dumped)
438 これは、プログラムをクラッシュさせる深刻なプログラミング エラーを示していま@c
439 す。そのようなエラーは決定的なものだと考えられます。あなたがそのようなエラーで@c
440 つまずいた場合、バグ レポートを送ってください。
443 @cindex errors, message format
444 警告とエラーを入力ファイルのある部分にリンクさせることが可能な場合、エラー
448 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
449 @var{offending input line}
452 エラーが見つかった場所を示すために問題のある行に改行が挿入されます。例えば:
455 test.ly:2:19: error: not a duration: 5
460 これらの位置は LilyPond が警告やエラーが発生した位置を最善を尽くして推測したも@c
461 のですが、(ごく当たり前のことですが) 警告とエラーは何か予期しないことが起こっ@c
462 たときに発生するものです。入力ファイルの示された行にエラーを見つけることができ@c
463 ない場合は、示された位置の 1 行か 2 行上をチェックしてみてください。
466 @node convert-ly を使ってファイルを更新する
467 @section @command{convert-ly} を使ってファイルを更新する
468 @translationof Updating files with convert-ly
470 @cindex Updating a LilyPond file
473 LilyPond の入力構文は、さまざまな方法で単純化または改善するために、定期的に変@c
474 更されます。その副作用として、LilyPond のインタプリタはしばしば古い入力ファイ@c
475 ルと互換性を持たなくなります。これを救済するために、プログラム
476 @command{convert-ly} を用いることで、たいていの LilyPond のバージョン間での構@c
479 このプログラムは古いバージョン番号を検出するために入力ファイルの @code{version}
480 ステートメントを使用します。たいていの場合、あなたの入力ファイルをアップグレー@c
484 convert-ly -e myfile.ly
488 MacOS@tie{}X ユーザはこのコマンドをメニュー エントリ (@code{Compile > Update
489 syntax}) 下で実行することになるかもしれません。
491 myfile.ly に変更が加えられず、myfile.ly.NEW というファイルが作成された場合、@c
492 myfile.ly はすでに更新されています。
495 * convert-ly のコマンド ライン オプション::
499 @node convert-ly のコマンド ライン オプション
500 @subsection @command{convert-ly} のコマンド ライン オプション
501 @translationof Command line options for convert-ly
503 @command{convert-ly} は常にそれが扱っている最新の構文変更に変換します。このこ@c
504 とは、通常、ファイルの中にある @code{version} 番号は @command{convert-ly} 自体@c
505 のバージョンよりも低いということを意味します。
507 texinfo ファイルの中にある LilyPond 断片をアップグレードするには以下を使用して@c
511 convert-ly --from=... --to=... --no-version *.itely
514 2 つのバージョン間での LilyPond 構文の変更を調べるには、以下を使用してください:
517 convert-ly --from=... --to=... -s
520 1 度に多くのファイルをアップグレードするには、@code{convert-ly} に標準 UNIX コ@c
521 マンドを組み合わせてください。以下の例はカレント ディレクトリの中にあるすべての
522 @code{.ly} ファイルをアップグレードします:
525 for f in *.ly; do convert-ly -e $f; done;
528 一般に、このプログラムは以下のように呼び出されます:
531 convert-ly [@var{option}]@dots{} @var{file}@dots{}
539 入力ファイルのインライン編集を行います。@code{--output} をオーバライドします。
541 @item -f,--from=@var{from-patchlevel}
542 変換元のバージョンをセットします。これがセットされていない場合、@c
543 @command{convert-ly} は入力ファイルの中にある @code{version} 文字列を基に推測@c
546 @item -n,--no-version
547 通常、@command{convert-ly} は @code{\version} インジケータを出力に付け加えま@c
548 す。このオプションを指定すると、それを抑制します。
550 @item -s, --show-rules
553 @item --to=@var{to-patchlevel}
554 変換先のバージョンをセットします。デフォルトは利用可能な最新バージョンです。
561 @node convert-ly の問題点
562 @subsection @command{convert-ly} の問題点
563 @translationof Problems with convert-ly
565 言語の変更がすべて処理されるわけではありません。指定できる出力オプションは 1
566 つだけです。自動的に Scheme と更新することと LilyPond の Scheme インタフェイス@c
567 を更新することはまったく異なります。Scheme コードの調整は手動で行う覚悟でいて@c
570 convert-ly が処理できないことがいくつかあります。ここに、LilyPond コミュニティ@c
571 がそのことについて訴えたリストを挙げます。
573 convert-ly は必要とされるすべての変更をスムーズに実装できるような構造になって@c
574 いないため、このようなバグ レポートがあります。
578 Doesn't always convert figured bass correctly, specifically things like {<
579 >}. Mats' comment on working around this:
580 To be able to run convert-ly
581 on it, I first replaced all occurrences of '{<' to some dummy like '{#'
582 and similarly I replaced '>}' with '&}'. After the conversion, I could
583 then change back from '{ #' to '{ <' and from '& }' to '> }'.
584 Doesn't convert all text markup correctly. In the old markup syntax,
585 it was possible to group a number of markup commands together within
587 -#'((bold italic) "string")
588 This will incorrectly be converted into
589 -\markup{{\bold italic} "string"}
590 instead of the correct
591 -\markup{\bold \italic "string"}
593 Doesn't handle \partcombine
594 Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple
597 \magnify isn't changed to \fontsize.
598 - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
599 remove-tag isn't changed.
600 - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
601 first-page-number isn't changed.
602 - first-page-number no => print-first-page-number = ##f
603 Line breaks in header strings aren't converted.
604 - \\\\ as line break in \header strings => \markup \center-align <
605 "First Line" "Second Line" >
606 Crescendo and decrescendo terminators aren't converted.
610 \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly
613 \markup{ \center-align <{ ... }> } should be converted to:
614 \markup{ \center-align {\line { ... }} }
615 but now, \line is missing.
617 Special LaTeX characters such as $~$ in text are not converted to UTF8.
619 \score{} must now begin with a music expression. Anything else
620 (particularly \header{}) must come after the music.
626 @translationof Reporting bugs
629 @cindex reporting bugs
631 クラッシュや間違った出力を発生させる入力があれば、それがバグです。我々の Google
632 バグ トラッカ上にカレント バグのリストがあります:
634 @uref{http://code.google.com/p/lilypond/issues/list}
636 ここにリスト アップされていないバグを発見した場合、以下の宛先にそのバグを報告@c
639 @uref{http://lilypond.org/web/devel/participating/bugs}
641 レポートの中のバグの例は最小化して提出してください。我々には可能な限り小さくさ@c
642 れてはいないレポートを調査するだけのリソースがありません。