4.4.3 垂直方向の衝突回避

直観的に、音楽記譜には譜に属するオブジェクトと、譜の外側に配置されるべきオブジェクトがあります。譜の外側に属するオブジェクトには、リハーサル記号、テキスト、それに強弱記号などがあります (これからは、それらを譜外部オブジェクトと呼びます)。LilyPond が譜外部オブジェクトの垂直方向の配置を決定するとき、譜外部オブジェクトをできる限り譜の近くに、しかしながら、他のオブジェクトと衝突しない程度の近さに配置します。

LilyPond は outside-staff-priority プロパティを用いてあるグラフィカル オブジェクトが譜外部オブジェクトかどうかを決定します: outside-staff-priority が数であれば、そのグラフィカル オブジェクトは譜外部オブジェクトです。さらに、outside-staff-priority は LilyPond に、そのグラフィカル オブジェクトを配置する順番を教えてくれます。

まず最初にに、LilyPond は譜外部オブジェクトには属さないオブジェクトをすべて配置します。次に、譜外部オブジェクトを outside-staff-priority に従って (昇順に) ソートします。LilyPond は譜外部オブジェクトを、既に配置済みのオブジェクトと衝突しないよう、一つずつ配置していきます。つまり、2 つの譜外部オブジェクトが同じスペースをめぐって競合する場合、より小さな outside-staff-priority を持つオブジェクトが譜の近くに配置されます。

\relative c'' {
  c4_"Text"\pp
  r2.
  \once \override TextScript.outside-staff-priority = #1
  c4_"Text"\pp % ここでは、テキストが譜の近くに配置されます
  r2.
  % outside-staff-priority に数ではない値を設定することにより、
  % 自動衝突回避を無効にします
  \once \override TextScript.outside-staff-priority = ##f
  \once \override DynamicLineSpanner.outside-staff-priority = ##f
  c4_"Text"\pp % ここでは、2 つのオブジェクトが衝突します
}

[image of music]

譜外部オブジェクト周りの垂直方向のパディングは、 outside-staff-padding でコントロールできます。

\relative {
  \once \override TextScript.outside-staff-padding = #0
  a'4-"outside-staff-padding = #0"
  \once \override TextScript.outside-staff-padding = #3
  d-"outside-staff-padding = #3"
  c-"default outside-staff-padding"
  b-"default outside-staff-padding"
  R1
}

[image of music]

デフォルトでは、譜外部オブジェクトの配置は、配置済みのグラフィカル オブジェクトとの水平方向の衝突を回避するように配置されます。このことは、オブジェクト同士が水平方向に近く配置される状況を招く可能性があります。下の例にあるように、outside-staff-horizontal-padding をセットすることで、必要な水平方向のスペースを増やしています。また、この例では、テキストが加線に近づきすぎないように上方向に移動しています。

\relative {
  c''4^"Word" c c''2
  R1
  \once \override TextScript.outside-staff-horizontal-padding = #1
  c,,4^"Word" c c''2
}

[image of music]

参照

コード断片集: Spacing


LilyPond 記譜法リファレンス v2.25.21 (開発版).