[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < 垂直方向のスペース ] | [ 上へ : 垂直方向のスペース ] | [ システム内部のスペース プロパティ > ] |
4.4.1 システム内部の可変な垂直方向のスペース
システム内部の可変な垂直方向のスペースを制御する 3 つの仕組みがあり、以下のカテゴリに分けられます:
- グループ化されていない譜,
-
グループ化されている譜
(
ChoirStaff
等のような譜グループ内の譜) -
譜ではない行
(
Lyrics
,ChordNames
等)
システムの高さは 2 つのステップで決定されます。最初に、すべての譜が利用可能なスペースの量に応じた間隔で配置されます。次に、譜ではない行が譜の間に配置されます。
このセクションでは、システム内部の譜と譜ではない行の垂直方向のスペースを制御する仕組みだけを説明しているということに注意してください。システム、score、マークアップ、それにマージン間の垂直方向のスペースは、\paper
変数によって制御されます
– 可変な垂直方向の \paper
スペース変数 で説明しています。
システム内部のスペース プロパティ | ||
グループ化されていない譜のスペース | ||
グループ化されている譜のスペース | ||
譜ではない行のスペース |
[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < システム内部の可変な垂直方向のスペース ] | [ 上へ : システム内部の可変な垂直方向のスペース ] | [ グループ化されていない譜のスペース > ] |
システム内部のスペース プロパティ
システム内部の垂直方向のスペースは、2 セットのグラフィカル オブジェクト
プロパティによって制御されます。1 つ目は VerticalAxisGroup
グラフィカル オブジェクト
– これは、譜と譜ではない行によって作成されます –
のプロパティ セットです。2 つ目は StaffGrouper
グラフィカル オブジェクト
– これは、明示的に呼び出された場合に、譜グループによって作成されます –
のプロパティ セットです。これらのプロパティは、このセクションの終わりで説明します。
これらのプロパティの名前は (staff-affinity
を除いて)、item1-item2-spacing
という形式に従います
– ここで、item1
と item2
は、スペースを入れられる要素です。item2
は必ずしも item1
の下にある要素ではないということに注意してください。例えば、staff-affinity
が UP
である場合、nonstaff-relatedstaff-spacing
は譜ではない行から上向きにスペースをとります。
スペースは、2 つの要素の 参照ポイント 間の距離です。譜の参照ポイントは、その譜の StaffSymbol
(すなわち、line-count
が奇数の場合は中央の譜線で、line-count
が偶数の場合は中央のスペースです)
の垂直方向の中央です。譜ではない行の参照ポイントは、以下の表のようになります:
譜ではない行 | 参照ポイント |
---|---|
ChordNames | ベースライン |
NoteNames | ベースライン |
Lyrics | ベースライン |
Dynamics | 垂直方向の中央 |
FiguredBass | 最も上のポイント |
FretBoards | トップ ライン |
以下の画像では、水平方向の線が参照ポイントの位置を示しています:
垂直方向のスペースのグラフィカル オブジェクト プロパティは
(staff-affinity
を除いて)、可変な垂直方向の \paper
スペース変数 で説明した
\paper
スペース変数と同じ連想配列構造を使用します。
連想配列を変更する方法は、連想配列を変更する で説明します。グラフィカル オブジェクト プロパティの調節は、\score
ブロックか \layout
ブロックの内部で、\override
を用いて行う必要があります。
以下の例は、連想配列を変更する 2 つの方法を示しています。最初の宣言は 1 つのキー値を個別に更新して、2 番目の宣言はプロパティ全体を再定義しています:
\new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 } { … } \new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 10) (minimum-distance . 9) (padding . 1) (stretchability . 10)) } { … }
スペース設定をグローバルに変更するには、そのスペース設定を \layout
ブロックの中に配置します:
\layout { \context { \Staff \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 } }
垂直方向スペースのグラフィカル オブジェクト プロパティの標準設定は VerticalAxisGroup と StaffGrouper でリスト アップしています。特定のタイプの譜ではない行のデフォルト設定は、 Contexts の中にある関連するコンテキストの説明でリスト アップしています。
VerticalAxisGroup
グラフィカル オブジェクトのプロパティ
通常、VerticalAxisGroup
プロパティは、Staff
レベル (あるいはそれと同等のレベル) で、\override
を用いて調節します。
-
staff-staff-spacing
-
カレントの譜とそのすぐ下の譜の間隔 – その間に 1 つ以上の譜ではない行 (
Lyrics
等) が配置されている場合であっても – を決定するために使用します。システムの最下段の譜には適用されません。VerticalAxisGroup
のstaff-staff-spacing
は、譜がグループの一部である場合はStaffGrouper
のstaff-staff-spacing
プロパティを適用し、グループではない譜の場合はその譜のdefault-staff-staff-spacing
を適用する Scheme 関数です。これにより、グループ化されている譜に異なる間隔を入れることが可能です。グループ化されていることとは無関係に同一の間隔を入れるには、上で示したプロパティ再定義を用いて、この関数を可変スペースの連想配列で置き換えます。 -
default-staff-staff-spacing
グループ化されていない譜で使用される
staff-staff-spacing
を定義している可変スペースの連想配列です。staff-staff-spacing
は\override
を用いて上書きされることがあります。-
staff-affinity
カレントの譜ではない行にスペースを入れるために使用する譜の方向です。選択肢は
UP
,DOWN
, それにCENTER
です。CENTER
の場合、衝突や他のスペース上の制約によって妨げられない限り、譜ではない行は上下にある近くの譜から等距離になるよう配置されます。隣接する譜ではない行のstaff-affinity
は、方向が下から上へと増加しないようにする必要があります。例えば、DOWN
に設定された譜ではない行のすぐ後にUP
に設定された譜ではない行を置くべきではありません。システムの最上段にある譜ではない行はDOWN
であるべきで、システムの最下段にある譜ではない行はUP
であるべきです。譜ではない行のstaff-affinity
を#f
に設定すると、その行は譜として扱われます。譜に対してUP
,CENTER
, あるいはDOWN
のstaff-affinity
を設定すると、その譜は譜ではない行として扱われます。-
nonstaff-relatedstaff-spacing
カレントの譜ではない行と
staff-affinity
の方向にある最も近い譜との間隔です – 2 つの間に譜ではない行が無く、staff-affinity
がUP
とDOWN
のどちらかである場合です。staff-affinity
がCENTER
である場合、nonstaff-relatedstaff-spacing
は最も近くにある 上下両サイド の譜の間隔になります – たとえ、カレントの譜ではない行と上下どちらかの譜の間に、他の譜ではない行があったとしてもです。このことは、譜ではない行の配置は、上下にある譜と譜ではない行の両方に依存するということを意味します。このスペースのstretchability
に小さな値を設定すると、そのとおりのスペースになりやすくなります。このスペースのstretchability
に大きな値を設定すると、そのとおりのスペースになりにくくなります。-
nonstaff-nonstaff-spacing
カレントの譜ではない行と
staff-affinity
の方向にある次の譜ではない行の間隔です – 2 つの間に譜が無く、staff-affinity
がUP
とDOWN
のどちらかである場合です。-
nonstaff-unrelatedstaff-spacing
カレントの譜ではない行と
staff-affinity
とは反対方向にある譜の間隔です – 2 つの間に他の譜ではない行が無く、staff-affinity
がUP
とDOWN
のどちらかである場合です。これは、例えば、Lyrics
行とLyrics
が属していない譜との間のパディングを最小にする必要がある場合に使用される可能性があります。
StaffGrouper
グラフィカル オブジェクトのプロパティ
通常、StaffGrouper
プロパティは、StaffGroup
レベル (あるいはそれと同等のレベル) で、\override
を用いて調節します。
-
staff-staff-spacing
カレントの譜グループ内部にある隣接する譜の間隔です。個々の譜の
VerticalAxisGroup
グラフィカル オブジェクトのstaff-staff-spacing
プロパティは、譜毎のスペース設定で上書きされる可能性があります。-
staffgroup-staff-spacing
カレントの譜グループの最後の譜と、同じシステム内にあるすぐ下の譜の間隔です – 2 つの譜の間に 1 つ以上の譜ではない行 (
Lyrics
等) が存在する場合であってもです。システムの最下段の譜には適用されません。個々の譜のVerticalAxisGroup
グラフィカル オブジェクトのstaff-staff-spacing
プロパティは、譜毎のスペース設定で上書きされる可能性があります。
参照
記譜法リファレンス:
可変な垂直方向の \paper
スペース変数,
連想配列を変更する
インストールされているファイル: ‘ly/engraver-init.ly’, ‘scm/define-grobs.scm’
内部リファレンス: Contexts, VerticalAxisGroup, StaffGrouper
[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < システム内部のスペース プロパティ ] | [ 上へ : システム内部の可変な垂直方向のスペース ] | [ グループ化されている譜のスペース > ] |
グループ化されていない譜のスペース
譜 (Staff
, DrumStaff
, TabStaff
等) は、1 つ以上のボイス コンテキストを保持することができ、他の譜を保持することはできないコンテキストです。
以下のプロパティは、グループ化されていない 譜のスペースに影響を与えます:
-
VerticalAxisGroup
プロパティ:-
default-staff-staff-spacing
-
staff-staff-spacing
-
これらのグラフィカル オブジェクト プロパティは、それぞれ上で説明しています。システム内部のスペース プロパティ を参照してください。
譜グループの一部である譜には、他にもプロパティがあります。グループ化されている譜のスペース を参照してください。
以下の例は、default-staff-staff-spacing
プロパティがどのようにグループ化されていない譜のスペースに影響を与えるかを示しています。staff-staff-spacing
に同じ上書きを適用すると同じ効果を持ちますが、譜がグループ化されている場合にも適用されます。
\layout { \context { \Staff \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 8) (minimum-distance . 7) (padding . 1)) } } << % 非常に低い位置にある音符は 'basic-distance が提供するよりも % 大きなスペースを必要とするため、この譜と次の譜の間隔は 'padding % によって決定されます。 \new Staff { b,2 r | } % ここでは、'basic-distance が十分なスペースを提供していて、 % ページ上にある他の要素のスペースを確保するためにスペースを % ('minimum-distance の値に向かって) 縮める必要はありません。 % そのため、この譜と次の譜の間隔は 'basic-distance によって % 決定されます。 \new Staff { \clef bass g2 r | } % 'padding に負の値を設定することにより、譜を重ねることができます。 % 'basic-distance が取り得る最小の値は 0 です。 \new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 3.5) (padding . -10)) } { \clef bass g2 r | } \new Staff { \clef bass g2 r | } >>
参照
インストールされているファイル: ‘scm/define-grobs.scm’
コード断片集: Spacing
内部リファレンス: VerticalAxisGroup
[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < グループ化されていない譜のスペース ] | [ 上へ : システム内部の可変な垂直方向のスペース ] | [ 譜ではない行のスペース > ] |
グループ化されている譜のスペース
オーケストラ譜や他の大きな楽譜では、譜を譜ループ化することが一般的です。通常、グループ間のスペースは、同じグループの譜の間のスペースよりも大きくなります。
譜グループ (StaffGroup
, ChoirStaff
等) は、同時進行する 1 つ以上の譜を保持することができるコンテキストです。
以下のプロパティは、譜グループの中にある譜のスペースに影響を与えます:
-
VerticalAxisGroup
プロパティ:-
staff-staff-spacing
-
-
StaffGrouper
プロパティ:-
staff-staff-spacing
-
staffgroup-staff-spacing
-
これらのグラフィカル オブジェクト プロパティは、上で個々に説明しています。システム内部のスペース プロパティ を参照してください。
以下の例は、StaffGrouper
グラフィカル オブジェクトのプロパティがどのようにグループ化された譜のスペースに影響を与えるかを示しています:
\layout { \context { \Score \override StaffGrouper.staff-staff-spacing.padding = #0 \override StaffGrouper.staff-staff-spacing.basic-distance = #1 } } << \new PianoStaff \with { \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20 } << \new Staff { c'1 } \new Staff { c'1 } >> \new StaffGroup << \new Staff { c'1 } \new Staff { c'1 } >> >>
参照
インストールされているファイル: ‘scm/define-grobs.scm’
コード断片集: Spacing
内部リファレンス: VerticalAxisGroup, StaffGrouper
[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < グループ化されている譜のスペース ] | [ 上へ : システム内部の可変な垂直方向のスペース ] | [ 譜とシステムを明示的に配置する > ] |
譜ではない行のスペース
譜ではない行 (Lyrics
, ChordNames
等) は、それが保持するレイアウト オブジェクトが譜のように譜刻される
(すなわち、システム内部の水平線上での譜刻) コンテキストです。具体的に言うと、譜ではない行は
Axis_group_engraver を含む譜ではないコンテキストです。
以下のプロパティが、譜ではない行のスペースに影響を与えいます:
-
VerticalAxisGroup
プロパティ:-
staff-affinity
-
nonstaff-relatedstaff-spacing
-
nonstaff-nonstaff-spacing
-
nonstaff-unrelatedstaff-spacing
-
これらのグラフィカル オブジェクト プロパティは、上で個々に説明しています。システム内部のスペース プロパティ を参照してください。
以下の例は、nonstaff-nonstaff-spacing
プロパティがどのように隣接する譜ではない行のスペースに影響を与えるかを示しています。ここでは、stretchability
キーに非常に大きな値を設定することにより、通常よりも歌詞が広がりやすくしています:
\layout { \context { \Lyrics \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000 } } \new StaffGroup << \new Staff \with { \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30)) } { c'1 } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #UP } \lyricmode { up } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #CENTER } \lyricmode { center } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #DOWN } \lyricmode { down } \new Staff { c'1 } >>
参照
インストールされているファイル: ‘ly/engraver-init.ly’, ‘scm/define-grobs.scm’
コード断片集: Spacing
内部リファレンス: Contexts, VerticalAxisGroup
[ << スペースの問題 ] | [トップ][目次][インデックス] | [ デフォルトを変更する >> ] |
[ < グループ化されている譜のスペース ] | [ 上へ : システム内部の可変な垂直方向のスペース ] | [ 譜とシステムを明示的に配置する > ] |