GNU LilyPond – アプリケーション使用方法: 1.4 一般的なエラー

## 1.4 一般的なエラー

以下で説明するエラーがしばしば発生しますが、その原因は明白でなかったり、見つけにくかったりします。目を通しておくと、それらのエラーに対処しやすくなります。

### 楽譜がページからはみ出る

楽譜がページの右マージンを越えてはみ出る、あるいは過度に密集するのは、ほぼ間違いなく音符の演奏時間に誤りがあり、小節の最後の音符が小節線を越えてしまうためです。ある小節の最後の音符が自動的に挿入される小節線の所で終わらなくても無効ではありません。なぜなら、その音符は次の小節に持ち越されるためです。しかしながら、そのような持ち越しが発生する小節が長く続くと、楽譜は密集して表示されたり、ページからはみ出たりします。ページからはみ出るのは、自動改行を挿入できるのは正しく終了する小節 (その小節のすべての音符が小節の中で終了しています) の後ろだけだからです。

Note: 誤った演奏時間は改行を抑制し、結果として楽譜が過度に密集したり、c ページからはみ出たりする可能性が生じます。

小節チェックを使用していれば、誤った演奏時間を簡単に見つけることができます。 小節と小節番号のチェック を参照してください。

あなたがそのような音符が持ち越される小節を続けることを意図しているのであれば、改行させたい場所に不可視の小節線を挿入する必要があります。詳細は 小節線 を参照してください。

### 余計な譜が表示される

コンテキストが `\new` や `\context` で明示的に作成されていない場合、既存のコンテキストには適用できないコマンドに遭遇した時点で暗黙的に作成されます。単純な楽譜では、コンテキストの自動作成は有用であり、LilyPond マニュアルのほとんどの例はこの手法を用いています。しかしながら、コンテキストの暗黙的な作成はしばしば予期しない譜や楽譜を発生させてしまいます。例えば、以下のコードは後に続く譜の中にあるすべての符頭を赤にすることを意図していますが、結果は 2 つの譜が表示され、下の譜の符頭の色はデフォルトの黒のままとなります。

>     \override Staff.NoteHead #'color = #red
>     \new Staff { a }

これは、(符頭色の) オーバライドが処理される時に `Staff` コンテキストが存在していないため、`Staff` コンテキストが暗黙的に作成され、そのコンテキストにオーバライドが適用されるからです。その後に `\new Staff` コマンドによりもう 1 つ別の `Staff` コンテキストが作成され、そこに音符が配置されます。すべての符頭を赤にする正しいコードは以下のようになります:

>     \new Staff {
>       \override Staff.NoteHead #'color = #red
>       a
>     }

次の例では、`\repeat` コマンドの中に `\relative` コマンドが置かれているため、譜が 2 つ生じています。`\repeat` コマンドが 2 つの `\relative` ブロックを生成し、それぞれが暗黙的に `Staff` ブロックと `Voice` を作成するため、2 番目の譜は右にずれています。

>     \repeat unfold 2 {
>       \relative c' { c4 d e f }
>     }

明示的に `Voice` をインスタンス化することで、この問題は修正されます:

>     \new Voice {
>       \repeat unfold 2 {
>         \relative c' { c4 d e f }
>       }
>     }

### 見かけ上 `../ly/init.ly` のエラーとなる

入力ファイルが正しく構成されていないと、‘`../ly/init.ly`’ に構文エラーがあるという様々な原因のはっきりしないエラー メッセージが表示されます。例えば、括弧やクォート記号の数が一致していない場合にこのようなエラーが発生します。

最も一般的なエラーは `score` ブロックの終わりに括弧が見当たらない (missing brace, (`}`)) というエラーです。この場合の解決方法は明らかです: `score` ブロックが正しく閉じられているかチェックしてください。入力ファイルの正しい構造は LilyPond 入力ファイルの仕組み で記述されています。括弧の一致を自動的にハイライトするエディタを使うと、そのようなエラーを防ぐのに役立ちます。

次に一般的なエラーの原因は、歌詞ブロックの最後の音節と閉じ括弧 (`}`) の間に空白が無いために発生します。空白が無ければ、この閉じ括弧は音節の一部と見なされます。常に すべての 括弧の前後に空白を入れることをお勧めします。歌詞を用いる場合にこのことが重要になります。 Entering lyrics を参照してください。

### エラー メッセージ Unbound variable %

Scheme 形式のコメントではなく LilyPond 形式のコメントを持つ Scheme ルーチンが呼び出されると、コンソール出力やログ ファイルの最後にエラー メッセージ “Unbound variable %” が “GUILE signalled an error ...” と共に表示されます。

LilyPond 形式のコメントはパーセント記号 (`%`) で始まり、Scheme ルーチンの中で使うことはできません。Scheme 形式のコメントはセミコロン (`;`) で始まります。

### エラー メッセージ FT_Get_Glyph_Name

入力ファイルが非 ASCII キャラクタを保持していて、UTF-8 エンコードで保存されていない場合、このエラー メッセージがコンソール出力やログ ファイルに表示されます。詳細は、 Text encoding を参照してください。

### 警告 – Warning staff affinities should only decrease

この警告は、譜刻された出力の中に譜が無い場合に表示されます。例えば、リード譜に `ChordName` コンテキストと `Lyrics` コンテキストしか無い場合です。この警告は、入力の始めに以下を挿入することで譜として振舞うコンテキストを作ることで回避できます:

>     \override VerticalAxisGroup #'staff-affinity = ##f

詳細は Flexible vertical spacing within systems の中の “Spacing of non-staff lines” を参照してください。

他の言語: English, deutsch, español, français, magyar, italiano

#### LilyPond — 使用方法