5.5.1 オブジェクトを揃える

self-alignment-interface と/あるいは side-position-interface をサポートするグラフィカル オブジェクトは、さまざまな形式で配置済みのオブジェクトに揃えることができます。そのようなオブジェクトのリストは、 self-alignment-interface side-position-interface を参照してください。

すべてのグラフィカル オブジェクトは参照ポイント、水平方向の広がり、それに垂直方向の広がりを持ちます。水平方向の広がりは、参照ポイントから左端と右端までの距離を意味する数値のペアであり、左端は負値です。垂直方向の広がりは、参照ポイントから下端と上端までの距離を意味する数値のペアであり、下端は負値です。

あるオブジェクトの譜面上の位置は、X-offset プロパティと Y-offset プロパティの値によって与えられます。X-offset の値は、親オブジェクトの参照ポイントの X 座標からの距離を意味します。Y-offset の値は、譜の中央線からの距離を意味します。X-offsetY-offset の値は直接設定されることもありますし、いくつかの形式で親オブジェクトと揃えるためにプロシージャによって算出されることもあります。

Note: 多くのオブジェクトは特殊な配置規則を持っています。そのため、そのオブジェクトが self-alignment-interface をサポートしていたとしても、X-offset あるいは Y-offset の設定は無視されたり、変更されることがあります。

例えば、臨時記号は Y-offset を設定することにより垂直方向の位置を変更することができますが、X-offset は効果を持ちません。

リハーサル記号は、小節線、音部記号、拍子記号それに調号などの改行可能なオブジェクトに揃えることができます。リハーサル記号をそのようなオブジェクトに合わせて配置するために、break-aligned-interface の中に特別なプロパティがあります。

参照

記譜法リファレンス: break-alignable-interface を使用する,

拡張: Callback functions


X-offsetY-offset を直接設定する

多くのオブジェクトの X-offset プロパティと Y-offset プロパティに数値を与えることができます。以下の例は、3 つの音符を示していて、1 つはデフォルト配置の運指記号を持ち、他の 2 つの運指記号は X-offsetY-offset が変更されています。

a'-3
a'
-\tweak X-offset #0
-\tweak Y-offset #0
-3
a'
-\tweak X-offset #-1
-\tweak Y-offset #1
-3

[image of music]


side-position-interface を使用する

side-position-interface をサポートするオブジェクトは、その親オブジェクトの隣に配置することができ、それにより、それら 2 つのオブジェクトの指定された端をくっつけることができます。オブジェクトを親オブジェクトの上、下、右、あるいは左に配置することができます。親オブジェクトを指定することはできません: 親オブジェクトは入力ストリームの中での要素の順序によって決定されます。たいていのオブジェクトの親オブジェクトは、そのオブジェクトに関連する符頭となります。

side-axis プロパティと direction プロパティの値は、以下のように、オブジェクトが配置される場所を決定します:

side-axisdirection
propertypropertyPlacement
0-1
01
1-1
11

side-axis0 である場合、X-offset にはプロシージャ ly:side-position-interface::x-aligned-side をセットする必要があります。このプロシージャは、direction の値に基づいて親オブジェクトの左あるいは右にオブジェクトを配置するための適切な値を X-offset に返します。

side-axis1 である場合、Y-offset にはプロシージャ ly:side-position-interface::y-aligned-side をセットする必要があります。このプロシージャは、direction の値に基づいて親オブジェクトの上あるいは下にオブジェクトを配置するための適切な値を Y-offset に返します。


self-alignment-interface を使用する

オブジェクトを自動的に水平方向に揃える

self-alignment-interface をサポートするオブジェクトの水平方向の揃えは、self-alignment-X プロパティの値によって制御され、そのオブジェクトの X-offset プロパティにはly:self-alignment-interface::x-aligned-on-self がセットされています。 self-alignment-X には任意の実数値を与えることができますが、 与える値は、そのオブジェクトの X 方向の広がりの半分を単位とします。負値はオブジェクトを右に移動させ、正値はオブジェクトを左に移動させます。値が 0 であればそのオブジェクトは親オブジェクトの参照ポイントに中央揃えされ、値が -1 であればそのオブジェクトの左端が親オブジェクトの参照ポイントに揃えられ、値が 1 であればそのオブジェクトの右端が親オブジェクトの参照ポイントに揃えられます。記号 LEFT, CENTER, それに RIGHT はそれぞれ -1, 0, それに 1 に対応します。

通常、\override コマンドを用いて self-alignment-X の値を変更しますが、\tweak コマンドを用いることで単一の音符に付けられている複数の注釈を個別に揃えることができます:

a'
-\tweak self-alignment-X #-1
^"left-aligned"
-\tweak self-alignment-X #0
^"center-aligned"
-\tweak self-alignment-X #RIGHT
^"right-aligned"
-\tweak self-alignment-X #-2.5
^"aligned further to the right"

[image of music]

オブジェクトを自動的に垂直方向に揃える

オブジェクトの Y-offset プロパティに ly:self-alignment-interface::y-aligned-on-self がセットされていれば、水平方向の揃えと同じように、垂直方向に揃えることができます。しかしながら、垂直方向の揃えには他のメカニズムも関与します: Y-offset の値は、垂直方向の揃えに関与する変数の 1 つに過ぎません。このことにより、いくつかのオブジェクトの Y-offset 値の調整はややこしくなります。単位はそのオブジェクトの垂直方向の広がりの半分です。通常これは非常に小さいため、非常に大きな数値が必要になる可能性があります。値が -1 であればそのオブジェクトの下端が親オブジェクトの参照ポイントに揃えられ、値が 0 であればそのオブジェクトの中央が親オブジェクトの参照ポイントに揃えられ、値が 1 であればそのオブジェクトの上端が親オブジェクトの参照ポイントに揃えられます。記号 DOWN, CENTER, それに UP はそれぞれ -1, 0, それに 1 に対応します。

オブジェクトを自動的に両方向に揃える

X-offsetY-offset の両方の設定を行うことで、オブジェクトの水平方向と垂直方向の揃えを同時に行うことができます。

以下の例は、運指記号を符頭に近づけるための調整方法を示しています。

a'
-\tweak self-alignment-X #0.5  % 左方向に移動させます
-\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self
-\tweak self-alignment-Y #-1  % 上方向に移動させます
-3  % 3 の指

[image of music]


break-alignable-interface を使用する

リハーサル記号と小節番号を小節線ではなく、記譜オブジェクトに揃えることができます。対象となる記譜オブジェクトには、ambitus, breathing-sign, clef, custos, staff-bar, left-edge, key-cancellation, key-signature, それに time-signature があります。

それぞれの記号は、リハーサル記号が揃えられるデフォルトの参照点を持ち、その位置は種類ごとに異なります。

% リハーサル記号は音部記号の右端に揃えられます
\override Score.RehearsalMark.break-align-symbols = #'(clef)
\key a \major
\clef treble
\mark "↓"
e'1
% リハーサル記号は拍子記号の左端に揃えられます
\override Score.RehearsalMark.break-align-symbols = #'(time-signature)
\key a \major
\clef treble
\time 3/4
\mark "↓"
e'2.
% リハーサル記号はブレス記号の中央に揃えられます
\override Score.RehearsalMark.break-align-symbols = #'(breathing-sign)
\key a \major
\clef treble
\time 4/4
e'1
\breathe
\mark "↓"

[image of music]

揃えの対象となり得るオブジェクトのリストを指定することができます。揃えを行う時点で対象リストの中にあるオブジェクトのいくつかが不可視である – break-visibility の設定や、調号と音部に対する明示的な可視性の設定により – 場合、リハーサル記号あるいは小節番号はリストの中にある最初の可視のオブジェクトに揃えられます。リストの中にあるオブジェクトがすべて不可視である場合、小節線に揃えられます。小節線が不可視である場合、小節線があるはずの場所に揃えられます。

% リハーサル記号は調号の右端に揃えられます
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
e'1
% リハーサル記号は音部記号の右端に揃えられます
\set Staff.explicitKeySignatureVisibility = #all-invisible
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef bass
\mark "↓"
gis,1
% リハーサル記号は小節線の中央に揃えられます
\set Staff.explicitKeySignatureVisibility = #all-invisible
\set Staff.explicitClefVisibility = #all-invisible
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
e'1

[image of music]

以下の例で示すように、記譜オブジェクトに対するリハーサル記号の揃えを変更することができます。複数の譜を持つ楽譜では、この設定はすべての譜に適用されます。

% リハーサル記号は調号の右端に揃えられます
\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
\key a \major
\clef treble
\time 4/4
\mark "↓"
e'1
% リハーサル記号は調号の中央に揃えられます
\once \override Score.KeySignature.break-align-anchor-alignment = #CENTER
\mark "↓"
\key a \major
e'1
% リハーサル記号は調号の左端に揃えられます
\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
\key a \major
\mark "↓"
e'1

[image of music]

また、リハーサル記号を左端に揃えて、さらに任意の量だけ右あるいは左にずらすことができます。単位は譜スペースです:

% リハーサル記号は調号の左端に揃えられて
% さらに 3.5 譜スペース右にずらされます
\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
\once \override Score.KeySignature.break-align-anchor = #3.5
\key a \major
\mark "↓"
e'1
% リハーサル記号は調号の左端に揃えられて
% さらに 2 譜スペース左にずらされます
\once \override Score.KeySignature.break-align-anchor = #-2
\key a \major
\mark "↓"
e'1

[image of music]


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