| [ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
| [ < 譜ではない行のスペース ] | [ 上へ : 垂直方向のスペース ] | [ 垂直方向の衝突回避 > ] |
4.4.2 譜とシステムを明示的に配置する
上で説明した可変な垂直方向のスペースの仕組みを理解する方法の 1 つに、譜とシステムの間の垂直方向のパティングの大きさを制御する設定をコレクションすることがあります。
NonMusicalPaperColumn.line-break-system-details を用いて、垂直方向のスペースに別の方法でアプローチすることができます。可変な垂直方向のスペースの仕組みが垂直方向のパディングを指定するのに対して、NonMusicalPaperColumn.line-break-system-details はページ上の垂直方向の位置を指定することができます。
NonMusicalPaperColumn.line-break-system-details は
4 つの設定からなる連想配列を受け取ります:
-
X-offset -
Y-offset -
extra-offset -
alignment-distances
以下の NonMusicalPaperColumn に対する上書きを含む、グラフィカル オブジェクトの上書きは、入力ファイルの中の 3 つの場所に配置することができます:
- 音符入力の途中に直接配置する
-
\contextブロックの中に配置する -
\withブロックの中に配置する
NonMusicalPaperColumn を上書きする場合、通常は \context ブロックや \with ブロックの中で\override コマンドを使用します。一方、音符入力の途中で NonMusicalPaperColumn を上書きする場合、特殊なコマンド \overrideProperty を使用します。ここで、特殊なコマンド \overrideProperty で
NonMusicalPaperColumn を上書きする例をいくつか挙げます:
\overrideProperty NonMusicalPaperColumn.line-break-system-details
#'((X-offset . 20))
\overrideProperty NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 40))
\overrideProperty NonMusicalPaperColumn.line-break-system-details
#'((X-offset . 20)
(Y-offset . 40))
\overrideProperty NonMusicalPaperColumn.line-break-system-details
#'((alignment-distances . (15)))
\overrideProperty NonMusicalPaperColumn.line-break-system-details
#'((X-offset . 20)
(Y-offset . 40)
(alignment-distances . (15)))
これらの異なる設定がそれぞれどのように機能するのかを理解するために、まったく上書きを含まない例を見ることから始めます。
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
\score {
<<
\new Staff <<
\new Voice {
s1*5 \break
s1*5 \break
s1*5 \break
}
\new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>>
\new Staff {
\repeat unfold 15 { d'4 d' d' d' }
}
>>
}
}
この楽譜は改行/改ページ情報を専用のボイスに孤立させています。この改行/改ページ用のボイスを作成するテクニックは、例がより複雑になっていくときに、レイアウトと音楽入力を分離することを助けてくれます。改行/改ページ を参照してください。
明示的な \breaks を使うことで、音楽を 1 行あたり 5 小節に分割しています。垂直方向のスペースは LilyPond のデフォルトですが、各システムの垂直方向の開始位置が、NonMusicalPaperColumn グラフィカル オブジェクトの
line-break-system-details 属性の中にある
Y-offset により明示的にセットされています。
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
\score {
<<
\new Staff <<
\new Voice {
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 0))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 40))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 60))
s1*5 \break
}
\new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>>
\new Staff {
\repeat unfold 15 { d'4 d' d' d' }
}
>>
}
}
line-break-system-details は潜在的に多くの値を持つ連想リストをとりますが、ここでは値を 1 つだけしかセットしていないということに注意してください。また、ここでは Y-offset プロパティは、各システムがページに描画される垂直方向の位置を決定しているということにも注意してください。
Y-offset や X-offset を用いて絶対位置を指定することができる一方、line-break-system-details の extra-offset プロパティを用いて、相対位置を指定することもできます。この時、位置はデフォルトあるいは
X-offset と Y-offset によって絶対的に指定された位置からの相対的なものになります。extra-offset は、X 軸、Y 軸のオフセットからなる ペア を受け入れます。
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
\score {
<<
\new Staff <<
\new Voice {
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((extra-offset . (0 . 10)))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((extra-offset . (0 . 10)))
s1*5 \break
}
\new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>>
\new Staff {
\repeat unfold 15 { d'4 d' d' d' }
}
>>
}
}
これまでに各システムの垂直方向の開始位置を明示的に設定しましたが、各システム内部の各譜の垂直方向の開始位置を手動で設定することも可能です。line-break-system-details のサブプロパティ alignment-offsets を用います。
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
\score {
<<
\new Staff <<
\new Voice {
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 20)
(alignment-distances . (10)))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 60)
(alignment-distances . (15)))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 85)
(alignment-distances . (20)))
s1*5 \break
}
\new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>>
\new Staff {
\repeat unfold 15 { d'4 d' d' d' }
}
>>
}
}
ここでは NonMusicalPaperColumn グラフィカル オブジェクトのline-break-system-details 属性に 2 つの値を代入しているということに注意してください。line-break-system-details 属性の連想配列はもっと多くのスペース パラメータ
(例えば、Y-offset ペアに相当する X-offset ペア)
を受け付けますが、システムと譜の垂直方向の開始地点を制御するのに必要な設定は、Y-offset ペアと alignment-offsets ペアだけです。
最後に、alignment-offsets は譜の垂直方向の位置を指定するのであり、譜グループの位置を指定するわけではないということに注意してください。
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
\score {
<<
\new Staff <<
\new Voice {
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 0)
(alignment-distances . (30 10)))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 60)
(alignment-distances . (10 10)))
s1*5 \break
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((Y-offset . 100)
(alignment-distances . (10 30)))
s1*5 \break
}
\new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>>
\new StaffGroup <<
\new Staff { \repeat unfold 15 { d'4 d' d' d' } }
\new Staff { \repeat unfold 15 { e'4 e' e' e' } }
>>
>>
}
}
考慮すべき点がいくつかあります:
-
alignment-offsetsを使用する場合、歌詞と他の譜ではない行は譜としてカウントされません。 -
X-offset,Y-offset,extra-offset,alignment-offsetsに渡される数の単位は、譜線間隔の倍数と解釈されます。正の値は譜と歌詞を下または右に移動させ、負の値は譜と歌詞を上または左に移動させます。 - ここで扱った
NonMusicalPaperColumn.line-break-system-details設定は譜とシステムを任意の場所に配置することを可能にするため、紙面領域やマージン領域を犯したり、他の譜やシステムの上に譜刻する可能性さえあります。これらの設定に適切な値を渡すことで、そのようなことは避けられます。
参照
コード断片集: Spacing
| [ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
| [ < 譜ではない行のスペース ] | [ 上へ : 垂直方向のスペース ] | [ 垂直方向の衝突回避 > ] |