@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- @ignore Translation of GIT committish: 2429e825c154f15cda52cf8a44f12e23d9f6a1e6 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' Guide, node Updating translation committishes.. @end ignore @c \version "2.19.21" @c Translators: Masamichi Hosoda, Yoshiki Sawada @c Translation status: post-GDP @node lilypond を実行する @chapter @command{lilypond} を実行する @translationof Running lilypond この章では LilyPond を実行するための細かな規定について詳述します。 @menu * 通常の使用方法:: * コマンド ラインの使用方法:: * エラー メッセージ:: * 一般的なエラー:: @end menu @node 通常の使用方法 @section 通常の使用方法 @translationof Normal usage たいていのユーザは GUI から LilyPond を実行します。@c まだ実行したことがないのであれば @rlearning{チュートリアル} を読んでください。 lilypond ファイルを書くのに代替のエディタを使用するのであれば、@c そのエディタのドキュメントを読んでください。 @node コマンド ラインの使用方法 @section コマンド ラインの使用方法 @translationof Command-line usage この節にはコマンド ラインで LilyPond を使用するための追加情報が含まれます。@c これにはプログラムに追加オプションを渡す必要があるかもしれません。@c さらに、いくつかの特別なプログラム (@code{midi2ly} など) は@c コマンド ラインからしか利用できません。 ここで @q{コマンド ライン} とは、OS の中にあるコマンド ラインを意味します。@c Windows ユーザは @q{DOS シェル} や @q{コマンド シェル} @q{コマンド プロンプト} という言葉の方が馴染みがあるかもしれません。@c MaxOS@tie{}X ユーザは @q{ターミナル} や @q{コンソール} という言葉の方が@c 馴染みがあるかもしれません。@c MaxOS@tie{}X ユーザは追加のセットアップが必要かもしれません。@c @rweb{MacOS X} を参照してください。 OS のコマンド ラインの使用方法についての説明は@c このマニュアルが扱う範囲ではありません。@c コマンド ラインに馴染みがない場合は、@c その内容を扱っている他のドキュメントをあたってください。 @menu * LilyPond を呼び出す:: * LilyPond の基本的なコマンド ライン オプション:: * LilyPond の高度なコマンド ライン オプション:: * 環境変数:: * chroot jail 環境で LilyPond を実行する:: @end menu @node LilyPond を呼び出す @unnumberedsubsec @command{lilypond} を呼び出す @translationof Invoking lilypond @command{lilypond} 実行可能形式ファイルは@c コマンド ラインから以下のように呼び出されます。 @example lilypond [@var{option}]@dots{} @var{file}@dots{} @end example 拡張子を持たないファイル名で呼び出された場合、@c @file{.ly} が最初に試されます。@c stdin から入力を読み込む場合には、@c @var{file} に対してダッシュ (@code{-}) を使用します。 @file{filename.ly} が処理されると、@c lilypond は出力として @file{filename.ps} と @file{filename.pdf} を作り出します。@c いくつかのファイルを指定することもできます。@c その場合、それらのファイルは個々に処理されます。@c @footnote{GUILE のステータスは @code{.ly} 処理後にリセットされません。@c そのため、Scheme 内部からいかなるシステム デフォルトも変更しないよう@c 注意してください。} @file{filename.ly} が複数の @code{\book} ブロックを含んでいる場合、@c 残りのの score は @file{filename-1.pdf} から始まる番号付きのファイルに出力されます。@c さらに、@code{output-suffix} がベース名と番号の間に挿入されます。@c 以下の内容を含んでいる入力ファイルは @example #(define output-suffix "violin") \score @{ @dots{} @} #(define output-suffix "cello") \score @{ @dots{} @} @end example @noindent @var{base}@file{-violin.pdf} と @var{base}@file{-cello-1.pdf} を出力します。 @unnumberedsubsubsec 標準シェルで LilyPond を使う LilyPond はコマンドラインアプリケーションなので、@c LilyPond を呼び出すために @q{シェル} の機能をうまく利用することができます。 例えば: @example lilypond *.ly @end example @noindent は、カレントディレクトリのすべての LilyPond ファイルを処理できるでしょう。 コンソール出力をリダイレクトする(例えばファイルへ)のも@c 有用でしょう。 @example lilypond file.ly 1> stdout.txt lilypond file.ly 2> stderr.txt lilypond file.ly &> all.txt @end example @noindent それぞれ @q{普通の} 出力、@q{エラー} のみ、@q{すべて} 、 をファイルにリダイレクトします。@c あなたの使用しているシェル、コマンドプロンプト (Windows)、@c ターミナルやコンソール (MacOS X) がリダイレクトをサポートしているか、@c あるいは構文が異なるかどうかは、そのシェルのドキュメントを調べてください。@c 以下は、カレントディレクトリ以下のすべての入力ファイルを再帰的に探し、@c 処理する例です。@c 出力ファイルは元の入力ファイルのあるディレクトリではなく、@c コマンドを実行したディレクトリに置かれます。 @example find . -name '*.ly' -exec lilypond '@{@}' \; @end example @noindent これは MacOS@tie{}X ユーザでも使えるでしょう。 Windows ユーザは; @example forfiles /s /M *.ly /c "cmd /c lilypond @@file" @end example @noindent スタートメニューから @code{スタート > アクセサリ > コマンドプロンプト} とたどるか、Windows 8 であれば@c 検索ウィンドウで @q{コマンドプロンプト} と入力して、 @code{コマンド プロンプト} を起動し、@c これらのコマンドを入力します。 または、入力ファイルを含むすべてのサブフォルダを含む、@c 最上位のフォルダを明示的に指定できる @code{/p} オプションもあります; @example forfiles /s /p C:\Documents\MyScores /M *.ly /c "cmd /c lilypond @@file" @end example 最上位フォルダ名がスペース文字を含む場合は、@c パス全体をダブルクオーテーションで囲む必要があります。; @example forfiles /s /p "C:\Documents\My Scores" /M *.ly /c "cmd /c lilypond @@file" @end example @node LilyPond の基本的なコマンド ライン オプション @unnumberedsubsec LilyPond の基本的なコマンド ライン オプション @translationof Basic command line options for LilyPond @cindex Invoking @command{lilypond} (@command{lilypond} を呼び出す) @cindex command line options for @command{lilypond} (@command{lilypond} のためのコマンド ライン オプション) @cindex options, command line (コマンド ライン オプション) @cindex switches (切り換え) 以下のオプションがサポートされます: @table @code @item -b, --bigpdfs @cindex bigpdfs 通常より大きい PDF ファイルを生成します。@c (フォント最適化がほんの少しかまったく無くなるため。)@c しかし、2 つ以上の PDF ファイルを @w{@code{pdftex}}、@w{@code{xetex}} や @w{@code{luatex}} ドキュメントの中に組み込む場合、@c さらに ghostscript 処理で重複するフォントデータを統合し、@c @emph{著しく} 小さい PDF ファイルを得ることができます。 @example lilypond -b myfile @end example それから @code{ghostscript} を呼び出します。 @example gs -q -sDEVICE=pdfwrite -o gsout.pdf myfile.pdf @end example @code{pdfsizeopt.py} は、さらにサイズの最適化ができます。 @example pdfsizeopt.py --use-multivalent=no gsout.pdf final.pdf @end example @item -d, --define-default=@var{var}=@var{val} @ref{Advanced command line options for LilyPond} を参照してください。 @cindex Scheme, expression evaluation (Scheme 表記の評価) @cindex expression evaluation, Scheme (Scheme 表記の評価) @item -e, --evaluate=@var{expr} @file{.ly} ファイルを解析する前に Scheme @var{expr} を評価します。@c 複数の @code{-e} オプションが与えられた場合、それらは順番に評価されます。 Scheme 表記は @code{guile-user} モジュールの中で評価されます。@c そのため、@var{expr} の中で定義を使いたいのならば、@c コマンド ラインで以下を使用して、 @example lilypond -e '(define-public a 42)' @end example @noindent @code{.ly} ファイルの先頭に以下を含めます: @example #(use-modules (guile-user)) @end example @warning{Windows ユーザはシングル クォートではなく、@c ダブル クォートを使う必要があります。} @cindex output, format (出力のフォーマット) @cindex format, output (出力のフォーマット) @item -f, --format=@var{format} フォーマットを指定します。@c @code{format} の選択肢は @code{ps}, @code{pdf}, それに @code{png} です。 例: @code{lilypond -fpng @var{filename}.ly} @item -h, --help 使用方法の要約を表示します。 @item -H, --header=@var{FIELD} ヘッダ フィールドをファイル @file{BASENAME.@var{FIELD}} に吐き出します。 @item -i, --init=@var{file} init ファイルとして @var{file} をセットします (デフォルト: @file{init.ly})。 @cindex file searching (ファイル サーチ) @cindex search path (サーチ パス) @item -I, --include=@var{directory} @var{directory} を入力ファイルのサーチ パスに追加します。 複数の -I オプションを与えることができます。@c 検索は最初に指定されたディレクトリから開始され、@c 入力ファイルが見つからない場合は次に指定されたディレクトリを検索します。 @cindex chroot jail, running inside (chroot jail 内部で実行する) @item -j, --jail=@var{user},@var{group},@var{jail},@var{dir} @command{lilypond} を chroot jail 環境で実行します。@c (訳者: chroot jail 環境とはセキュリティのために@c カレント プロセスに対してルート ディレクトリの位置を変更すること。) @option{--jail} オプションは、@c Web サーバ経由で LilyPond 譜刻を提供する時や LilyPond が外部ソースから送られてきたコマンドを実行する時に、@c @code{--dsafe} よりも自由度の高い代替手段を提供します。 (@ref{Advanced command line options for LilyPond} を参照してください。) @code{--jail} オプションはコンパイル プロセスの開始直前に @command{lilypond} のルート ディレクトリを @var{jail} に変更します。@c それから、ユーザとグループを @var{user} と @var{group} に変更して、@c カレント ディレクトリを @var{dir} に変更します。@c これにより、jail (牢獄) から抜け出せないことを (少なくとも理論上は) 保証します。@c @code{--jail} を指定した @command{lilypond} の実行は root (ユーザ名) として行う必要があります。@c 通常、これは @command{sudo} を用いた安全な方法で行います。 jail のセットアップは比較的複雑な問題です。@c LilyPond がソースをコンパイルするのに必要とされるものすべてを @emph{jail の内部} で見つけられるということを保証しなければならないからです。@c 一般的なセットアップには以下の項目が含まれます: @table @asis @item 専用のファイルシステムをセットアップする @code{noexec}, @code{nodev}, @code{nosuid} などのセーフ オプションで@c マウントするための専用ファイルシステムを作成すべきです。@c こうすることで、LilyPond から実行可能形式ファイルを実行したり、@c デバイスに直接書き込むことは不可能になります。@c 専用のパーティションを作成することを望まないのなら、@c 適当なサイズのファイルを作成し、@c それを使用してループ デバイス (ループバック デバイス) をマウントしてください。@c 専用ファイルシステムはさらに、@c LilyPond が許可されたディスク容量以上には書き込めないということを保証します。 @item 専用のユーザをセットアップする jail 内部で LilyPond を実行する際、@c 低い権限を持つ専用のユーザとグループ (仮に @code{lily}/@code{lily} とします) で行うべきです。@c このユーザが書き込み可能なディレクトリが 1 つだけ存在すべきであり、@c それを @var{dir} に渡します。 @item jail の準備をする LilyPond は実行中にいくつかのファイルを読み込む必要があります。@c それらのファイルをすべて jail にコピーしておきます。@c それらのファイルが本当のルート ファイル システムで存在しているパスと@c 同じパスにコピーします。@c LilyPond インストールの内容すべて (例えば、@file{/usr/share/lilypond}) を@c コピーすべきです。 問題が発生した場合、その原因を突き止める最も簡単な方法は @command{strace} を使って LilyPond を実行することです。@c これによりどのファイルが見当たらないのかがわかります。 @item LilyPond を実行する @code{noexec} でマウントされた jail の中では、@c 外部プログラムを実行することは一切できません。@c そのため、外部プログラムを必要としないバックエンドで LilyPond を実行しなければなりません。@c すでに述べたように、@c jail モードでの LilyPond の実行はスーパーユーザ権限で行われなければならず (もちろん、その権限はすぐに外されます)、@c たぶん @command{sudo} を使います。@c LilyPond が使用可能な CPU 時間を数秒に制限する (例えば、@command{ulimit -t} を使って) というのも良い方法です。@c さらに、OS がサポートしているのなら、@c 割り当て可能なメモリ容量を制限するというのも良い方法です。@c @ref{LilyPond in chroot jail} も参照してください。 @end table @cindex loglevel (ログレベル) @cindex output, verbosity (出力の饒舌さ) @item -l, --loglevel=@var{LEVEL} コンソール出力の饒舌さを @var{LEVEL} にセットします。@c 取り得る値は以下の通りです: @table @code @item NONE 何も出力しません。エラー メッセージさえも出力しません。 @item ERROR エラー メッセージだけを出力します。警告や進捗メッセージは出力しません。 @item WARN 警告とエラー メッセージを出力し、進捗メッセージは出力しません。 @item BASIC_PROGRESS 基本的な進捗メッセージ (成功メッセージ)、警告、それにエラー メッセージを@c 出力します。 @item PROGRESS すべての進捗メッセージ、警告とエラー メッセージを出力します。 @item INFO (デフォルト) 進捗メッセージ、警告、エラーそれに追加の実行情報を出力します。 @item DEBUG 饒舌なデバッグ出力を含む、出力可能なメッセージをすべて出力します。 @end table @cindex directory, redirect output (出力をディレクトリにリダイレクトする) @cindex output, setting filename (出力のファイル名を設定する) @cindex output, directory (出力ディレクトリ) @item -o, --output=@var{FILE} or @var{FOLDER} デフォルトの出力ファイルとして @var{FILE} をセットします。@c セットした名前のフォルダが存在する場合、そのフォルダに、@c 入力ファイルから取ったファイル名で出力されます。@c 適切な接尾辞が追加されます (つまり、pdf ならば拡張子 @code{.pdf} が追加されます)。 @cindex PS (Postscript), output (PS (PostScript) 出力) @cindex Postscript (PS), output (PostScript (PS) 出力) @cindex output, PS (Postscript) (PS (PostScript) 出力) @item --ps PostScript を生成します。 @cindex PNG (Portable Network Graphics), output (PNG 出力) @cindex output, PNG (Portable Network Graphics) (PNG 出力) @item --png 各ページの図を PNG フォーマットで生成します。@c これは内部で @code{--ps} を使用します。@c 画像の DPI 解像度は以下のようにセットします: @example -dresolution=110 @end example @cindex PDF (Portable Document Format), output (PDF 出力) @cindex output, PDF (Portable Document Format) (PDF 出力) @item --pdf PDF を生成します。@c これは内部で @code{--ps} を使用します。 @item -v, --version バージョン情報を表示します。 @item -V, --verbose 冗長表示モードにします: 読み込むすべてのファイルのフル パスを表示して、時間情報を表示します。 @item -w, --warranty GNU LilyPond の保証責任を表示します。@c (GNU LilyPond には@strong{保証責任はありません}!) @end table @node LilyPond の高度なコマンド ライン オプション @unnumberedsubsec LilyPond の高度なコマンド ライン オプション @translationof Advanced command line options for LilyPond @table @code @item -d@var{[option-name]}=@var{[value]}, --define-default=@var{[option-name]}=@var{[value]} これは内部 Scheme 関数に @var{value} をセットします。@c 例えば、 @example -dbackend=svg @end example @var{value} が指定されない場合、デフォルト値が使われます。@c 例えば、@var{option-name} に接頭辞 @code{no-} を付けると、そのオプションは @q{off} になります @cindex point and click, command line (コマンド ラインでポイント&クリックを指定する) @example -dpoint-and-click=#f @end example @noindent は @example -dno-point-and-click @end example と同じです。 @end table @noindent 以下にサポートされるオプションをデフォルト値とともに示します: @multitable @columnfractions .33 .16 .51 @item @strong{シンボル} @tab @strong{値} @tab @strong{説明/オプション} @item @code{anti-alias-factor} @tab @code{1} @tab (与えられた因数を用いて) 高解像度で描画して、その結果をスケール ダウンすることにより、@code{PNG} 画像の輪郭がギザギザになることを防ぎます。 @item @code{aux-files} @tab @code{#t} @tab @code{eps} バックエンドを使うときに @code{.tex}, @code{.texi}, @code{.count} ファイルを作成します。 @item @code{backend} @tab @code{ps} @tab デフォルト設定です。Postscript ファイル (デフォルト) は@c @code{TTF}, @code{Type1}, それに @code{OTF} フォントを埋め込みます。@c フォントのサブセットは作成されません。@c @q{東洋} の文字セットを用いるとファイルが非常に大きくなる可能性が@c あることに注意してください。 @item @tab @code{eps} @tab @command{lilypond-book} コマンドのデフォルトです。@c これは、1 つのファイルにすべてのページとフォントを埋め込んだものと、@c ページ毎に分離しフォントを埋め込まない eps ファイルの、両方を吐き出します。 @item @tab @code{null} @tab 楽譜を出力しません。@code{-dno-print-pages} と同じ効果を持ちます。 @item @tab @code{scm} @tab 内部的な Scheme ベースの描画コマンドを吐き出します。 @item @tab @code{svg} @tab ページ毎の SVG ファイルが全ページ分作られます。@c LilyPond 自身の音楽グリフを除き、フォントは埋め込まれません。@c そのため、テキストや歌詞の最適な描画を得るためには、@c SVG ビュアーにフォントが必要となります。@c SVG ビュアーが対応していないことがあるので、@c @q{フォントエイリアス} や @q{フォントリスト} を使用しないことをお勧めします。@c @emph{Web Open Font Format} (WOFF) ファイルを使うときには、@c 追加の @code{svg-woff} スイッチが必要となります。 @end multitable @noindent @strong{SVG バッグエンド出力の注意:} LilyPond のデフォルトフォント(@code{LilyPond Serif}, @code{LilyPond Sans Serif} と @code{LilyPond Monospace})は、@c まさに @emph{ローカル} フォントエイリアスです。@c そのため、@code{svg} バックエンドを使う場合は、@c ソースファイルで明示的にデフォルトフォントを設定する必要があります; @quotation @verbatim \paper { #(define fonts (make-pango-font-tree "TeX Gyre Schola" "TeX Gyre Heros" "TeX Gyre Cursor" (/ staff-height pt 20))) } @end verbatim @end quotation @ruser{ドキュメント全体のフォント} も参照してください。 @multitable @columnfractions .33 .16 .51 @c 未訳 @item @code{check-internal-types} @tab @code{#f} @tab Check every property assignment for types. @item @code{clip-systems} @tab @code{#f} @tab Extract music fragments out of a score. This requires that the @code{clip-regions} function has been defined within the @code{\layout} block. See @ruser{Extracting fragments of music}. No fragments are extracted though if used with the @option{-dno-print-pages} option. @item @code{datadir} @tab @tab Prefix for data files (read-only). @item @code{debug-gc} @tab @code{#f} @tab Dump memory debugging statistics. @item @code{debug-gc-assert-parsed-dead} @tab @code{#f} @tab For memory debugging: Ensure that all references to parsed objects are dead. This is an internal option, and is switched on automatically for @code{`-ddebug-gc'}. @item @code{debug-lexer} @tab @code{#f} @tab Debug the flex lexer. @item @code{debug-page-breaking-scoring} @tab @code{#f} @tab Dump scores for many different page breaking configurations. @item @code{debug-parser} @tab @code{#f} @tab Debug the bison parser. @item @code{debug-property-callbacks} @tab @code{#f} @tab Debug cyclic callback chains. @item @code{debug-skylines} @tab @code{#f} @tab Debug skylines. @item @code{delete-intermediate-files} @tab @code{#t} @tab コンパイルの途中で作成される使用しない中間ファイル @code{.ps} を@c 削除します。 @item @code{dump-cpu-profile} @tab @code{#f} @tab CPU 時間情報を吐き出します (システムに依存します)。 @item @code{dump-profile} @tab @code{#f} @tab 各ファイルのメモリと CPU 時間情報を吐き出します。 @c 未訳 @item @code{dump-signatures} @tab @code{#f} @tab Dump output signatures of each system. Used for regression testing. @item @code{eps-box-padding} @tab @code{#f} @tab 出力される EPS の左端に与えられた数の余白を追加します (単位は mm です)。 @item @code{gs-load-fonts} @tab @code{#f} @tab Ghostscript 経由でフォントを読み込みます。 @item @code{gs-load-lily-fonts} @tab @code{#f} @tab LilyPond のフォントだけを Ghostscript 経由で読み込みます。 @item @code{gui} @tab @code{#f} @tab 出力を表示せずに処理を行い、すべての出力をログ ファイルに@c リダイレクトします。 @end multitable @noindent @strong{Windows ユーザへの注意:} @code{lilypond.exe} がデフォルトで@c すべての進捗情報をコマンド ウィンドウに出力するのに対して、@c @code{lilypond-windows.exe} は進捗情報を出力しません。@c @option{-dgui} オプションを用いることで、出力をログ ファイルに@c リダイレクトさせることができます。 @multitable @columnfractions .33 .16 .51 @item @code{help} @tab @code{#f} @tab このヘルプを表示します。 @item @code{include-book-title-preview} @tab @code{#t} @tab プレビュー画像にブック タイトルを含めます。 @item @code{include-eps-fonts} @tab @code{#t} @tab システム毎の EPS ファイルにフォントを含めます。 @item @code{include-settings} @tab @code{#f} @tab グローバル設定のファイルをインクルードします。このファイルは楽譜の@c 処理が開始する前にインクルードされます。 @item @code{job-count} @tab @code{#f} @tab 与えられた数のジョブで、並行して処理します。 @item @code{log-file} @tab @code{#f [file]} @tab 2 番目の引数として文字列 @code{FOO} が与えられた場合、出力を@c ログ ファイル @code{FOO} にリダイレクトします。 @item @code{max-markup-depth} @tab @code{1024} @tab マークアップ ツリーの階層の最大値です。それよりも深い階層を持つ@c マーックアップがある場合、そのマークアップは終了していないと見なされて、@c 警告が表示され、null マークアップが返されます。 @item @code{midi-extension} @tab @code{"midi"} @tab MIDI 出力ファイルのデフォルトのファイル拡張子を与えられた文字列に@c 設定します。 @c 未訳 @item @code{music-strings-to-paths} @tab @code{#f} @tab Convert text strings to paths when glyphs belong to a music font. @item @code{paper-size} @tab @code{\"a4\"} @tab デフォルトの紙面サイズを設定します。文字列をエスケープ記号付の 2 重@c 引用符 @code{\"} で囲む必要があることに注意してください。 @item @code{pixmap-format} @tab @code{png16m} @tab 画像出力のための GhostScript の出力フォーマットを設定します。 @item @code{point-and-click} @tab @code{#t} @tab PDF と SVG 出力に @q{ポイント&クリック} リンクを付け加えます。@c @ref{Point and click} を参照してください。 @item @code{preview} @tab @code{#f} @tab 通常の出力に加えてプレビュー画像を作成します。 @end multitable @noindent このオプションはすべてのバックエンド -- @code{pdf}, @code{png}, @code{ps}, @code{eps}, それに @code{svg} -- でサポートされますが、@code{scm} ではサポートされません。@c このオプションはタイトルと楽譜の最初の段を保持するファイル -- @code{myFile.preview.extension} という形式のファイル名を持ちます -- を出力します。@c @code{\book} ブロックや @code{\bookpart} ブロックが使われている場合、@c @code{\book}, @code{\bookpart}, それに @code{\score} のタイトルが出力@c に譜刻され、@code{\paper} 変数 @code{print-all-headers} が @code{#t} に@c セットされている場合は各 @code{\score} ブロックの最初の段も譜刻されます。 通常の出力を抑制するには、必要に応じて @option{-dprint-pages} オプション@c または @option{-dno-print-pages} オプションを使ってください。 @multitable @columnfractions .33 .16 .51 @item @code{print-pages} @tab @code{#t} @tab すべてのページを生成します。これがデフォルトです。@option{-dpreview} を使う場合は @option{-dno-print-pages} を組み合わせると有用です。 @item @code{profile-property-accesses} @tab @code{#f} @tab @code{get_property()} 関数呼び出しの統計を取ります。 @item @code{protected-scheme-parsing} @tab @code{#t} @tab パーサでインライン Scheme のエラーが発生しても処理を続けます。@c @code{#f} に設定されている場合、エラー終了して、スタック トレースを表示@c します。 @item @code{read-file-list} @tab @code{#f [file]} @tab 処理する入力ファイルのリストを保持するファイルを指定します。 @item @code{relative-includes} @tab @code{#f} @tab @code{\include} コマンドを処理するとき、インクルードするファイルを@c (ルート ファイルからではなく) カレント ファイルからの相対位置で検索します。 @item @code{resolution} @tab @code{101} @tab 生成する @code{PNG} 画像の解像度を与えられた値に設定します。@c 単位は dpi です。 @item @code{safe} @tab @code{#f} @tab @code{.ly} 入力ファイルを信用しません。 @end multitable @noindent Web サーバ経由で LilyPond 譜刻が利用可能な場合、@option{--safe} オプションか @option{--jail} オプションのどちらかを @b{指定する必要があります}。@c @option{--safe} オプションはインライン Scheme コードが無茶をする -- 例えば、以下のような -- ことを防ぎます。 @quotation @verbatim #(s ystem "rm -rf /") % 正しく書くのはあまりにも危険 { c4^$(ly:gulp-file "/etc/passwd") % 破壊的ではないが悪意がある } @end verbatim @end quotation @option{-dsafe} オプションはインライン Scheme 表記を特別なセーフ モジュールの中で評価します。@c これは GUILE @file{safe-r5rs} モジュールに由来しますが、@c @file{scm/safe-lily.scm} でリスト アップされている LilyPond API 関数の@c いくつかも追加されています。 さらに、セーフ モードでは @code{\include} は許可されず、@TeX{} 文字列の@c 中でバックスラッシュを使うこともできません。@c また、セーフ モードでは LilyPond 変数を Scheme にインポートすることも@c できません。 @option{-dsafe} はリソースの過使用を検出 @emph{しません} ので、@c このオプションを指定してもプログラムをハングさせられる可能性があります -- 例えば、サイクリック (巡回) データ構造をバックエンドに埋め込むことに@c よってです。 そのため、LilyPond を一般公開する Web サーバで使用する場合、プロセスの@c CPU とメモリ使用を制限すべきです。 セーフ モードは多くの有用な LilyPond 楽譜断片がコンパイルされることを@c 妨げます。 @option{--jail} はさらに安全な代替手段ですが、セットアップにかかる手間も@c 増えます。@ref{Basic command line options for LilyPond} を参照してください。 @multitable @columnfractions .33 .16 .51 @item @code{separate-log-files} @tab @code{#f} @tab 入力ファイル @code{FILE1.ly}, @code{FILE2.ly}, 等に対するログ データをファイル @code{FILE1.log}, @code{FILE2.log}@dots{} に出力します。 @item @code{show-available-fonts} @tab @code{#f} @tab 使用可能なフォント名をリスト アップします。 @item @code{strict-infinity-checking} @tab @code{#f} @tab 浮動小数点の例外 @code{Inf} と @code{NaN} に遭遇した時、@c 強制終了します。 @item @code{strip-output-dir} @tab @code{#t} @tab 出力ファイル名を構築する時に入力ファイルのディレクトリを使用@c しません。 @c 未訳 @item @code{strokeadjust} @tab @code{#f} @tab Force PostScript stroke adjustment. This option is mostly relevant when a PDF is generated from PostScript output (stroke adjustment is usually enabled automatically for low-resolution bitmap devices). Without this option, PDF previewers tend to produce widely inconsistent stem widths at resolutions typical for screen display. The option does not noticeably affect print quality and causes large file size increases in PDF files. @item @code{svg-woff} @tab @code{#f} @tab このオプションは @code{svg} バックエンドで Web Open Format (WOFF) フォントを使うために必要となります。@c ページ毎の SVG ファイルが全ページ分作られます。@c LilyPond 自身の音楽グリフを除き、フォントは埋め込まれません。@c そのため、テキストや歌詞の最適な描画を得るためには、@c SVG ビュアーにフォントが必要となります。@c SVG ビュアーが対応していないことがあるので、@c @q{フォントエイリアス} や @q{フォントリスト} を使用しないことをお勧めします。@c @item @code{trace-memory-frequency} @tab @code{#f} @tab Scheme セルの 1 秒毎の使用数を記録します。結果を @code{FILE.stacks} と @code{FILE.graph} に吐き出します。 @item @code{trace-scheme-coverage} @tab @code{#f} @tab Scheme ファイルの適用範囲を @code{FILE.cov} に記録します。 @item @code{verbose} @tab @code{#f} @tab 饒舌な出力。つまり、loglevel を DEBUG に設定します。 @item @code{warning-as-error} @tab @code{#f} @tab すべての警告と @q{プログラミング エラー} をエラーに変更します。 @end multitable @node 環境変数 @unnumberedsubsec 環境変数 @translationof Environment variables @cindex LANG @cindex LILYPOND_DATADIR @command{lilypond} は以下の環境変数を認識します: @table @code @item LILYPOND_DATADIR これはデフォルトで参照する@c ロケール メッセージとデータ ファイルがあるディレクトリを指定します。@c このディレクトリは @file{ly/}, @file{ps/}, @file{tex/} などの@c サブディレクトリを保持しているべきです。 @item LANG これは警告メッセージの言語を選択します。 @item LILYPOND_LOGLEVEL デフォルトのログレベル。@c 明示的にログレベルが指定されずに LilyPond が呼び出された場合 (すなわち @option{--loglevel} コマンド ライン オプションが@c 指定されなかった場合)、@c この値が使用されます。 @item LILYPOND_GC_YIELD メモリ管理を調節する変数 (単位はパーセント) です。@c 大きな値は LilyPond に多くのメモリ使用を許し、@c 小さな値だと CPU 使用時間が長くなります。@c デフォルト値は @code{70} です。 この変数を使ってメモリ使用量とパフォーマンスを調節することができます。@c これはメモリ管理の振る舞いを調整するパーセント値です。@c 高い値にするとプログラムはより多くのメモリを使用し、@c 低い値にするとより多くの CPU 時間を使用します。@c デフォルト値は @code{70} です。 @end table @node chroot jail 環境で LilyPond を実行する @unnumberedsubsec chroot jail 環境で LilyPond を実行する @translationof LilyPond in chroot jail LilyPond を chroot jail 環境で実行させるようサーバをセットアップすることは@c 複雑な作業です。@c 以下にステップをリスト アップします。@c 各ステップの中にある例は Ubuntu GNU/Linux 用であり、@c @code{sudo} の使用が必要となるかもしれません。 @itemize @item 必要なパッケージをインストールします: LilyPond, GhostScript, それに ImageMagick。 @item @code{lily} という名前のユーザを作成します: @example adduser lily @end example @noindent このコマンドはユーザ @code{lily} のためにホーム フォルダ (@code{/home/lily}) と新しいグループも作成します。 @item ユーザ @code{lily} のホーム フォルダで、@c 独立したファイルシステムとして使用するファイルを作成します: @example dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 @end example @noindent このコマンドは jail ファイルシステムとして使用する 200MB のファイルを作成します。 @item ループ デバイスを作成し、ファイルシステムを作ってそれをマウントし、@c それからユーザ @code{lily} が書き込めるフォルダを作成します: @example mkdir /mnt/lilyloop losetup /dev/loop0 /home/lily/loopfile mkfs -t ext3 /dev/loop0 200000 mount -t ext3 /dev/loop0 /mnt/lilyloop mkdir /mnt/lilyloop/lilyhome chown lily /mnt/lilyloop/lilyhome @end example @item サーバのコンフィグレーションで、JAIL は @code{/mnt/lilyloop} となり、@c DIR は @code{/lilyhome} となります。 @item 以下に示すサンプル スクリプトのように必要なファイルをコピーして jail の中に大きなディレクトリ ツリーを作成します。 @code{sed} を使うことで必要な実行形式ファイルをコピーすることができます: @example for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \ cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \ \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done @end example @end itemize @subheading 32-bit Ubuntu 8.04 用のスクリプト例 @example #!/bin/sh ## defaults set here username=lily home=/home loopdevice=/dev/loop0 jaildir=/mnt/lilyloop # the prefix (without the leading slash!) lilyprefix=usr/local # the directory where lilypond is installed on the system lilydir=/$lilyprefix/lilypond/ userhome=$home/$username loopfile=$userhome/loopfile adduser $username dd if=/dev/zero of=$loopfile bs=1k count=200000 mkdir $jaildir losetup $loopdevice $loopfile mkfs -t ext3 $loopdevice 200000 mount -t ext3 $loopdevice $jaildir mkdir $jaildir/lilyhome chown $username $jaildir/lilyhome cd $jaildir mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp chmod a+w tmp cp -r -L $lilydir $lilyprefix cp -L /bin/sh /bin/rm bin cp -L /usr/bin/convert /usr/bin/gs usr/bin cp -L /usr/share/fonts/truetype usr/share/fonts # Now the library copying magic for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \ "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \ \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \ 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \ | sed '/.*=>.*/d'; done | sh -s # The shared files for ghostscript... cp -L -r /usr/share/ghostscript usr/share # The shared files for ImageMagick cp -L -r /usr/lib/ImageMagick* usr/lib ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, ### you should be able to run: ### Note that /$lilyprefix/bin/lilypond is a script, which sets the ### LD_LIBRARY_PATH - this is crucial /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly @end example @c " keep quote signs balanced for context-sensitive editors @node エラー メッセージ @section エラー メッセージ @translationof Error messages @cindex error messages (エラー メッセージ) ファイルのコンパイルの最中にはさまざまなエラー メッセージが@c 表示される可能性があります。 @table @emph @item Warning @cindex warning (警告) 何か疑わしいことがあります。@c あなたが何か普通でないことをリクエストしている場合は、@c そのメッセージを理解して、それを無視することができます。@c しかしながら、@c Warning は通常、入力ファイルに何か問題があることを示しています。 @item Error 何か明らかに問題があります。@c カレントの処理ステップ (構文解析、構文解釈、フォーマット) は終了され、@c 次のステップは飛ばされます。 @item Fatal error @cindex error (エラー) @cindex fatal error (致命的なエラー) 何か明らかに問題があり、LilyPond はコンパイルを続けられません。@c これが起きることは稀です。@c これが起こるのはたいてい、フォントのインストールに問題があるためです。 @item Scheme error @cindex trace, Scheme (Scheme トレース) @cindex call trace (トレースを呼び出す) @cindex Scheme error (Scheme エラー) Scheme コードの実行中に発生するこのエラーは Scheme インタプリタによって引き起こされます。@c 冗長オプション (@option{-V} または @option{--verbose}) 付きで実行している場合、@c 問題となっている関数呼び出しの呼び出し追跡が表示されます。 @item Programming error @cindex Programming error (プログラミング エラー) 内部的な矛盾があります。@c このエラー メッセージはプログラマとデバッガを助けることを意図したものです。@c 通常、それらは無視できます。@c 時々、それらは非常に大きなメッセージとなり、他の出力を見えにくくします。 @item Aborted (core dumped) これは、プログラムをクラッシュさせる深刻なプログラミング エラーを@c 示しています。@c そのようなエラーは決定的なものだと考えられます。@c あなたがそのようなエラーでつまずいた場合、バグ レポートを送ってください。 @end table @cindex errors, message format (エラー メッセージの形式) 警告とエラーを入力ファイルのある部分にリンクさせることが可能な場合、@c エラー メッセージは以下のような形式になります: @example @var{filename}:@var{lineno}:@var{columnno}: @var{message} @var{offending input line} @end example エラーが見つかった場所を示すために問題のある行に改行が挿入されます。@c 例えば: @example test.ly:2:19: error: not a duration: 5 @{ c'4 e' 5 g' @} @end example これらの位置は LilyPond が警告やエラーが発生した位置を@c 最善を尽くして推測したものですが、@c (ごく当たり前のことですが) 警告とエラーは@c 何か予期しないことが起こったときに発生するものです。@c 入力ファイルの示された行にエラーを見つけることができない場合は、@c 示された位置の 1 行か 2 行上をチェックしてみてください。 診断は多くの処理段階のあらゆる時点で発生し得ることに注意してください。@c 例えば、入力が複数回処理される(つまり、MIDI とレイアウト出力)@c または同じ音楽変数がコンテキストで使われると、@c 同じメッセージが何回か現れることがあります。 エラーについての更なる情報が @ref{一般的なエラー} で提供されています。 @node 一般的なエラー @section 一般的なエラー @translationof Common errors 以下で説明するエラーがしばしば発生しますが、@c その原因は明白でなかったり、見つけにくかったりします。@c 目を通しておくと、それらのエラーに対処しやすくなります。 @menu * 楽譜がページからはみ出る:: * 余計な譜が表示される:: * エラー メッセージ Unbound variable %:: * エラー メッセージ FT_Get_Glyph_Name:: * 警告 -- Warning staff affinities should only decrease:: * Error message unexpected new:: * Warning this voice needs a voiceXx or shiftXx setting:: @end menu @node 楽譜がページからはみ出る @unnumberedsubsec 楽譜がページからはみ出る @translationof Music runs off the page 楽譜がページの右マージンを越えてはみ出る、あるいは過度に密集するのは、@c ほぼ間違いなく音符の演奏時間に誤りがあり、@c 小節の最後の音符が小節線を越えてしまうためです。@c ある小節の最後の音符が自動的に挿入される小節線の所で終わらなくても@c 無効ではありません。@c なぜなら、その音符は次の小節に持ち越されるためです。@c しかしながら、そのような持ち越しが発生する小節が長く続くと、@c 楽譜は密集して表示されたり、ページからはみ出たりします。@c ページからはみ出るのは、@c 自動改行を挿入できるのは正しく終了する小節 (その小節のすべての音符が小節の中で終了しています) の後ろだけだからです。@c @warning{誤った演奏時間は改行を抑制し、結果として楽譜が過度に密集したり、c@ ページからはみ出たりする可能性が生じます。} 小節チェックを使用していれば、誤った演奏時間を簡単に見つけることができます。@c @ruser{小節と小節番号のチェック} を参照してください。 あなたがそのような音符が持ち越される小節を続けることを意図しているのであれば、@c 改行させたい場所に不可視の小節線を挿入する必要があります。@c 詳細は @ruser{小節線} を参照してください。 @node 余計な譜が表示される @unnumberedsubsec 余計な譜が表示される @translationof An extra staff appears コンテキストが @code{\new} や @code{\context} で明示的に作成されていない場合、@c 既存のコンテキストには適用できないコマンドに遭遇した時点で@c 暗黙的に作成されます。@c 単純な楽譜では、コンテキストの自動作成は有用であり、@c LilyPond マニュアルのほとんどの例はこの手法を用いています。@c しかしながら、コンテキストの暗黙的な作成はしばしば予期しない譜や楽譜を@c 発生させてしまいます。@c 例えば、以下のコードは後に続く譜の中にあるすべての符頭を赤にすることを@c 意図していますが、@c 結果は 2 つの譜が表示され、下の譜の符頭の色はデフォルトの黒のままとなります。 @lilypond[quote,verbatim,fragment] \override Staff.NoteHead.color = #red \new Staff { a' } @end lilypond これは、(符頭色の) オーバライドが処理される時に @code{Staff} コンテキストが存在していないため、@c @code{Staff} コンテキストが暗黙的に作成され、@c そのコンテキストにオーバライドが適用されるからです。@c その後に @code{\new Staff} コマンドにより@c もう 1 つ別の @code{Staff} コンテキストが作成され、@c そこに音符が配置されます。@c すべての符頭を赤にする正しいコードは以下のようになります: @lilypond[quote,verbatim] \new Staff { \override Staff.NoteHead.color = #red a' } @end lilypond @node エラー メッセージ Unbound variable % @unnumberedsubsec エラー メッセージ Unbound variable % @translationof Error message Unbound variable % このエラー メッセージは、@emph{Scheme} 形式ではなく @emph{LilyPond} 形式の@c コメントを含む Scheme ルーチンが呼び出されるたびに、@c コンソール出力またはログ ファイルの最後に表示されます。 LilyPond 形式のコメントはパーセント記号 (@code{%}) で始まり、@c Scheme ルーチンの中で使うことはできません。@c Scheme 形式のコメントはセミコロン (@code{;}) で始まります。 @node エラー メッセージ FT_Get_Glyph_Name @unnumberedsubsec エラー メッセージ FT_Get_Glyph_Name @translationof Error message FT_Get_Glyph_Name 入力ファイルが非 ASCII キャラクタを保持していて、@c UTF-8 エンコードで保存されていない場合、@c このエラー メッセージがコンソール出力やログ ファイルに表示されます。@c 詳細は、 @c @ruser{テキスト エンコーディング} @ruser{Text encoding} を参照してください。 @node 警告 -- Warning staff affinities should only decrease @unnumberedsubsec 警告 -- Warning staff affinities should only decrease @translationof Warning staff affinities should only decrease この警告は、譜刻された出力の中に譜が無い場合に表示されます。@c 例えば、リード譜に @code{ChordName} コンテキストと @code{Lyrics} コンテキスト@c しか無い場合です。@c この警告は、入力の始めに以下を挿入することで@c 譜として振舞うコンテキストを作ることで回避できます: @example \override VerticalAxisGroup.staff-affinity = ##f @end example @noindent 詳細は @ruser{システム内部の可変な垂直方向のスペース} の @qq{譜ではない行のスペース} を参照してください。 @node Error message unexpected new @unnumberedsubsec Error message unexpected @code{@bs{}new} A @code{\score} block must contain a @emph{single} music expression. If instead it contains several @code{\new Staff}, @code{\new StaffGroup} or similar contexts introduced with @code{\new} without them being enclosed in either curly brackets, @code{@{ @dots{} @}}, or double angle brackets, @code{<< @dots{} >>}, like this: @example \score @{ % Invalid! Generates error: syntax error, unexpected \new \new Staff @{ @dots{} @} \new Staff @{ @dots{} @} @} @end example @noindent the error message will be produced. To avoid the error, enclose all the @code{\new} statements in curly or double angle brackets. Using curly brackets will introduce the @code{\new} statements sequentially: @lilypond[quote,verbatim] \score { { \new Staff { a' a' a' a' } \new Staff { g' g' g' g' } } } @end lilypond @noindent but more likely you should be using double angle brackets so the new staves are introduced in parallel, i.e. simultaneously: @lilypond[quote,verbatim] \score { << \new Staff { a' a' a' a' } \new Staff { g' g' g' g' } >> } @end lilypond @node Warning this voice needs a voiceXx or shiftXx setting @unnumberedsubsec Warning this voice needs a @code{@bs{}voiceXx} or @code{@bs{}shiftXx} setting If notes from two different voices with stems in the same direction occur at the same musical moment, but the voices have no voice-specific shifts specified, the warning message @samp{warning: this voice needs a \voiceXx or \shiftXx setting} will appear when compiling the LilyPond file. This warning will appear even when the notes have no visible stems, e.g. whole notes, if the stems for shorter notes at the same pitch would be in the same direction. Remember that the stem direction depends on the position of the note on the staff unless the stem direction is specified, for example by using @code{\voiceOne}, etc. In this case the warning will appear only when the stems happen to be in the same direction, i.e. when the notes are in the same half of the staff. By placing the notes in voices with stem directions and shifts specified, for example by using @code{\voiceOne}, etc., these warnings may be avoided. Notes in higher numbered voices, @code{\voiceThree} etc., are automatically shifted to avoid clashing note columns. This causes a visible shift for notes with stems, but whole notes are not visibly shifted unless an actual clash of the note heads occurs, or when the voices cross over from their natural order (when @code{\voiceThree} is higher than @code{\voiceOne}, etc.) @seealso @rlearning{Explicitly instantiating voices}, @rlearning{Real music example}, @ruser{Single-staff polyphony}, @ruser{Collision resolution}.