[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3 プロパティを変更する

@translationof Modifying properties


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.1 プロパティ変更の概要

@translationof Overview of modifying properties

各コンテキストは、ある特定のタイプのグラフィカル オブジェクトを作成することについて責任を持ちます。それらのオブジェクトを表示するために使用される設定も、コンテキストによって保存されます。それらの設定を変更することにより、オブジェクトの見た目を変えることができます。

コンテキストに保存されるプロパティには 2 種類あります: コンテキスト プロパティとグラフィカル オブジェクト プロパティです。コンテキスト プロパティは、コンテキスト全体に適用され、コンテキスト自体をどのように表示するかを制御します。対照的に、グラフィカル オブジェクト プロパティは、コンテキストの中に表示されるある特定のタイプのグラフィカル オブジェクトに適用されます。

\set コマンドと \unset コマンドは、コンテキスト プロパティの値を変更するために使用されます。\override コマンドと \revert コマンドは、グラフィカル オブジェクト プロパティの値を変更するために使用されます。

参照

内部リファレンス: (internals)Backend section ‘Backend’ in Internals Reference, (internals)All layout objects section ‘All layout objects’ in Internals Reference, (internals)OverrideProperty section ‘OverrideProperty’ in Internals Reference, (internals)RevertProperty section ‘RevertProperty’ in Internals Reference, (internals)PropertySet section ‘PropertySet’ in Internals Reference

既知の問題と警告

バックエンドはオブジェクト プロパティのタイプ チェックをそれほど厳密には行いません。Scheme 値の循環参照は、ハング アップまたはクラッシュ、あるいは両方を引き起こす可能性があります。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.2 \set コマンド

@translationof The set command

各コンテキストは プロパティ の集合を持ちます。プロパティとは、コンテキストの中に保持されている変数です。コンテキスト プロパティは、\set コマンドによって変更されます。\set コマンドは以下のような構文を持ちます:

 
\set context.property = #value

value は Scheme オブジェクトですので、# 文字を前に置く必要があります。

通常、コンテキスト プロパティの名前は、小文字で始まる単語に大文字で始まる単語をつなげたものです。これらはたいてい音楽から記譜への翻訳を制御します – 例えば、localAlterations (臨時記号を表示するかどうかを決定します) や、measurePosition (小節線を表示するタイミングを決定します) です。コンテキスト プロパティは、楽曲の解釈をしている間、ずっと値を変更しておくことができます。measurePosition がその良い例です。コンテキスト プロパティは \set で変更されます。

例えば、コンテキスト プロパティ skipBars が #t にセットされていれば、複小節休符は 1 つの小節に統合されます:

 
R1*2
\set Score.skipBars = ##t
R1*2

[image of music]

context 引数が省略されている場合、プロパティはカレントの最下位のコンテキストにセットされます (一般に、ChordNames, Voice, TabVoice, あるいは Lyrics です)。

 
\set Score.autoBeaming = ##f
\relative {
  e''8 e e e
  \set autoBeaming = ##t
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

変更は ‘オンザフライ’ (その場、その時々) で適用されるため、設定 \set autoBeaming = ##t は 2 番目の 8 分音符グループだけに効果を持ちます。

最下位コンテキストが常に変更しようとしているプロパティを持っているとは限らないということに注意してください – 例えば、skipBars プロパティをデフォルトの最下位コンテキスト (この場合は、Voice です) にセットしようと試みても、効果はありません。なぜなら、skipBars は Score コンテキストのプロパティだからです。

 
R1*2
\set skipBars = ##t
R1*2

[image of music]

コンテキストは階層構造をとるため、音楽表記を囲っているコンテキスト – 例えば、Staff – が指定された場合、変更は現在の Staff の中にあるすべての Voice に適用されます。

\unset コマンド:

 
\unset context.property

は、context から property の定義を削除するために使用されます。このコマンドは、context の中にセットされた場合にのみ、定義を削除します。音楽表記を囲っているコンテキストにセットされたプロパティは、囲まれているコンテキストの中にある \unset では変更されません:

 
\set Score.autoBeaming = ##t
\relative {
  \unset autoBeaming
  e''8 e e e
  \unset Score.autoBeaming
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

\set と同様に、 最下位コンテキストに対しては context 引数を指定する必要はありません。ですから、以下の 2 つの記述:

 
\set Voice.autoBeaming = ##t
\set autoBeaming = ##t

は、カレントの最下位コンテキストが Voice であれば、等価です。

\set や \unset の前に \once を置くと、その設定は単一の時間ステップにだけ適用されます:

 
c''4
\once \set fontSize = #4.7
c''4
c''4

[image of music]

利用可能なすべてのコンテキスト プロパティについての完全な記述は、内部リファレンスにあります。以下を参照してください: (internals)Tunable context properties section ‘Tunable context properties’ in Internals Reference.

参照

内部リファレンス: (internals)Tunable context properties section ‘Tunable context properties’ in Internals Reference


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.3 \override コマンド

@translationof The override command

特殊なタイプのコンテキスト プロパティがあります: グラフィカル オブジェクト記述です。グラフィカル オブジェクト記述には StudlyCaps という名前 (大文字で始まります) が付けられています。これらは、関連リストとして、ある特定の種類のグラフィカル オブジェクト用の ‘デフォルト設定’ を保持します。各グラフィカル オブジェクト記述の設定を調べるには、‘scm/define-grobs.scm’ を参照してください。各グラフィカル オブジェクト記述は \override を用いて変更します。

\override コマンドの構文は以下の通りです:

 
\override [context.]GrobName.property = #value

例えば、Stem オブジェクトの thickness プロパティをオーバライドすることによって、符幹の太さを太くすることができます:

 
c''4 c''
\override Voice.Stem.thickness = #3.0
c''4 c''

[image of music]

\override でコンテキストが指定されていない場合、その下にあるコンテキストに適用されます:

 
\override Staff.Stem.thickness = #3.0
<<
  \relative {
    e''4 e
    \override Stem.thickness = #0.5
    e4 e
  } \\
  \relative {
    c''4 c c c
  }
>>

[image of music]

調整可能なオプションには ‘サブプロパティ’ があり、これはプロパティの内部に存在します。これを調整するには、以下のような形式のコマンドを用います:

 
\override Stem.details.beamed-lengths = #'(4 4 3)

また、スパナの端を変更するには、以下のようにします:

 
\override TextSpanner.bound-details.left.text = "left text"
\override TextSpanner.bound-details.right.text = "right text"

\override の効果は、\revert によって元に戻すことができます。

\revert の構文は以下の通りです:

 
\revert [context.]GrobName.property

例を示します:

 
\relative {
  c''4
  \override Voice.Stem.thickness = #3.0
  c4 c
  \revert Voice.Stem.thickness
  c4
}

[image of music]

\override と \revert の効果は、その時点から影響を受けるコンテキストの中にあるすべてのグラフィカル オブジェクトに適用されます:

 
<<
  \relative {
    e''4
    \override Staff.Stem.thickness = #3.0
    e4 e e
  } \\
  \relative {
    c''4 c c
    \revert Staff.Stem.thickness
    c4
  }
>>

[image of music]

\once を \override や \revert と共に用いることで、カレントの時間ステップだけに効果を与えることができます:

 
<<
  \relative c {
    \override Stem.thickness = #3.0
    e''4 e e e
  } \\
  \relative {
    c''4
    \once \override Stem.thickness = #3.0
    c4 c c
  }
>>

[image of music]

参照

内部リファレンス: (internals)Backend section ‘Backend’ in Internals Reference


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.4 \tweak コマンド

@translationof The tweak command

\tweak を用いたグラフィカル オブジェクト プロパティの変更は、コンテキストの中にあるすべてのグラフィカル オブジェクトに適用されます。しかしながら、影響を受けるコンテキストの中にあるすべてのグラフィカル オブジェクトではなく、1 つのグラフィカル オブジェクトだけに変更を適用したい場合もあります。そうするには、\tweak コマンドを用います。\tweak コマンドは以下のような構文を持ちます:

 
\tweak [layout-object.]grob-property value

layout-object の指定はオプションです。\tweak コマンドは、音楽の流れの中で value のすぐ後に現れる音楽オブジェクトに変更を適用します。

調整コマンドの構文と使用方法についての紹介は、 (learning)調整手段 section ‘調整手段’ in Learning Manual を参照してください。

同じようなオブジェクトがいくつか、同じ音楽タイミングで配置されている場合、\override コマンドでそれらの 1 つだけを変更することはできません – \tweak コマンドを用いる必要があります。同じ音楽タイミングで複数出現する可能性があるオブジェクトには、以下のようなものがあります:

以下の例では、和音の中にある符頭の 1 つの色を変更し、さらに他の符頭のタイプを変更しています:

 
< c''
  \tweak color #red
  d''
  g''
  \tweak duration-log #1
  a''
> 4

[image of music]

\tweak を用いて、スラーを変更することができます:

 
\relative { c'-\tweak thickness #5 ( d e f) }

[image of music]

\tweak コマンドが機能するためには、入力ファイルが音楽の流れに変換されたときに、\tweak コマンドのすぐ後に変更が適用されるオブジェクトが配置されている必要があります。 和音全体に対する調整は何の効果もありません。なぜなら、和音の音楽イベントはコンテナと機能するだけで、すべてのレイアウト オブジェクトは EventChord の内部にあるイベントによって作成されるからです:

 
\tweak color #red c''4
\tweak color #red <c'' e''>4
<\tweak color #red c'' e''>4

[image of music]

単純な \tweak コマンドでは入力から直接作成されないオブジェクトを変更することはできません。特に、符幹、自動連桁、それに臨時記号には効果を持ちません。なぜなら、それらは入力ストリームの中の音楽要素によって生成されるのではなく、後になって NoteHead レイアウト オブジェクトによって生成されるからです。

そのような直接作成されないレイアウト オブジェクトは、グラフィカル オブジェクト名を明示的に指定した \tweak コマンドを用いることで調整することができます:

 
\tweak Stem.color #red
\tweak Beam.color #green c''8 e''
<c'' e'' \tweak Accidental.font-size #-3 ges''>4

[image of music]

\tweak コマンドで音部記号や拍子記号を変更することはできません。なぜなら、コンテキストを指定するために必要とされる追加要素の自動挿入により、それらは前に配置された \tweak コマンドとは分離されるからです。

記譜要素の前に複数の \tweak コマンドを配置することができます – それらはすべて効果を持ちます:

 
c'
  -\tweak style #'dashed-line
  -\tweak dash-fraction #0.2
  -\tweak thickness #3
  -\tweak color #red
  \glissando
f''

[image of music]

入力ファイルのあるセクションから生成される音楽の流れ – 自動的に挿入される要素も含めて – が、検証されます。 (extending)Displaying music expressions section ‘Displaying music expressions’ in Extending を参照してください。これは、\tweak コマンドによって変更されるオブジェクトを決定するとき、あるいは、\tweak の適用で入力を調整する方法を決定するときに役に立つかもしれません。

参照

学習マニュアル: (learning)調整手段 section ‘調整手段’ in Learning Manual

拡張: (extending)Displaying music expressions section ‘Displaying music expressions’ in Extending

既知の問題と警告

\tweak コマンドで和音の中にある複数のタイのうち 1 つだけの位置を変更することはできません。入力ファイルの中で最初に遭遇したタイの位置を変更してしまいます。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.5 \set 対 \override

@translationof set versus 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 は特定のオーバライドに対して使用します。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.6 \offset コマンド

@translationof The offset command

\override, \tweak, \overrideProperty コマンドによって Grob プロパティを新たな値にセットすることができますが、そのようなプロパティをデフォルトの値との相対関係で変更できると便利な場合があります。\offset コマンドはこのような目的のために使用することができます。

\offset の記法は:

 
[-]\offset property offsets item

このコマンドは、item によって指定される Grob の property プロパティのデフォルト値に、offsets の内容を加算します。

コマンドの記法によって、\offset は \tweak のように作用するか \override のように作用します。この使用法の差は \offset と用いられる Grob プロパティについてもう少し説明した後に示します。

オフセットできるプロパティ

全てではないですが、多くの Grob プロパティをオフセットすることができます。property がオフセットできない場合、オブジェクトは変更されず、警告が出力されます。このような場合には、代わりに \override や \tweak を用いてオブジェクトを変更する必要があります。

トライアンドエラーで、警告を手がかりにしてオフセットできるものとできないものを判別することができます。しかし、より系統的なアプローチも存在します。

次の基準は、プロパティが \offset で変更できるかどうかの目安になります:

次の例では、いくつかの Grob プロパティのオフセット可能性を、上の基準に基づいて判断します。

\offset を override として使う

item が Grob の名前 (例えば Arpeggio や Staff.OttavaBracket) である場合、\offset の結果は指定された Grob の \override となります。

 
\offset property offsets [context.]GrobName

‘override’ の形では、先頭のハイフンは必ず使われません。\override コマンドにハイフンが使われないのと同様です。

次の例では、最初の小節にあるデフォルト設定のアルペジオを、‘override’ 形でより和音全体に広がるようにオフセットします。アルペジオは上下に譜スペースの半分ずつ広がります。また、最初の和音について通常の方法で positions プロパティをオーバライドする例も示しています。この方法では端点を相対座標ではなく絶対座標で指定しなければならないため、‘譜スペースの半分だけ広げる’という目的を全く表現できていません。また、他の和音についてはまたサイズや位置が異なるため、それぞれに別の \override が必要です。

 
arpeggioMusic = {
  <c' e' g'>\arpeggio <a' c'' e''>\arpeggio
  <d' f' a' c''>\arpeggio <c' e' g' b' d'' f'' a''>\arpeggio
}

{
  \arpeggioMusic
  \bar "||"
  \offset positions #'(-0.5 . 0.5) Arpeggio
  \arpeggioMusic
  \bar "||"
  \once \override Arpeggio.positions = #'(-3.5 . -0.5)
  <c' e' g'>1\arpeggio
  \bar "||"
}

[image of music]

‘override’ の形では、\offset の前に \once や \temporary を置くことができ、\revert で元に戻すことができます ( (extending)Intermediate substitution functions section ‘Intermediate substitution functions’ in Extending を参照してください)。つまり、\offset は実際には property の \override を作成していることになります。

 
music = { c'8\< d' e' f'\! }

{
  \music
  \offset height 1 Hairpin
  \music
  \music
  \revert Hairpin.height
  \music
  \bar "||"
  \once \offset height 1 Hairpin
  \music \music
  \bar "||"
  \override Hairpin.height = 0.2
  \music
  \temporary \offset height 2 Hairpin
  \music
  \music
  \revert Hairpin.height
  \music
  \bar "||"
}

[image of music]

また、\override と同様に、\offset の ‘override’ 形は \undo や \single と使用することもできます:

 
longStem = \offset length 6 Stem

{
 \longStem c'4 c''' c' c''
 \bar "||"
 \undo \longStem c'4 c''' c' c''
 \bar "||"
 \single \longStem c'4 c''' c' c''
 \bar "||"
}

[image of music]

\offset を tweak として使う

item が音楽表記 (( や \arpeggio など) である場合、‘tweak’ が適用された音楽表記が出力されます。

 
[-]\offset [GrobName.]property offsets music-expression

‘tweak’ 形の \offset の記法は、\tweak コマンドそのものに似ています。引数の順番や、前に付くハイフンはそれと同様です。

次の例は、BreathingSign オブジェクトの縦位置を調整するために ‘tweak’ 形を用いています。これと、通常の \tweak コマンドによる例を見比べてください。記法は同一ですが、\tweak の出力はあまり直感的ではありません。なぜなら、BreathingSign.Y-offset が譜線の中央を原点として計算されるためです。\offset を使えば、Y-offset がどのように計算されているかを知る必要はありません。

 
{
  c''4
  \breathe
  c''4
  \offset Y-offset 2 \breathe
  c''2
  \tweak Y-offset 3 \breathe
}

[image of music]

前の例では、‘tweak’ されたオブジェクトはユーザの入力から直接作られています: \breathe コマンドは BreathingSign オブジェクトを明示的に作り出すためです。コマンドが対象にするオブジェクトが曖昧ではないため、オブジェクトの名前を指定する必要はありませんでした。しかし、オブジェクトが間接的に作られる場合には、Grob の名前を含める必要があります。これは \tweak コマンドと同様です。

次の例では、Beam オブジェクトの positions プロパティを \offset することで、連桁を 2 譜スペース分下にずらしています。

最初の \offset では、連桁を明示的に作り出すものが存在しないため、 Grob の名前が必要となります。次の \offset では、連桁が音楽表記 [ によって手動で作り出されるため、Grob の名前は必要ではありません。(また、後者では number-pair の両方をオフセットするために、単一の number を用いる省略記法も示しています。)

 
{
  c''8 g'' e'' d''
  \offset Beam.positions #'(-2 . -2)
  c''8 g'' e'' d''
  c''8 g'' e'' d''
  c''8-\offset positions #-2 [ g'' e'' d'']
}

[image of music]

改行するスパナを \offset する

改行や改ページにまたがるスパナの一部分を個別に変更することもできます。このような場合、offsets はプロパティが要求する型のリストを取ります。

このように用いられる \offset コマンドは \alterBroken コマンドと類似しています。(@ref{Modifying broken spanners} を参照してください。) ただし、\alterBroken とは異なり、\offset に与えられる値は絶対値ではなく相対値となります。

次の例は、‘改行する’ OttavaBracket オブジェクトを、staff-padding プロパティにより移動します。プロパティは元々 number を取るため、offsets は number のリストを取り、改行によって分けられる 2 つの部分に対応します。1 行目のブラケットは、staff-padding のデフォルト値に 0 が加算されることになるため実質変更されません。2 行目のブラケットはデフォルトの高さから 3 譜スペースだけ上に移動します。高さのデフォルト値 (絶対値) は 2 ですが、位置をオフセットするためにこの値を知る必要はありません。

 
{
  \offset staff-padding #'(0 3) Staff.OttavaBracket
  \ottava #1
  c'''2 c'''
  \break
  c'''2 c'''
}

[image of music]

次の例は、Slur オブジェクトの control-points プロパティをオフセットすることで \shape コマンドを模倣しています。ここでは、offsets は number-pair-list のリストとなり、それぞれの要素がスラーの一つの部分に対応します。この例では、@ref{Modifying shapes} に示した例と全く同じ結果を出力します。

 
{
  c'4-\offset control-points #'(
               ((0 . 0) (0 . 0) (0 . 0) (0 . 1))
               ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5))
              ) ( f'4 g' c''
  \break
  d'4 c'' f' c')
}

[image of music]


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

5.3.7 連想配列を変更する

@translationof Modifying alists

ユーザが変更可能なプロパティの中には、内部的には 連想配列 として存在しているものがあります – 連想配列は キー と 値 のペアの配列を保持します。連想配列の構造は下記のとおりです:

 
'((キー1 . 値1)
  (キー2 . 値2)
  (キー3 . 値3)
  …)

ある連想配列がグラフィカル オブジェクト プロパティまたは \paper 変数である場合、その連想配列の個々のキーを、他のキーに影響を与えることなく、変更することができます。

例えば、譜グループの中にある隣り合う譜間のスペースを減らすには、StaffGrouper グラフィカル オブジェクトの staff-staff-spacing プロパティを使用します。このプロパティは 4 つのキー – basic-distance, minimum-distance, padding, それに stretchability – を持つ連想配列です。このプロパティの標準設定は、内部リファレンスの “Backend” セクションでリストアップされています ( (internals)StaffGrouper section ‘StaffGrouper’ in Internals Reference を参照してください):

 
'((basic-distance . 9)
  (minimum-distance . 7)
  (padding . 1)
  (stretchability . 5))

譜間のスペースを小さくする方法の 1 つは、basic-distance キーの値 (9) を minimum-distance キーの値 (7) 近くまで減らすことです。個々のキーを変更するには、ネストされた宣言 を使います:

 
% デフォルトの譜間スペース
\new PianoStaff <<
  \new Staff { \clef treble c''1 }
  \new Staff { \clef bass   c1   }
>>

% 譜間スペースを減らします
\new PianoStaff \with {
  % this is the nested declaration
  \override StaffGrouper.staff-staff-spacing.basic-distance = #7
} <<
  \new Staff { \clef treble c''1 }
  \new Staff { \clef bass   c1   }
>>

[image of music]

ネストされた宣言は、プロパティの他のキーに変更を加えることなく、指定されたキー (上の例では basic-distance) を更新します。

今度は、譜を重ならない範囲でできる限り近づけたいとします。最も簡単な方法は、連想配列の 4 つのキーすべてを 0 にセットすることです。しかしながら、4 つのネストされた宣言を記述する必要はありません。1 つの宣言でプロパティを丸ごと再定義することができます:

 
\new PianoStaff \with {
  \override StaffGrouper.staff-staff-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
} <<
  \new Staff { \clef treble c''1 }
  \new Staff { \clef bass   c1   }
>>

[image of music]

連想配列の再定義でリストアップされなかったキーは、セットされなかった場合のデフォルト値 にリセットされます。staff-staff-spacing の場合、セットされなかったキーは 0 にリセットされます (stretchability は例外で、セットされなかった場合、basic-distance にリセットされます)。このため、以下の 2 つの宣言は等価です:

 
\override StaffGrouper.staff-staff-spacing =
  #'((basic-distance . 7))

\override StaffGrouper.staff-staff-spacing =
  #'((basic-distance . 7)
     (minimum-distance . 0)
     (padding . 0)
     (stretchability . 7))

連想配列の再定義でリストアップされなかったキーがあることにより、初期化ファイルでセットされたり、入力ファイルがコンパイルされるときに読み込まれた標準設定が (意図せずに) 削除される可能性があります。上の例では、padding と minimum-distance の標準設定 (‘scm/define-grobs.scm’ で定義されます) は、セットされなかった場合のデフォルト値 (両方とも 0) にリセットされます。プロパティや (任意のサイズ) 連想配列を定義した場合、セットされなかったキー値はすべて セットされなかった場合のデフォルト値 にリセットされます。そうすることを意図しているのでない限り、ネストされた宣言を用いてキー値を個々に更新する方が安全です。

Note: ネストされた宣言は、コンテキスト プロパティ連想配列 (beamExceptions, keyAlterations, timeSignatureSettings 等) に対しては機能しません。これらのプロパティを変更するには、連想配列として丸ごと再定義するしかありません。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]

This document was generated by gub on 7 月 13, 2020 using texi2html 1.82.

他の言語: English, català, deutsch, español, français, italiano
About automatic language selection.