4.3.2 改ページ

このセクションでは、改ページについてのいくつかの方法や、それらをどのようにカスタマイズするかを示します。


手動改ページ

デフォルトの改ページは、\pageBreak\noPageBreak を挿入することによって上書きすることができます。これらのコマンドは \break\noBreak に似ています。 これらのコマンドは小節線のところに挿入すべきであり、その小節線での改ページを強制/禁止します。当然のことですが、\pageBreak は強制的に改行も行います。

\pageBreak コマンドと \noPageBreak コマンドは最上位レベルに挿入することができ、score や最上位レベルのマークアップの間に挿入することができます。

楽譜の中で、\autoPageBreaksOff\autoPageBreaksOn の間にある音楽は、自動改ページが抑制されます。手動改ページは、これらのコマンドに影響されません。

ragged-rightragged-last と類似で、垂直方向のスペースに対して同じ効果を持つ設定があります。ragged-bottom#t にセットされている場合、システムはページの垂直方向全体には広がりません。ragged-last-bottom#t にセットされている場合 (これがデフォルトです)、最後のページ (あるいは各 \bookpart の最後のページ) の下部に空きスペースが挿入することが許可されます。固定された垂直方向の \paper スペース変数 を参照してください。

改ページは page-breaking 関数によって算出されます。LilyPond は改ページを算出するためにいくつかのアルゴリズムを提供します: ly:optimal-breaking, ly:page-turn-breaking, それに ly:minimal-breaking などです。デフォルトは ly:optimal-breaking ですが、\paper ブロックの中で変更することができます:

\paper {
  page-breaking = #ly:page-turn-breaking
}

1 つのブックが多くの楽譜とページを持つ場合、改ページを処理するのに多くの処理時間とメモリが必要になり、改ページの問題を解決することが困難になる可能性があります。改ページ処理を簡単にするために、\bookpart ブロックを用いてブックをいくつかのパートに分割します: 改ページはパートごとに別々に処理されます。異なるブック パートには、異なる改ページ関数を使用することもできます。

\bookpart {
  \header {
    subtitle = "Preface"
  }
  \paper {
     %% ほとんどテキストしか保持していないパートでは
     %% ly:minimal-breaking が適しています
     page-breaking = #ly:minimal-breaking
  }
  \markup { … }
  …
}
\bookpart {
  %% このパートは音楽を保持しているので、デフォルトの
  %% ly:optimal-breaking を使用します
  \header {
    subtitle = "First movement"
  }
  \score { … }
  …
}

定義済みコマンド

\pageBreak, \noPageBreak, \autoPageBreaksOn, \autoPageBreaksOff

参照

記譜法リファレンス: 改行のための \paper 変数

コード断片集: Spacing

既知の問題と警告

\once 接頭辞は、\autoPageBreaksOn\autoPageBreaksOff には効果がありません。自動改ページがオフになっている時に、改ページを(一時的に) 許可するためにオンにする場合、オフにする前にその後何小節かはオンになっている必要があります (具体的な小節数は楽譜に依存します)。そうしなければ、改ページの機会が失われてしまいます。


最適改ページ

ly:optimal-breaking 関数は、LilyPond が改ページを決定するためのデフォルトの手法です。 この関数は、ページの (水平方向と垂直方向の両方の) 混み合いや広がりすぎを最小にする改ページを見つけ出そうと試みます。ly:page-turn-breaking とは異なり、この関数はページめくりについて考慮しません。

参照

コード断片集: Spacing


最小改ページ

The ly:minimal-breaking 関数は最小限の改ページを算出します: この関数は 1 ページに可能な限り多くのシステムを配置します。そのため、多くのページを持つ楽譜 – そのような場合、他の改ページ関数では時間がかかりすぎたり、メモリ使用量が多くなりすぎたりします – や、多くのテキストを持つ楽譜でこの関数を使用すると良いかもしれません。この関数を有効にするには以下のようにします:

\paper {
  page-breaking = #ly:minimal-breaking
}

参照

コード断片集: Spacing


1 ページの改ページ

ly:one-page-breaking 関数は特殊な目的のための改ページアルゴリズムで、ページの高さを音楽に合わせて自動的に調整し、全てが 1 ページに収まるようにします。paper ブロックの paper-height 変数は無視されますが、他の設定は通常通り反映されます。特に、最後のシステム (あるいはトップ レベルのマークアップ) とフッターの間のスペースは、paper ブロックの last-bottom-spacing でカスタマイズすることができます。ページの幅はデフォルトのままですが、paper ブロックの paper-width で設定することができます。

既知の問題と警告

ly:one-page-breaking は現在 \bookpart と互換性がありません。


1 行の改ページ

ly:one-line-breaking 関数は特殊な目的のための改ページアルゴリズムで、楽譜をそれぞれ 1 ページに 1 行で配置します。この改ページ関数はタイトルやマージンを譜刻しません。楽譜だけを譜刻します。

ページ幅は最も長い楽譜が 1 行に納まるように調節されます。\paper ブロックの中にある変数 paper-width, line-width それに indent は無視されますが、left-marginright-margin は有効です。ページの高さは変更されません。


高さが自動の 1 行の改ページ

ly:one-line-auto-height-breaking 関数は、ly:one-line-breaking とほとんど同様に動作しますが、ページの高さが自動的に音楽に合わせて自動的に変更されるところが異なります。具体的には、\paper ブロックの paper-height 変数が、楽譜の最大の高さ + top-margin + bottom-margin に渡るようにセットされます。

top-system-spacing 設定が、音楽の縦方向の位置に影響することに注意してください。paper ブロックでこれを ##f にセットすることで、単純に音楽を上部マージンと下部マージンの間に配置することができます。


最適ページめくり

しばしば、2 枚目のページ (横書きの本を開いたときの右側のページ) の終わりに休符を置くための改ページ構成が必要になります。こうすることで、演奏者は音符を見失うことなくページをめくることができます。ly:page-turn-breaking 関数はページの混み合いや広がりすぎを最小にする改ページを見つけ出そうと試みますが、ページめくりを特定の場所だけに置くための制約を受けます。

この改ページ関数を使うには、2 つのステップがあります。最初に、改ページ で説明されているように、\paper ブロックの中でこの関数を有効にする必要があります。次に、この関数に改ページを許可したい場所を教える必要があります。

2 番目のステップを達成するには、2 つの方法があります。1 つ目の方法では、入力ファイルの適当な場所に \allowPageTurn を挿入することによって、ページめくりの許可を手動で指定します。

この方法では手間がかかりすぎる場合は、Page_turn_engraverStaff あるいは Voice コンテキストに追加します。Page_turn_engraver はコンテキストをスキャンして音符の無いセクションを探します (休符を探すわけではなく、音符の無い部分を探すということに注意してください。単一譜の多声で、ボイスの 1 つが休符を持つ場合に、Page_turn_engraver に渡されないようにするためです。) Page_turn_engraver は音符を持たない十分に長いセクションを見つけると、‘特殊な’ 小節線 (2 重小節線など) がないかぎりは、そのセクションの最後の小節線のところに \allowPageTurn を挿入します。‘特殊な’ 小節線がある場合には、\allowPageTurn がそのセクションの最後にあるそのような小節線のところに挿入されます。

Page_turn_engraver はコンテキスト プロパティ minimumPageTurnLength を読み込んで、どれくらい音符が無いセクションが続いたらページめくりを考慮するかを決定します。minimumPageTurnLength のデフォルト値は (ly:make-moment 1/1) です。ページめくりを不可にしたいのならば、minimumPageTurnLength に非常に大きな値をセットします。

\new Staff \with { \consists "Page_turn_engraver" }
{
  a4 b c d |
  R1 | % ここでページめくりが許可されます
  a4 b c d |
  \set Staff.minimumPageTurnLength = #(ly:make-moment 5/2)
  R1 | % ここではページめくりは許可されません
  a4 b r2 |
  R1*2 | % ここでページめくりが許可されます
  a1
}

Page_turn_engraver は volta 繰り返しを検出します。繰り返しの開始と終わりにページめくりを行うのに十分な時間がある場合にのみ、その繰り返しの最中でのページめくりが許可されます。繰り返しが非常に短い場合、Page_turn_engraver はページめくりを不可にする可能性があります。コンテキスト プロパティ minimumRepeatLengthForPageTurn に値を設定した場合、その値よりも長い演奏時間を持つ繰り返しに対してのみ、Page_turn_engraver は繰り返しの最中でページめくりを許可します。

ページめくりコマンド \pageTurn, \noPageTurn それに \allowPageTurn は、最上位レベル、最上位のマークアップや score どうしの間で使用される可能性もあります。

定義済みコマンド

\pageTurn, \noPageTurn, \allowPageTurn

参照

記譜法リファレンス: 改行のための \paper 変数

コード断片集: Spacing

既知の問題と警告

score の中に配置する Page_turn_engraver は 1 つだけにするべきです。複数の Page_turn_engraver がある場合、互いに干渉し合います。

参照

記譜法リファレンス: 垂直方向のスペース

コード断片集: Spacing


LilyPond — 記譜法リファレンス v2.22.1 (安定版).