[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3 改行/改ページ

@translationof Breaks


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3.1 改行

@translationof Line breaking

通常、改行は自動的に決定されます。改行は、行が混み合って見えたり散漫に見えたりしないように、連続する行の密度が同じくらいになるように選択されます。

小節線が引かれる場所で手動で強制的に改行を入れるには、\break コマンドを使用します:

 
\relative c'' {
  c4 c c c | \break
  c4 c c c |
}

[image of music]

デフォルトでは、小節の‘途中’に挿入された \break コマンドは無視されます (そして、LilyPond ファイルをコンパイルする時に警告メッセージが出力されます)。小節の途中で強制的に改行を入れるには、不可視の小節線 – ‘\bar ""’ – を \break コマンドの前に挿入することで、強制的に改行することができます:

 
\relative c'' {
  c4 c c
  \bar ""
  \break
  c |
  c4 c c c |
}

[image of music]

連符が開始する小節と終了する小節が異なる場合などのように、前の小節が音符の途中で終わっている場合、前の小節の終わりに \break を配置しても無視されます。この場合、Voice コンテキストから Forbid_line_break_engraver を削除し、同時進行の音楽表記を使い、2 つ目の‘ボイス’の正しい位置に \break を挿入してください: 音楽と並列に改行コマンドを追加する必要があるということに注意してください:

 
\new Voice \with {
  \remove "Forbid_line_break_engraver"
} \relative {
  <<
    { c''2. \tuplet 3/2 { c4 c c } c2. | }
    { s1 | \break s1 | }
  >>
}

[image of music]

同様にデフォルトでは、連桁が小節線を跨いでいる場合も、改行は無視されます。\override Beam.breakable = ##t コマンドで強制することができます:

 
\relative c'' {
  \override Beam.breakable = ##t
  c2. c8[ c | \break
  c8 c] c2. |
}

[image of music]

\noBreak コマンドは、コマンドが配置された小節線での改行を禁止します。

楽譜の中で、\autoLineBreaksOff と \autoLineBreaksOn の間にある音楽は、自動改行が抑止されます。同様に自動改ページも抑止させたい場合は、\autoBreaksOff と \autoBreaksOn コマンドを使うべきです。手動改行や改ページは、これらのコマンドによって影響されません。自動改行を抑止した際、音楽のすべてが 1 行に収まりきらない場合に右の余白を飛び出す可能性があることに注意してください。

自動改行は、小節線のところで \once \autoLineBreaksOn を用いることで、単一の小節線に対して有効にすることができます (改ページはできません)。これは、強制改行ではなく、許可された改行を示します。

行スペースに影響を与える最も基本的な設定は indent と line-width です。これらは \layout ブロック内で設定されます。これらは音楽の最初の行のインデントと行の長さを制御します。

\layout ブロック内で ragged-right が真にセットされた場合、システムは、行全体に広がらずに、本来の長さで終了します。これは短い楽譜の断片を記譜する場合や、本来のスペースがどれくらい密になっているかチェックする場合に有用です。

オプション ragged-last は ragged-right と似ていますが、楽曲の最後の行にだけ効果を持ちます。

 
\layout {
  indent = 0\mm
  line-width = 150\mm
  ragged-last = ##t
}

規則的な間隔で改行を行うには、スキップで区切られた \break を用いて、それを \repeat で繰り返します。例えば、以下の例は 28 小節 (4/4 拍子と仮定して) であり、4 小節ごとに改行が入ります (それ以外の場所で改行が入ることはありません):

 
<<
  \repeat unfold 7 {
    s1 \noBreak s1 \noBreak
    s1 \noBreak s1 \break
  }
  { 実際の音楽… }
>>

定義済みコマンド

\break, \noBreak, \autoBreaksOff, \autoBreaksOn, \autoLineBreaksOff, \autoLineBreaksOn

Selected Snippets

改行のために専用のボイスを用意する

改行や改ページの情報を音楽から分離し、\break, \pageBreak やその他のレイアウト情報のみを含む専用のボイスを用意した方が管理しやすい場合があります。

このパターンは、line-break-system-details のような、NonMusicalPaperColumn Grob の設定が長いプロパティをオーバライドする際に、特に有用です。

 
music = \relative c'' { c4 c c c }

\score {
  \new Staff <<
    \new Voice {
      s1 * 2 \break
      s1 * 3 \break
      s1 * 6 \break
      s1 * 5 \break
    }
    \new Voice {
      \repeat unfold 2 { \music }
      \repeat unfold 3 { \music }
      \repeat unfold 6 { \music }
      \repeat unfold 5 { \music }
    }
  >>
}

[image of music]

参照

記譜法リファレンス: 改行のための \paper 変数, @ref{The layout block}

コード断片集: (snippets)Spacing section ‘Spacing’ in Snippets

内部リファレンス: (internals)LineBreakEvent section ‘LineBreakEvent’ in Internals Reference

既知の問題と警告

\autoLineBreaksOff や \autoBreaksOff を音楽の最初に配置すると、エラー メッセージが表示されます。何らかの音楽の後に、これらのコマンドを配置するようにしてください。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3.2 改ページ

@translationof Page breaking

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


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

手動改ページ

@translationof Manual page breaking

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

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

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

ragged-right や ragged-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 変数

コード断片集: (snippets)Spacing section ‘Spacing’ in Snippets

既知の問題と警告

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


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

最適改ページ

@translationof Optimal page breaking

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

参照

コード断片集: (snippets)Spacing section ‘Spacing’ in Snippets


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

最小改ページ

@translationof Minimal page breaking

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

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

参照

コード断片集: (snippets)Spacing section ‘Spacing’ in Snippets


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

1 ページの改ページ

@translationof One-page page breaking

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

既知の問題と警告

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


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

1 行の改ページ

@translationof One-line page breaking

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

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


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

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

@translationof One-line-auto-height page breaking

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

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


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

最適ページめくり

@translationof Optimal page turning

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

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

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

この方法では手間がかかりすぎる場合は、Page_turn_engraver を Staff あるいは 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

参照

記譜法リファレンス: @ref{paper variables for line breaking}

コード断片集: (snippets)Spacing section ‘Spacing’ in Snippets

既知の問題と警告

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

参照

記譜法リファレンス: @ref{Vertical spacing}

コード断片集: (snippets)Spacing section ‘Spacing’ in Snippets


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]

This document was generated by gub on 7 月 13, 2020 using texi2html 1.82.

他の言語: English, català, deutsch, español, français, italiano
About automatic language selection.