| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < 通常の使用方法 ] | [ 上へ : lilypond を実行する ] | [ LilyPond を呼び出す > ] |
1.2 コマンド ラインの使用方法
この節にはコマンド ラインで LilyPond を使用するための追加情報が含まれます。これにはプログラムに追加オプションを渡す必要があるかもしれません。さらに、いくつかの特別なプログラム (midi2ly など) はコマンド ラインからしか利用できません。
ここで ‘コマンド ライン’ とは、OS の中にあるコマンド ラインを意味します。Windows ユーザは ‘DOS シェル’ や ‘コマンド シェル’ ‘コマンド プロンプト’ という言葉の方が馴染みがあるかもしれません。MaxOS X ユーザは ‘ターミナル’ や ‘コンソール’ という言葉の方が馴染みがあるかもしれません。MaxOS X ユーザは追加のセットアップが必要かもしれません。 MacOS X を参照してください。
OS のコマンド ラインの使用方法についての説明はこのマニュアルが扱う範囲ではありません。コマンド ラインに馴染みがない場合は、その内容を扱っている他のドキュメントをあたってください。
lilypond を呼び出す | ||
| LilyPond の基本的なコマンド ライン オプション | ||
| LilyPond の高度なコマンド ライン オプション | ||
| 環境変数 | ||
| 再配置 | ||
| chroot jail 環境で LilyPond を実行する |
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < コマンド ラインの使用方法 ] | [ 上へ : コマンド ラインの使用方法 ] | [ > ] |
lilypond を呼び出す
lilypond 実行可能形式ファイルはコマンド ラインから以下のように呼び出されます。
lilypond [option]… file…
拡張子を持たないファイル名で呼び出された場合、‘.ly’ が最初に試されます。stdin から入力を読み込む場合には、file に対してダッシュ (-) を使用します。
‘filename.ly’ が処理されると、lilypond は出力として ‘filename.pdf’ を作り出します。いくつかのファイルを指定することもできます。その場合、それらのファイルは個々に処理されます。1
‘filename.ly’ が複数の \book ブロックを含んでいる場合、残りの score は
‘filename-1.pdf’ から始まる番号付きのファイルに出力されます。さらに、output-suffix がベース名と番号の間に挿入されます。例えば、 ‘filename.ly’ が以下の内容を含んでいる場合、
#(define output-suffix "violin")
\score { … }
#(define output-suffix "cello")
\score { … }
LilyPond は ‘filename-violin.pdf’ と ‘filename-cello-1.pdf’ を出力します。
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < LilyPond を呼び出す ] | [ 上へ : LilyPond を呼び出す ] | [ LilyPond の基本的なコマンド ライン オプション > ] |
標準シェルで LilyPond を使う
LilyPond はコマンドラインアプリケーションなので、LilyPond を呼び出すために ‘シェル’ の機能をうまく利用することができます。
例えば,
lilypond *.ly
は、カレントディレクトリのすべての LilyPond ファイルを処理します。
コンソール出力をリダイレクトする(例えばファイルへ)のも有用でしょう。
lilypond file.ly 1> stdout.txt lilypond file.ly 2> stderr.txt lilypond file.ly &> all.txt
上記コマンドはそれぞれ ‘普通の’ 出力、‘エラー’ のみ、‘すべて’ 、 をテキストファイルにリダイレクトします。あなたの使用しているシェル、コマンドプロンプト (Windows)、ターミナルやコンソール (MacOS X) がリダイレクトをサポートしているか、あるいは構文が異なるかどうかは、そのシェルのドキュメントを調べてください。
以下は、カレントディレクトリ以下のすべての入力ファイルを再帰的に探し、処理する例です。出力ファイルは元の入力ファイルのあるディレクトリではなく、コマンドを実行したディレクトリに置かれます。
find . -name '*.ly' -exec lilypond '{}' \;
これは MacOS X ユーザでも使えるでしょう。
Windows ユーザは
forfiles /s /M *.ly /c "cmd /c lilypond @file"
スタートメニューから
スタート > アクセサリ > コマンドプロンプト
とたどるか、検索ウィンドウで ‘コマンドプロンプト’ と入力して、
コマンド プロンプト を起動し、これらのコマンドを入力します。
または、入力ファイルを含むすべてのサブフォルダを含む、最上位のフォルダを明示的に指定できる /p オプションもあります;
forfiles /s /p C:\Documents\MyScores /M *.ly /c "cmd /c lilypond @file"
最上位フォルダ名がスペース文字を含む場合は、パス全体をダブルクオーテーションで囲む必要があります。;
forfiles /s /p "C:\Documents\My Scores" /M *.ly /c "cmd /c lilypond @file"
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < ] | [ 上へ : コマンド ラインの使用方法 ] | [ LilyPond の高度なコマンド ライン オプション > ] |
LilyPond の基本的なコマンド ライン オプション
以下のオプションがサポートされます。
-
-d,--define-default=var[=val] LilyPond の高度なコマンド ライン オプション を参照してください。
-
-e,--evaluate=expr ‘.ly’ ファイルを解析する前に Scheme expr を評価します。複数の
-eオプションが与えられた場合、それらは順番に評価されます。Scheme 表記は
guile-userモジュールの中で評価されます。そのため、expr の中で(define-public a 42)のような定義を使いたいのならば、コマンド ラインで以下を使用して、lilypond -e '(define-public a 42)'
‘.ly’ ファイルの先頭に以下を含めます.
#(use-modules (guile-user))
Note: Windows ユーザはシングル クォートではなく、ダブル クォートを使う必要があります。
-
-E,--eps EPS ファイルを生成します。
このオプションは LilyPond のコマンドラインオプションに
--ps,-dbackend=eps, と-daux-files='#f'を指定するのと同じです。-
-f,--format=format (主な)出力ファイルのフォーマットを指定します。
formatの選択肢はps,pdf, またはpngです。例:
lilypond -fpng foo.lysvgフォーマットやepsフォーマットを出力するには-dbackendオプションを用います。 LilyPond の高度なコマンド ライン オプション を参照してください。-
-h,--help 使用方法の要約を表示します。
-
-H,--header=field ヘッダ フィールドをファイル ‘BASENAME.field’ に吐き出します。
例えば、 ‘foo.ly’ という入力ファイルが以下の内容を含んでいる場合、
\header { title = "bar" } \score { c1 }コマンド
lilypond -H title foo.ly
を実行すると、文字列
barを含んだプレーンテキストファイル ‘foo.title’ が作られます。-
-i,--init=file init ファイルとして file をセットします (デフォルト: ‘init.ly’)。
-
-I,--include=directory directory を入力ファイルのサーチ パスに相対パスとして追加します。デフォルトではカレントディレクトリのみが検索されます。
複数の ‘-I’ オプションを与えることができます。検索はカレントディレクトリから開始され、入力ファイルが見つからない場合は、最初の ‘-I’ で指定されたディレクトリ、そして二番目の ‘-I’ で指定されたディレクトリ、というように検索します。
Note: チルド記号 (
~) を ‘-I’ と共に使用すると、シェルによっては予期しない結果をもたらす場合があります。Windows ユーザは、ディレクトリのパスの最後にスラッシュを含める必要があります。
-
-j,--jail=user,group,jail,dir [このオプションは OS が
chroot機能をサポートする場合のみ有効です。特に、 Windows はサポートしていません。]lilypondを chroot jail 環境で実行します。(訳者: chroot jail 環境とはセキュリティのためにカレント プロセスに対してルート ディレクトリの位置を変更すること。)‘--jail’ オプションは、Web サーバ経由で LilyPond 譜刻を提供する時や LilyPond が外部ソースから送られてきたコマンドを実行する時に、
--dsafeよりも自由度の高い代替手段を提供します。 (LilyPond の高度なコマンド ライン オプション を参照してください。)--jailオプションはコンパイル プロセスの開始直前にlilypondのルート ディレクトリを jail に変更します。それから、ユーザとグループを user と group に変更して、カレント ディレクトリを dir に変更します。これにより、jail (牢獄) から抜け出せないことを (少なくとも理論上は) 保証します。--jailを指定したlilypondの実行は root (ユーザ名) として行う必要があります。通常、これはsudoを用いた安全な方法で行います。jail のセットアップは比較的複雑な問題です。LilyPond がソースをコンパイルするのに必要とされるものすべてを jail の内部 で見つけられるということを保証しなければならないからです。一般的なセットアップには以下の項目が含まれます:
- 専用のファイルシステムをセットアップする
noexec,nodev,nosuidなどのセーフ オプションでマウントするための専用ファイルシステムを作成すべきです。こうすることで、LilyPond から実行可能形式ファイルを実行したり、デバイスに直接書き込むことは不可能になります。専用のパーティションを作成することを望まないのなら、適当なサイズのファイルを作成し、それを使用してループ デバイス (ループバック デバイス) をマウントしてください。専用ファイルシステムはさらに、LilyPond が許可されたディスク容量以上には書き込めないということを保証します。- 専用のユーザをセットアップする
jail 内部で LilyPond を実行する際、低い権限を持つ専用のユーザとグループ (仮に
lily/lilyとします) で行うべきです。このユーザが書き込み可能なディレクトリが 1 つだけ存在すべきであり、それを dir に渡します。- jail の準備をする
LilyPond は実行中にいくつかのファイルを読み込む必要があります。それらのファイルをすべて jail にコピーしておきます。それらのファイルが本当のルート ファイル システムで存在しているパスと同じパスにコピーします。LilyPond インストールの内容すべて (例えば、‘/usr/share/lilypond’) をコピーすべきです。
問題が発生した場合、その原因を突き止める最も簡単な方法は
straceを使って LilyPond を実行することです。これによりどのファイルが見当たらないのかがわかります。- LilyPond を実行する
noexecでマウントされた jail の中では、外部プログラムを実行することは一切できません。そのため、外部プログラムを必要としないバックエンドで LilyPond を実行しなければなりません。すでに述べたように、jail モードでの LilyPond の実行はスーパーユーザ権限で行われなければならず (もちろん、その権限はすぐに外されます)、たぶんsudoを使います。LilyPond が使用可能な CPU 時間を数秒に制限する (例えば、ulimit -tを使って) というのも良い方法です。さらに、OS がサポートしているのなら、割り当て可能なメモリ容量を制限するというのも良い方法です。chroot jail 環境で LilyPond を実行する も参照してください。
-
-l,--loglevel=level コンソール出力の饒舌さを level にセットします。取り得る値は以下の通りです:
-
NONE 何も出力しません。エラー メッセージさえも出力しません。
-
ERROR エラー メッセージだけを出力します。警告や進捗メッセージは出力しません。
-
WARN 警告とエラー メッセージを出力し、進捗メッセージは出力しません。
-
BASIC_PROGRESS 基本的な進捗メッセージ (成功メッセージ)、警告、それにエラー メッセージを出力します。
-
PROGRESS すべての進捗メッセージ、警告とエラー メッセージを出力します。
-
INFO 進捗メッセージ、警告、エラーそれに追加の実行情報を出力します。 これがデフォルトです。
-
DEBUG 饒舌なデバッグ出力を含む、出力可能なメッセージをすべて出力します。
-
-
-o,--output=file -
-o,--output=folder デフォルトの出力ファイルとして file をセットします。セットした名前のフォルダが存在する場合、 folder に入力ファイルから取ったファイル名で出力されます。どちらの場合にも適切な接尾辞が追加されます (つまり、PDF ならば拡張子 ‘.pdf’ が追加されます)。
-
-O,--pspdfopt=key -
key へ PS/PDF 最適化を設定します。選択肢は:
-
size 非常に小さい PS/EPS/PDF ドキュメントを生成します。 これがデフォルトです。
LilyPond の Scheme コマンドラインオプション
-dmusic-font-encodings='#f'と-dgs-never-embed-fonts='#f'を指定した場合と同じです。-
TeX PdfTeX, LuaTeX, XeTeX ドキュメントにインクルードされるのに最適化されたファイルを生成します。
LilyPond の Scheme コマンドラインオプション
-dmusic-font-encodings='#t'と-dgs-never-embed-fonts='#f'を指定した場合と同じです。-
TeX-GS LilyPond によって生成された PDF を TeX ドキュメントに複数インクルードしたい場合は、このオプションを使い、TeX によって生成された PDF を Ghostscript で後処理してください。
LilyPond の Scheme コマンドラインオプション
-dmusic-font-encodings='#t'と-dgs-never-embed-fonts='#t'を指定した場合と同じです。
-
-
--ps PostScript を生成します。このオプションは
-fpsと同じです。-
--png 各ページの図を PNG フォーマットで生成します。このオプションは
-fpngと同じです。画像の解像度を N DPI に設定するには以下のようにします。
-dresolution=N
-
--pdf PDF を生成します。これがデフォルトで、
-fpdfと同じです。-
-s,--silent 進行状況を表示せず、エラーメッセージのみ表示します。これは
-lERRORと同じです。-
-v,--version バージョン情報を表示します。
-
-V,--verbose 冗長表示モードにします: 読み込むすべてのファイルのフル パスを表示して、時間情報などを表示します。これは
-lDEBUGと同じです。-
-w,--warranty GNU LilyPond の保証責任を表示します。(GNU LilyPond には保証責任はありません!)
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < LilyPond の基本的なコマンド ライン オプション ] | [ 上へ : コマンド ラインの使用方法 ] | [ 環境変数 > ] |
LilyPond の高度なコマンド ライン オプション
オプション ‘-d’ は LilyPond の Scheme 関数 ly:set-option
のコマンドラインインタフェースです。つまり、ここで示しているすべてのオプションは ‘.ly’ ファイルの中で設定することが可能です。
-
-d,--define-default=option-name[=value] -
-d,--define-default=no-option-name 内部 Scheme シンボル option-name に value を設定するのと同じです。例えば、コマンドラインオプション
-dbackend=svg
は LilyPond 入力ファイルに
#(ly:set-option 'backend 'svg)
を書くことと同じです。
value が指定されない場合、
#t(真偽値以外を取る場合は、おかしな結果になるかもしれません)が使われます。option-name に接頭辞no-を付けると、そのオプションは ‘off’ つまり#fが使われます。例えば、-dpoint-and-click='#f'
は
-dno-point-and-click
と同じです。
[‘#’ 文字は多くのシェルでコメントの開始を意味することに注意してください。そのため、それを含む式は常にクォートすることをお勧めします。]
次の表に、サポートされているすべてのオプション名と値を示します。Scheme コード内では、オプション値は関数 ly:get-option で読み取ることができます。
-
anti-alias-factornum (与えられた因数 num を用いて) 高解像度で描画して、その結果をスケールダウンすることにより、
PNG画像の輪郭がギザギザになることを防ぎます。デフォルト:1.0。-
aux-filesbool bool が
#tならば、epsバックエンドオプションを使っているときに ‘.tex’, ‘.texi’, と ‘.count’ ファイルを生成します。デフォルト:#t。-
backendsymbol symbol を LilyPond 出力のバックエンドとして使用します。 選択肢は:
-
ps こればデフォルトです。 Postscript ファイルは
TTF,Type1, それにOTFフォントを埋め込みます。フォントのサブセットは作成されません。日本語のような ‘東洋’ の文字セットを用いるとファイルが非常に大きくなる可能性があることに注意してください。PDF 出力には
psバックエンドが使われます。出力された PS データは Ghostscript のps2pdfで後処理され、デフォルトでフォントのサブセットが作成されます。-
eps lilypond-bookコマンドのデフォルトです。これは、1 つのファイルにすべてのページとフォントを埋め込んだものと、ページ毎に分離しフォントを埋め込まない eps ファイルの、両方を吐き出します。-
null 楽譜を出力しません。
-dno-print-pagesと同じ効果を持ちます。-
scm 内部的な Scheme ベースの描画コマンドを吐き出します。
-
svg ページ毎の SVG (Scalable Vector Graphics) ファイルが全ページ分作られます。音楽グリフはベクタ画像に変換されますが、文字フォントは SVG ファイルには埋め込まれません。 そのため、テキストや歌詞の最適な描画を得るためには、SVG ビュアーに関連するテキストフォントが必要となります。SVG ビュアーが対応していないことがあるので、‘フォントリスト’ や ‘フォントエイリアス’ を使用しないことをお勧めします。Web Open Font Format (WOFF) ファイルを使うときには、追加の
-dsvg-woffスイッチが必要となります。
-
-
check-internal-typesbool bool が
#tなら、全てのプロパティ代入について型チェックを行います。デフォルト:#f。-
clip-systemsbool bool が
#tなら、楽譜から断片を取り出します。これを使用するには、\layoutブロックにclip-regions関数が定義されている必要があります。 音楽の断片を抽出するを参照してください。 ‘-dno-print-pages’ と一緒に用いられた場合、断片は全く出力されません。デフォルト:#f。-
cropbool bool が
#tなら、すべての楽譜とヘッダをマージンなしの ‘単一ページ’ 出力に合わせます。デフォルト:#f。-
datadir データファイル パスの接頭辞です。読み取り専用で、設定しても効果がありません。
-
debug-gcbool bool が
#tなら、メモリに関するデバッグ用の統計を吐き出します。-
debug-gc-assert-parsed-deadbool メモリに関するデバッグ用: bool が
#tなら、パースされたオブジェクトへの全ての参照が無くなっていることを保証します。これは内部オプションであり、`-ddebug-gc'によって自動的にオンになります。デフォルト:#f。-
debug-lexerbool bool が
#tなら、Flex 文法解析ソフトウェアをデバッグします。デフォルト:#f。-
debug-page-breaking-scoringbool bool が
#tなら、多くの改ページ設定に関するスコアを吐き出します。デフォルト:#f。-
debug-parserbool bool が
#tなら、Bison パーサをデバッグします。デフォルト:#f。-
debug-property-callbacksbool bool が
#tなら、コールバック循環をデバッグします。デフォルト:#f。-
debug-skylinesbool bool が
#tなら、スカイライン (訳注: 行ごとのオブジェクトの最高位置と最低位置を線で表示するもの) を表示します。デフォルト:#f。-
delete-intermediate-filesbool bool が
#tなら、コンパイルの途中で作成される使用しない中間ファイル ‘.ps’ を削除します。デフォルト:#t。-
dump-signaturesbool bool が
#tなら、システムごとに出力情報を吐き出します。回帰テストに用いられます。デフォルト:#f。-
embed-source-codebool bool が
#tなら、出力される PDF ドキュメントに LilyPond ソースファイルを埋め込みます。デフォルト:#f。-
eps-box-paddingnum 出力される EPS の左端に num mm の余白を追加します。デフォルト:
#f(余白追加しないことを意味します)。-
font-export-dirstring PostScript ファイルとしてフォントをエクスポートするディレクトリを string に指定します。デフォルト:
#f(カレントディレクトリを意味します)。 これは、次に示すように、フォントを埋め込まずに PDF を作成し、後でフォントを Ghostscript で埋め込む場合に便利です。$ lilypond -dfont-export-dir=fontdir -dgs-never-embed-fonts foo.ly $ gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \ -sOutputFile=foo.embedded.pdf foo.pdf fontdir/*.font.ps注:
font-ps-resdirとは異なり、このメソッドは Ghostscript 9.26 以降で CID フォントを埋め込むことはできません。注:
font-ps-resdirと同様に、 TrueType フォントを埋め込むと文字化けが発生するため、このオプションは TrueType フォントをスキップします。文字化けしないようにするには、gs-never-embed-fontsを使用します。これは、TrueType フォントをその名前に関係なく埋め込みます。デフォルト:
#f(エクスポートしないことを意味します)。-
font-ps-resdirstring (string として) ディレクトリを設定して、後でフォントを埋め込むために使用する PostScript リソース ディレクトリのサブセットをビルドします。これは、次に示すように、フォントを埋め込まずに PDF を作成し、後でフォントを Ghostscript で埋め込む場合に便利です。
$ lilypond -dfont-ps-resdir=resdir -dgs-never-embed-fonts foo.ly $ gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \ -I resdir -I resdir/Font \ -sOutputFile=foo.embedded.pdf foo.pdf注: Ghostscript の
-Iオプションで指定した場合、特別な意味があるため、 ‘Resource’ という名前を含むディレクトリは指定しない方がよいでしょう。注:
font-export-dirとは異なり、このメソッドは Ghostscript 9.26 以降で CID フォントを埋め込むことができます。注:
font-export-dirと同様に、 TrueType フォントを埋め込むと文字化けが発生するため、このオプションは TrueType フォントをスキップします。文字化けしないようにするには、gs-never-embed-fontsを使用します。これは、TrueType フォントをその名前に関係なく埋め込みます。デフォルト:
#f(ビルドしないことを意味します)。-
gs-load-fontsbool bool が
#tなら、Ghostscript 経由でフォントを読み込みます。LilyPond 出力ファイルのフォントはすべて参照のみが含まれるようになり、 Ghostscript による後処理で実際のフォントに解決する必要があります。デフォルト:#f。-
gs-load-lily-fontsbool bool が
#tなら、LilyPond のフォントを Ghostscript 経由で読み込みます。LilyPond 出力ファイルの音楽フォントはすべて参照のみが含まれるようになり、 Ghostscript による後処理で実際のフォントに解決する必要があります。他のすべてのフォントは通常通り出力されます。デフォルト:#f。-
gs-never-embed-fontsbool bool が
#tなら、Ghostscript が TrueType フォントのみを埋め込むようになり、他のフォーマットのフォントは埋め込まれません。デフォルト:#f。-
guibool bool が
#tなら、出力を表示せずに処理を行い、すべての出力をログ ファイルにリダイレクトします。デフォルト:#f。Windows ユーザへの注意: ‘lilypond.exe’ がデフォルトですべての進捗情報をコマンド ウィンドウに出力するのに対して、‘lilypond-windows.exe’ は進捗情報を出力しません。‘-dgui’ オプションを用いることで、出力をログ ファイルにリダイレクトさせることができます。
-
helpbool bool が
#tなら、このヘルプを表示します。デフォルト:#f。-
include-book-title-previewbool bool が
#tなら、プレビュー画像にブック タイトルを含めます。デフォルト:#t。-
include-eps-fontsbool bool が
#tなら、システム毎の EPS ファイルにフォントを含めます。デフォルト:#t。-
include-settingsstring グローバル設定のファイルとして string をインクルードします。このファイルは楽譜の処理が開始する前にインクルードされます。デフォルト:
#f(グローバル設定ファイル無しを意味します)。-
job-countnum num ジョブで、並列処理します。デフォルト:
#f(並列処理無しを意味します)。-
log-filestring 出力をログファイル ‘string.log’ にリダイレクトします。デフォルト:
#f(ログファイル無しを意味します)。-
max-markup-depthnum マークアップ ツリーの階層の最大値を num に設定します。それよりも深い階層を持つマークアップがある場合、そのマークアップは終了していないと見なされて、警告が表示され、null マークアップが返されます。デフォルト:
1024。-
midi-extensionstring MIDI 出力ファイルのデフォルトのファイル拡張子を ‘.string’ に設定します。デフォルト:
"midi"。-
music-strings-to-pathsbool bool が
#tなら、記譜フォントを用いるテキストをパスに変換します。デフォルト:#f。-
paper-sizeextra-quoted-string デフォルトの紙面サイズを extra-quoted-string に設定します。文字列をエスケープ記号付の 2 重引用符で囲む必要があることに注意してください。デフォルト:
"\"a4\""。-
pixmap-formatsymbol 画像出力のための GhostScript の出力フォーマットを symbol に設定します。デフォルト:
png16m。-
point-and-clickbool bool が
#tなら、PDF と SVG 出力に ‘ポイント&クリック’ リンクを付け加えます。ポイント&クリック を参照してください。デフォルト:#f。-
previewbool bool が
#tなら、通常の出力に加えてプレビュー画像を作成します。デフォルト:#f。このオプションはすべてのバックエンド (
pdf,png,ps,eps, それにsvg) でサポートされますが、scmではサポートされません。入力ファイル名 file でバックエンド format を使った場合、出力ファイル名は ‘file.preview.format’ で、タイトルと楽譜の最初の段を含みます。\bookブロックや\bookpartブロックが使われている場合、\book,\bookpart, それに\scoreのタイトルが出力に譜刻され、\paper変数print-all-headersが#tにセットされている場合は各\scoreブロックの最初の段も譜刻されます。通常の出力を抑制するには、必要に応じて ‘-dprint-pages’ オプションまたは ‘-dno-print-pages’ オプションを使ってください。
-
print-pagesbool bool が
#tなら、すべてのページを生成します。デフォルト:#t。‘-dpreview’ や ‘-dcrop’ を使う場合は ‘-dno-print-pages’ を組み合わせると有用です。
-
profile-property-accessesbool bool が
#tなら、get_property()関数呼び出しの統計を取ります。デフォルト:#t。-
protected-scheme-parsingbool bool が
#tなら、パーサでインライン Scheme のエラーが発生しても処理を続けます。#fに設定されている場合、エラー終了して、スタック トレースを表示します。デフォルト:#t。-
read-file-liststring ‘string’ を処理する入力ファイルのリストを保持するファイルとして指定します。デフォルト:
#f(入力ファイルのリスト無しを意味します)。-
relative-includesbool bool が
#tなら、\includeコマンドを処理するとき、インクルードするファイルをカレント ファイルからの相対位置で検索します。#fなら、ルート ファイルからからの相対位置で検索します。デフォルト:#f。-
resolutionnum 生成する
PNG画像の解像度を num dpi に設定します。デフォルト:101。-
safebool bool が
#tなら、‘.ly’ 入力ファイルを信用しません。デフォルト:#f。Web サーバ経由で LilyPond 譜刻が利用可能な場合、‘--dsafe’ オプションか ‘--jail’ オプションのどちらかを 指定する必要があります。‘--dsafe’ オプションはインライン Scheme コードが無茶をする – 例えば、以下のような – ことを防ぎます。
% 正しく書くのはあまりにも危険 #(s ystem "rm -rf /") % 破壊的ではないが悪意がある { c4^$(ly:gulp-file "/etc/passwd") }‘-dsafe’ オプションはインライン Scheme 表記を特別なセーフ モジュールの中で評価します。これは GUILE の ‘safe-r5rs’ モジュールに由来しますが、‘scm/safe-lily.scm’ でリスト アップされている LilyPond API 関数のいくつかも追加されています。
さらに、セーフ モードでは
\includeは許可されず、TeX 文字列の中でバックスラッシュを使うこともできません。また、セーフ モードでは LilyPond 変数を Scheme にインポートすることもできません。‘-dsafe’ はリソースの過使用を検出 しません ので、このオプションを指定してもプログラムをハングさせられる可能性があります – 例えば、サイクリック (巡回) データ構造をバックエンドに埋め込むことによってです。 そのため、LilyPond を一般公開する Web サーバで使用する場合、プロセスのCPU とメモリ使用を制限すべきです。
セーフ モードは多くの有用な LilyPond 楽譜断片がコンパイルされることを妨げます。
‘--jail’ はさらに安全な代替手段ですが、セットアップにかかる手間も増えます。LilyPond の基本的なコマンド ライン オプション を参照してください。
-
separate-log-filesbool bool が
#tなら、入力ファイル ‘file1.ly’, ‘file2.ly’, … に対するログをファイル ‘file1.log’, ‘file2.log’, … に出力します。デフォルト:#f。-
show-available-fontsbool bool が
#tなら、使用可能なフォント名をリスト アップします。加えて LilyPond は fontconfig の設定そのものを表示します。デフォルト:#f。-
strict-infinity-checkingbool bool が
#tなら、浮動小数点の例外InfとNaNに遭遇した時、強制終了します。デフォルト:#f。-
strip-output-dirbool bool が
#tなら、出力ファイル名を構築する時に入力ファイルのディレクトリを使用しません。デフォルト:#f。-
strokeadjustbool bool が
#tなら、PostScript に線幅補正 (stroke adjustment) を強制します。このオプションは普通、PDF ファイルが PostScript 出力から生成されている場合に意味があります (線幅補正は、低解像度のビットマップ デバイスに対して自動的に有効になります)。このオプションを指定しない場合、PDF ビューアは典型的な解像度のスクリーンにおいて、一貫性の無い符幹の幅を出力しようとします。このオプションは印刷結果の品質には目立って影響せず、PDF のファイル サイズを大きく増加させます。デフォルト:#f。-
svg-woffbool このオプションは
svgバックエンドで Web Open Format (WOFF) フォントを使うために必要となります。bool が#tなら、ページ毎の SVG ファイルが全ページ分作られます。LilyPond 自身の音楽グリフを除き、フォントは埋め込まれません。そのため、テキストや歌詞の最適な描画を得るためには、SVG ビュアーにフォントが必要となります。SVG ビュアーが対応していないことがあるので、‘フォントエイリアス’ や ‘フォントリスト’ を使用しないことをお勧めします。デフォルト:#f。-
verbose 饒舌レベル。これは読み込み専用のオプションで、設定しても効果はありません。
-
warning-as-errorbool bool が
#tなら、すべての警告と ‘プログラミング エラー’ をエラーに変更します。デフォルト:#f。
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < LilyPond の高度なコマンド ライン オプション ] | [ 上へ : コマンド ラインの使用方法 ] | [ 再配置 > ] |
環境変数
lilypond は以下の環境変数を認識します:
-
LILYPOND_DATADIR これはデフォルトで参照するロケール メッセージとデータ ファイルがあるディレクトリを指定し、コンパイル時に定義されるか、実行時に動的に計算される場所を上書きします (再配置 を参照してください) 。このディレクトリは ‘ly’, ‘ps’, ‘tex’ などのサブディレクトリを保持しているべきです。
-
LILYPOND_LOCALEDIR ロケール固有のファイルが配置されているディレクトリを指定します。これは
LILYPOND_DATADIRから派生した値を上書きします。-
LILYPOND_RELOCDIR 再配置ファイルが配置されているディレクトリを指定します。これは
lilypondバイナリの場所から派生した値を上書きします。-
LANG stdoutおよびstderrに送信される LilyPond データ、たとえば、進捗レポート、警告メッセージ、デバッグ出力などの言語を選択します。例:LANG=de-
LILYPOND_LOGLEVEL デフォルトのログレベル。明示的にログレベルが指定されずに LilyPond が呼び出された場合 (すなわち ‘--loglevel’ コマンド ライン オプションが指定されなかった場合)、この値が使用されます。
-
LILYPOND_GC_YIELD メモリ管理を調節する変数 (単位はパーセント) です。大きな値は LilyPond に多くのメモリ使用を許し、小さな値だと CPU 使用時間が長くなります。デフォルト値は
70です。 この変数を使ってメモリ使用量とパフォーマンスを調節することができます。これはメモリ管理の振る舞いを調整するパーセント値です。高い値にするとプログラムはより多くのメモリを使用し、低い値にするとより多くの CPU 時間を使用します。デフォルト値は70です。
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < 環境変数 ] | [ 上へ : コマンド ラインの使用方法 ] | [ 再配置ファイル > ] |
再配置
Unix の世界のほとんどのプログラムは、コンパイル前の構成時に決定されるデフォルト ディレクトリを使用します。 LilyPond も例外ではありません。たとえば、標準的なインストールでは、‘lilypond’ バイナリが ‘/usr/bin’ に配置され、LilyPond に固有のすべてのファイルが ‘/usr/share/lilypond/2.21.0/’ のサブディレクトリに配置されます (現在のバージョンが 2.21.0 であると仮定すると) 。
このアプローチは、手動コンパイルや標準のパッケージ マネージャーが付属するプラットフォームでは正常に機能しますが、そのようなマネージャーが一般的でないか、デフォルトで使用されないプラットフォームでは問題を引き起こす可能性があります。このようなプラットフォームの典型的な例は、ユーザーがアプリケーション バンドルをどこにでもインストールできると期待している Windows と MacOS です。
この問題の一般的な解決策は再配置サポートです。データファイルへのハードコーディングされたパスを使用する代わりに、必要なサポートファイルの場所が実行時に実行されたバイナリに対して相対的に計算されます。
| 再配置ファイル | ||
| 再配置アルゴリズム |
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < 再配置 ] | [ 上へ : 再配置 ] | [ 再配置アルゴリズム > ] |
再配置ファイル
実行時の構成には、実際には別のメカニズムがあります。
LilyPond は、外部プログラムとライブラリ、特にシステムフォントを見つけるための ‘FontConfig’ 、
Scheme ファイルを処理するための ‘GUILE’ ライブラリ、
PS データを PDF ファイルに変換するための gs プログラムにそれぞれ大きく依存しています。それらのすべては、関連するデータファイルを見つけるためにも構成する必要があります。これを行うために、lilypond プログラムは外部ライブラリとプログラムを制御する環境変数を操作するために、
‘relocate’ というディレクトリ(存在する場合。下のこのディレクトリが検索される場所を参照してください)
内のすべてのファイルを解析します。このような再配置ファイルのフォーマットは単純です。各行には構文があります
command key=value
空の行は無視されます。
command ディレクティブは次のいずれかです。
-
set 環境変数 key を無条件に value にセットします。 これは以前に設定された値を上書きします。
-
set? key がまだ定義されていない場合にのみ、環境変数 key を value にセットします。つまり、以前に設定された値を上書きしません。
-
setdir value がディレクトリの場合、無条件に環境変数 key を value にセットします。それ以外の場合は、警告を発します。
-
setfile value がファイルの場合、無条件に環境変数 key を value にセットします。それ以外の場合は、警告を発します。
-
prependdir 環境変数 key 内のディレクトリのリストにディレクトリ value を追加します。 key が存在しない場合は作成されます。
(先頭のドル記号でマークされた) 環境変数は value で許可され、ディレクティブが実行される前に展開されます。
以下は、GUB から取得した再配置ファイル エントリの 2 つの例です ( Grand Unified Builder (GUB) を参照してください) 。
set? FONTCONFIG_FILE=$INSTALLER_PREFIX/etc/fonts/fonts.conf prependdir GUILE_LOAD_PATH=$INSTALLER_PREFIX/share/guile/1.8
‘relocate’ ディレクトリ内のファイルの解析順序は任意であるため、再配置ファイルでは、複数の行で同じ環境変数を設定することを避ける必要があります。
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < 再配置ファイル ] | [ 上へ : 再配置 ] | [ chroot jail 環境で LilyPond を実行する > ] |
再配置アルゴリズム
LilyPond は、次のアルゴリズムを使用してデータファイルを検索します。
-
現在実行されている
lilypondバイナリが配置されているディレクトリを計算します。これをbindirとしましょう。 (内部) 環境変数INSTALLER_PREFIXを ‘bindir/..’ (つまり、bindirの親ディレクトリ) にセットします。 -
環境変数
LILYPOND_DATADIRを確認します。セットされている場合は、その値を LilyPond のデータ ディレクトリdatadirに使用します。それ以外の場合は、‘$INSTALLER_PREFIX/share/lilypond/version’ (version は現在の LilyPond バージョンです) または ‘$INSTALLER_PREFIX/share/lilypond/current’ を使用します。 -
環境変数
LILYPOND_LOCALEDIRを確認します。セットされている場合は、その値を LilyPond のロケール データ ディレクトリlocaledirに使用します。それ以外の場合は、‘$INSTALLER_PREFIX/share/locale’ を使用します。 -
環境変数
LILYPOND_RELOCDIRを確認します。セットされている場合は、その値を LilyPond の再配置ファイルのディレクトリrelocdirに使用します。それ以外の場合は、‘$INSTALLER_PREFIX/etc/relocate’ を使用します。 -
datadirが存在しない場合は、代わりにコンパイル時の値を使用します。localedirについても同様です (ただし、relocdirに関しては無意味なので、同様ではありません) 。 -
relocdirが存在する場合は、再配置ファイル の説明に従って、このディレクトリ内のすべてのファイルを処理します。
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < 再配置アルゴリズム ] | [ 上へ : コマンド ラインの使用方法 ] | [ エラー メッセージ > ] |
chroot jail 環境で LilyPond を実行する
LilyPond を chroot jail 環境で実行させるようサーバをセットアップすることは複雑な作業です。以下にステップをリスト アップします。各ステップの中にある例は Ubuntu GNU/Linux 用であり、sudo の使用が必要となるかもしれません。
- 必要なパッケージをインストールします: LilyPond, Ghostscript, それに ImageMagick。
-
lilyという名前のユーザを作成します:adduser lily
このコマンドはユーザ
lilyのためにホーム フォルダ (/home/lily) と新しいグループも作成します。 - ユーザ
lilyのホーム フォルダで、独立したファイルシステムとして使用するファイルを作成します:dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
このコマンドは jail ファイルシステムとして使用する 200MB のファイルを作成します。
- ループ デバイスを作成し、ファイルシステムを作ってそれをマウントし、それからユーザ
lilyが書き込めるフォルダを作成します: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
- サーバのコンフィグレーションで、JAIL は
/mnt/lilyloopとなり、DIR は/lilyhomeとなります。 - 以下に示すサンプル スクリプトのように必要なファイルをコピーして
jail の中に大きなディレクトリ ツリーを作成します。
sedを使うことで必要な実行形式ファイルをコピーすることができます: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
32-bit Ubuntu 8.04 用のスクリプト例
#!/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
| [ << lilypond を実行する ] | [トップ][目次][インデックス] | [ convert-ly を使ってファイルを更新する >> ] |
| [ < 再配置アルゴリズム ] | [ 上へ : コマンド ラインの使用方法 ] | [ エラー メッセージ > ] |