5.3.5 \set\override

\set\override コマンドは、コンテキストと結びついたプロパティを操作するものです。どちらの場合も、プロパティはコンテキストの階層に従います。そのコンテキスト自身で値がセットされていないプロパティは、対応する親コンテキストのプロパティの値を用いることになります。

コンテキスト プロパティの値や、その有効期間は動的なものであり、音楽が解釈 (つまり、‘イテレート’) されている最中にのみ有効なものです。コンテキストが生成される時、プロパティはそのコンテキストの定義に従って (変更が加えられる場合もあります) 初期化されます。続く変更は、音楽内にある‘プロパティを変更する’コマンドによって行われます。

グラフィカル オブジェクト (あるいは “grob”) の定義は、コンテキスト プロパティの中でも特別なカテゴリに属しており、構造や使用方法が通常のコンテキスト プロパティとは異なります。Grob の定義は、Grob プロパティに細分化されます。

また、通常のコンテキスト プロパティと異なる点がもう一つあり、Grob 定義はそれぞれの Grob プロパティやサブプロパティを追跡するために用いる内部‘記録’を持っています。そのため、これらのプロパティを異なるコンテキストに定義していても、Grob が生成される時には現在のコンテキストとその親の間で保持しているプロパティを受け継ぐことで、全ての Grob 定義を保持している状態になります。

Grob は音楽表記を解釈する際にエングラーバによって作成され、エングラーバが属するコンテキストの現在の Grob 定義から初期プロパティを受け取ります。 その後、エングラーバ (あるいは LilyPond の‘バックエンド’の部分) は Grob の初期プロパティを変更 (または追加) することができます。しかし、これはコンテキスト自身の Grob 定義には影響しません。

LilyPond が、‘ユーザ レベル’での調整において用いる Grob プロパティという言葉は、実はコンテキスト自身の持つ Grob 定義のプロパティを指しています。

Grob 定義は \override\revert という、異なるコマンド セットでアクセスあるいは操作され、大文字で始まる名前を持ちます (例えば ‘NodeHead’)。一方、通常のコンテキスト プロパティは \set\unset というコマンドで操作され、小文字で始まる名前を持ちます。

\tweak\overrideProperty は、全てのコンテキスト プロパティを完全に無視して対象の Grob プロパティを変更します。この際、Grob が生成されるタイミングで取得され、\tweak では音楽イベントに関連する Grob のプロパティが変更されます。\overrideProperty は特定のオーバライドに対して使用します。


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