X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fja%2Fusage%2Frunning.itely;fp=Documentation%2Fja%2Fusage%2Frunning.itely;h=01c60ad00b7cd5e0c3b70997e323643d8c8e665c;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=0000000000000000000000000000000000000000;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/Documentation/ja/usage/running.itely b/Documentation/ja/usage/running.itely new file mode 100644 index 0000000000..01c60ad00b --- /dev/null +++ b/Documentation/ja/usage/running.itely @@ -0,0 +1,837 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*- + +@ignore + Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066 + + 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.14.0" + +@c Translators: 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 シェル} という言葉の方が馴染みがあるかもしれません。@c +MaxOS@tie{}X ユーザは @q{ターミナル} や @q{コンソール} という言葉の方が@c +馴染みがあるかもしれません。@c +MaxOS@tie{}X ユーザは追加のセットアップが必要かもしれません。@c +@rweb{MacOS X} を参照してください。 + +OS のコマンド ラインの使用方法についての説明は@c +このマニュアルが扱う範囲ではありません。@c +コマンド ラインに馴染みがない場合は、@c +その内容を扱っている他のドキュメントをあたってください。 + +@menu +* lilypond を呼び出す:: +* lilypond のコマンド ライン オプション:: +* 環境変数:: +* LilyPond in chroot jail:: +@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 +sudin から入力を読み込む場合には、@c +@var{file} に対してダッシュ (@code{-}) を使用します。 + +@file{filename.ly} が処理されると、@c +lilypond は出力として @file{filename.ps} と @file{filename.pdf} を作り出します。@c +いくつかのファイルを指定することもできます。@c +その場合、それらのファイルは個々に処理されます。@c +@footnote{GUILE のステータスは @code{.ly} 処理後にリセットされません。@c +そのため、Scheme 内部からいかなるシステム デフォルトも変更しないよう注意してください。} + +@file{filename.ly} が複数の @code{\score} を含んでいる場合、@c +2 つ目以降の score は +@file{filename-1.pdf} から始まる番号付きのファイルに出力されます。@c +さらに、@code{output-suffix} がベース名と番号の間に挿入されます。@c +以下の内容を含んでいる入力ファイルは + +@example +#(define output-suffix "violin") +\book @{ @dots{} @} +#(define output-suffix "cello") +\book @{ @dots{} @} +@end example + +@noindent +@var{base}@file{-violin.pdf} と @var{base}@file{-cello-1.pdf} を出力します。 + + +@unnumberedsubsubsec 標準シェル コマンド + +シェル (例えばコマンド ウィンドウ) がリダイレクトをサポートしているのであれば、@c +以下のコマンドでコンソール出力をファイルにリダイレクトすると役に立つかもしれません。 + +@itemize + +@item +@code{lilypond file.ly 1>stdout.log} 通常出力をリダイレクトします + +@item +@code{lilypond file.ly 2>stderr.log} エラー メッセージをリダイレクトします。 + +@item +@code{lilypond file.ly &>all.log} すべての出力をリダイレクトします + +@end itemize + +あなたの使用しているシェルがこれらのオプションをサポートしているかどうか、@c +あるいは構文が異なるかどうかは、そのシェルのドキュメントを調べてください。@c +これらはシェル コマンドであり、lilypond とは無関係です。 + + +@node lilypond のコマンド ライン オプション +@unnumberedsubsec @command{lilypond} のコマンド ライン オプション +@translationof 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 -e,--evaluate=@var{expr} +@file{.ly} ファイルを解析する前に Scheme @var{expr} を評価します。@c +複数の @code{-e} オプションが与えられた場合、それらは順番に評価されます。 + +表記は @code{guile-user} モジュールの中で評価されます。@c +そのため、@var{expr} の中で定義を使いたいのならば、@c +@code{.ly} ファイルに以下をインクルードして: + +@example +#(use-modules (guile-user)) +@end example + +@noindent +コマンド ラインで以下を使用します: + +@example +lilypond -e '(define-public a 42)' +@end example + + + +@item -f,--format=@var{format} +フォーマットを指定します。@c +@code{format} には @code{svg}, @code{ps}, @code{pdf}, @code{png} を選択します。 + +例: @code{lilypond -fpng @var{filename}.ly} + + + +@item -d,--define-default=@var{var}=@var{val} +これは内部プログラム オプション @var{var} に +Scheme 値 @var{val} をセットします。@c +@var{val} が提供されていない場合、@var{#t} が使用されます。@c +オプションを OFF にするには、@var{var} の接頭辞として @code{no-} を付けます。@c +つまり、 + +@cindex point and click, command line (コマンド ラインからポイント&クリックを制御する) + +@example +-dno-point-and-click +@end example + +@noindent +は +@example +-dpoint-and-click='#f' +@end example +と同じです。 + +ここで興味深いオプションをいくつか挙げます。 + +@table @samp +@item help +@code{lilypond -dhelp} を実行すると@c +使用可能な @code{-d} オプションがすべて表示されます。 + +@cindex paper-size, command line (コマンドラインで paper-size を指定する) + +@item paper-size +このオプションはデフォルトの用紙サイズをセットします。 +@example +-dpaper-size=\"letter\" +@end example + +@noindent +文字列はエスケーブされたクォート ( @code{\"} ) で@c +囲まれていなければならないということに注意してください。 +@c Match " in previous line to help context-sensitive editors + +@item safe +@code{.ly} 入力を信用してはいけません。 + +Web サーバを通じて LilyPond フォーマットが利用可能な場合、@c +@code{--safe} オプションか @code{--jail} オプションの@c +どちらかを@b{渡さなければなりません}。@c +@code{--safe} オプションは@c +以下のようなインライン Scheme コードが大混乱をもたらすことを防ぎます: + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^#(ly:export (ly:gulp-file "/etc/passwd")) +} +@end verbatim +@end quotation + +訳者: #(system "rm -rf /") はルート ディレクトリ以下を削除し、@c +export (ly:gulp-file "/etc/passwd") はパスワード ファイルをエクスポートします。 + +@code{-dsafe} オプションはインライン Scheme 表記を@c +特別なセーフ モジュールの中で評価します。@c +このセーフ モジュールは GUILE @file{safe-r5rs} モジュールから派生したものですが、@c +LilyPond API 関数をいくつか追加しています。@c +これらの関数は @file{scm/safe-lily.scm} でリスト アップされています。 + +さらに、セーフ モードは @code{\include} 指示を却下し、@c +@TeX{} 文字列の中にあるバックスラッシュを無効にします。 + +セーフ モードでは、LilyPond 変数を Scheme にインポートすることはできません。 + +@code{-dsafe} はリソースの乱用を検出@emph{しません}。@c +例えば循環データ構造体をバックエンドに食わせることで、@c +プログラムをハングさせることは可能です。@c +そのため、パブリックにアクセス可能な Web サーバ上で LilyPond を使用する場合、@c +そのプロセスの CPU とメモリの両方の使用は制限されるべきです。 + +セーフ モードは多くの有用な LilyPond 断片がコンパイルされることを妨げます。@c +@code{--jail} はより安全な代替オプションですが、@c +セット アップにより多くの作業を必要とします。 + +@cindex output format, setting (出力フォーマットを設定する) +@item backend +バックエンドに対して使用する出力フォーマットを指定します。@c +@code{format} の選択肢には以下があります: +@table @code +@item ps +@cindex PostScript output (PostScript 出力) + PostScript + + Postscript ファイルは TTF, Type1, OTF フォントを含んでいます。@c +これらのフォントのサブセット化 +(訳者: フォント セットを使用するフォントに限定すること) は行われません。@c +東洋の文字セットを使用する場合、巨大なファイルになる可能性があります。 + +@item eps + 縮約された PostScript (EPS)。@c +これは各ページ (システム) を@c +フォントを持たない個別の @file{EPS} ファイルとして吐き出し、@c +フォントを含めたすべてのページ (システム) を持つ +@file{EPS} ファイルを 1 つ吐き出します。 + +このモードは @command{lilypond-book} でデフォルトで使用されます。 + +@item svg +@cindex SVG (Scalable Vector Graphics) + SVG (Scalable Vector Graphics)。@c +これは各ページを@c +フォントを埋め込まれた個別の @file{SVG} ファイルとして吐き出します。@c +埋め込みフォントをサポートする SVG ビューアか@c +埋め込みフォントを OTF フォントに置き換える機能を持つ SVG ビューアが必要になります。@c +UNIX では、@c +@uref{http://www.inkscape.org,Inkscape} (バージョン 0.42 以降) を@c +使うことになるかもしれません。@c +使用前に、OTF フォントを LilyPond ディレクトリ +(一般には @file{/usr/share/lilypond/VERSION/fonts/otf/}) から +@file{~/.fonts/} にコピーしてください。 +@item scm +@cindex Scheme dump (Scheme ダンプ) + 生データ -- 内部 Scheme ベース描画コマンド -- を吐き出します。 + +@item null + 譜刻された楽譜を出力しません。@c +@code{-dno-print-pages} と同じ効果を持ちます。 +@end table + +例: @code{lilypond -dbackend=svg @var{filename}.ly} + +@item preview +タイトルとファイル システム情報を保持している出力ファイルを生成します。 +@item print-pages + +すべてのページを生成します。@c +デフォルトです。@code{-dno-print-pages} は +@code{-dpreview} と組み合わせて使うと有用です。 + +@end table + + + +@item -h,--help +使用方法の要約を表示します。 + +@item -H,--header=@var{FIELD} +ヘッダ フィールドをファイル @file{BASENAME.@var{FIELD}} に吐き出します。 + +@item --include, -I=@var{directory} +@var{directory} を入力ファイルのサーチ パスに追加します。 +@cindex file searching (ファイル検索) +@cindex search path (サーチ パス) + +@item -i,--init=@var{file} +init ファイルとして @var{file} をセットします (デフォルト: @file{init.ly})。 + +@item -o,--output=@var{FILE} +デフォルトの出力ファイルとして @var{FILE} をセットします。@c +適切な接尾辞が追加されます (つまり、pdf ならば拡張子 @code{.pdf} が追加されます)。 + +@item --ps +PostScript を生成します。 + +@item --png +各ページの図を PNG フォーマットで生成します。@c +これは内部で @code{--ps} を使用します。@c +画像の DPI 解像度は以下のようにセットします: +@example +-dresolution=110 +@end example + +@item --pdf +PDF を生成します。@c +これは内部で @code{--ps} を使用します。 + + + +@item -j,--jail=@var{user},@var{group},@var{jail},@var{dir} +@command{lilypond} を chroot jail 環境で実行します。@c +(訳者: chroot jail 環境とはセキュリティのために@c +カレント プロセスに対してルート ディレクトリの位置を変更すること。) + +@code{--jail} オプションは、@c +Web サーバを通じて LilyPond 譜刻を実行するときや +LilyPond が外部から提供されたソースを実行するときに、@c +@code{--safe} よりも自由度の高い代替手段を提供します。 + +@code{--jail} オプションはコンパイル プロセスの開始直前に +@command{lilypond} の ルートを @var{jail} に変更します。@c +それからユーザとグループを提供された環境にマッチするように変更し、@c +カレント ディレクトリは @var{dir} に変更されます。@c +このセットアップは jail (牢獄) から抜け出せないということを +(少なくとも理論的には) 保証します。@c +@code{--jail} を指定した @command{lilypond} の実行は@c +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 +行うべきです。@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 +割り当て可能なメモリ容量を制限するというのも良いアイディアです。 +@end table + + +@item -v,--version +バージョン情報を表示します。 + +@item -V,--verbose +冗長表示モードにします: +読み込むすべてのファイルのフル パスを表示して、時間情報を表示します。 + +@item -w,--warranty +GNU LilyPond の保証責任を表示します。@c +(GNU LilyPond には@strong{保証責任はありません}!) +@end table + +@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_GC_YIELD +この変数を使ってメモリ使用量とパフォーマンスを調節することができます。@c +これはメモリ管理の振る舞いを調整するパーセント値です。@c +高い値にするとプログラムはより多くのメモリを使用し、@c +低い値にするとより多くの CPU 時間を使用します。@c +デフォルト値は @code{70} です。 + +@end table + +@c 未訳 +@node LilyPond in chroot jail +@unnumberedsubsec LilyPond in chroot jail + +Setting up the server to run LilyPond in a chroot jail is a complicated +task. The steps are listed below. Examples in the steps are from +Ubuntu Linux, and may require the use of @code{sudo} as appropriate. + +@itemize + +@item Install the necessary packages: LilyPond, GhostScript, and ImageMagick. + +@item Create a new user by the name of @code{lily}: + +@example +adduser lily +@end example + +@noindent +This will create a new group for the @code{lily} user as well, and a home folder, +@code{/home/lily} + +@item In the home folder of the @code{lily} user create a file to use as a +separate filesystem: + +@example +dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 +@end example + +@noindent +This example creates a 200MB file for use as the jail filesystem. + +@item Create a loop device, make a file system and mount it, then create +a folder that can be written by the @code{lily} user: + +@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 In the configuration of the servers, the JAIL will be @code{/mnt/lilyloop} +and the DIR will be @code{/lilyhome}. + +@item Create a big directory tree in the jail by copying the necessary files, as +shown in the sample script below. + +You can use @code{sed} to create the necessary copy commands for a given +executable: + +@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 Example script for 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 +冗長オプション (@code{-V} または @code{--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 行上をチェックしてみてください。 + +エラーについての更なる情報が @ref{一般的なエラー} で提供されています。 + + +@node 一般的なエラー +@section 一般的なエラー +@translationof Common errors + +以下で説明するエラーがしばしば発生しますが、@c +その原因は明白でなかったり、見つけにくかったりします。@c +目を通しておくと、それらのエラーに対処しやすくなります。 + + +@menu +* 楽譜がページからはみ出る:: +* 余計な譜が表示される:: +* 見かけ上 ../ly/init.ly のエラーとなる:: +* エラー メッセージ Unbound variable %:: +* エラー メッセージ FT_Get_Glyph_Name:: +* 警告 -- Warning staff affinities should only decrease:: +@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,relative=2] +\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,relative=2] +\new Staff { + \override Staff.NoteHead #'color = #red + a +} +@end lilypond + +次の例では、@code{\repeat} コマンドの中に @code{\relative} コマンドが@c +置かれているため、譜が 2 つ生じています。@c +@code{\repeat} コマンドが 2 つの @code{\relative} ブロックを生成し、@c +それぞれが暗黙的に @code{Staff} ブロックと @code{Voice} を作成するため、@c +2 番目の譜は右にずれています。 + +@lilypond[quote,verbatim] +\repeat unfold 2 { + \relative c' { c4 d e f } +} +@end lilypond + +明示的に @code{Voice} をインスタンス化することで、この問題は修正されます: + +@lilypond[quote,verbatim] +\new Voice { + \repeat unfold 2 { + \relative c' { c4 d e f } + } +} +@end lilypond + + +@node 見かけ上 ../ly/init.ly のエラーとなる +@unnumberedsubsec 見かけ上 @code{../ly/init.ly} のエラーとなる +@translationof Apparent error in @code{../ly/init.ly} + +入力ファイルが正しく構成されていないと、@c +@file{../ly/init.ly} に構文エラーがあるという@c +様々な原因のはっきりしないエラー メッセージが表示されます。@c +例えば、括弧やクォート記号の数が一致していない場合に@c +このようなエラーが発生します。 + +最も一般的なエラーは @code{score} ブロックの終わりに括弧が見当たらない +(missing brace, (@code{@}})) というエラーです。@c +この場合の解決方法は明らかです: +@code{score} ブロックが正しく閉じられているかチェックしてください。@c +入力ファイルの正しい構造は @rlearning{LilyPond 入力ファイルの仕組み} +で記述されています。@c +括弧の一致を自動的にハイライトするエディタを使うと、@c +そのようなエラーを防ぐのに役立ちます。 + +次に一般的なエラーの原因は、歌詞ブロックの最後の音節と閉じ括弧 (@code{@}}) +の間に空白が無いために発生します。@c +空白が無ければ、この閉じ括弧は音節の一部と見なされます。@c +常に @emph{すべての} 括弧の前後に空白を入れることをお勧めします。@c +歌詞を用いる場合にこのことが重要になります。@c +@ruser{Entering lyrics} を参照してください。 + + +@node エラー メッセージ Unbound variable % +@unnumberedsubsec エラー メッセージ Unbound variable % +@translationof Error message Unbound variable % + +@emph{Scheme} 形式のコメントではなく @emph{LilyPond} 形式のコメント@c +を持つ Scheme ルーチンが呼び出されると、@c +コンソール出力やログ ファイルの最後にエラー メッセージ +@qq{Unbound variable %} が @qq{GUILE signalled an error ...} +と共に表示されます。@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{Flexible vertical spacing within systems} の中の +@qq{Spacing of non-staff lines} を参照してください。