[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < 譜ではない行のスペース ] | [ 上へ : 垂直方向のスペース ] | [ 垂直方向の衝突回避 > ] |
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
[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < 譜ではない行のスペース ] | [ 上へ : 垂直方向のスペース ] | [ 垂直方向の衝突回避 > ] |