[ << スペースの問題 ] | [Top][Contents][Index] | [ デフォルトを変更する >> ] |
[ < 楽譜レイアウト ] | [ Up : 楽譜レイアウト ] | [ 譜サイズを設定する > ] |
4.2.1 \layout
ブロック
\paper
ブロックがドキュメント全体のページ フォーマットに関係する設定を保持する一方で、\layout
ブロックは楽譜特有のレイアウトに関する設定を保持します。楽譜レイアウト オプションを全体に設定するには、設定を最上位の \layout
ブロックに配置します。個々の楽譜に対してレイアウト オプションを設定するには、音楽表記の後の \score
ブロック内の \layout
ブロックの中に設定を配置します。\layout
ブロックに配置される設定には以下のものがあります:
-
layout-set-staff-size
Scheme 関数、 -
\context
ブロック内のコンテキスト変更、それに - 楽譜レイアウトに影響を与える
\paper
変数
layout-set-staff-size
関数は次のセクション 譜サイズを設定する
で説明します。コンテキスト変更は コンテキストのプラグインを変更する と
コンテキストのデフォルト設定を変更する で説明します。
\paper
ブロック内のデフォルト値が用いられ、\layout
ブロック内で使用できる \paper
には以下のものがあります:
-
line-width
,ragged-right
それにragged-last
(幅とマージンの\paper
変数 を参照してください) -
indent
とshort-indent
(シフトとインデントのための\paper
変数 を参照してください) -
system-count
(改行のための\paper
変数 を参照してください)
ここで、\layout
ブロックの例を挙げます:
\layout { indent = 2\cm \context { \StaffGroup \override StaffGrouper.staff-staff-spacing.basic-distance = #8 } \context { \Voice \override TextScript.padding = #1 \override Glissando.thickness = #3 } }
最上位の表記として複数の \layout
ブロックを配置することができます。これは、例えば、異なる設定が別個のファイルに保存されていて、任意の方法でインクルードする場合に有用です。内部的には、\layout
ブロックが評価される時、カレントの
\layout
構成のコピーが作成され、評価する \layout
ブロックの内部で定義されている変更が適用され、その結果が新しいカレントの構成として保存されます。ユーザからは \layout
ブロックが組み合わされたように見えますが、衝突が発生した場合 (複数のブロックで同じプロパティが変更された場合)、最後の定義が有効になります。
例えば、下記のブロック:
\layout { \context { \Voice \override TextScript.color = #magenta \override Glissando.thickness = #1.5 } }
これが一つ前の例の後に配置された場合、TextScript
の 'padding
設定と 'color
設定は組み合わせれますが、Glissando
の
'thickness
設定は前の設定と置き換わります (前の設定を上書きします)。
\layout
ブロックを後で再利用するために変数に代入することができます。しかしながら、この方法は \layout
ブロックを直接記述した場合とは少しですが重大な違いがあります。
変数を以下のように定義した場合:
layoutVariable = \layout { \context { \Voice \override NoteHead.font-size = #4 } }
カレントの \layout
構成に NoteHead.font-size
設定を追加しますが、この組み合わせは新しいカレントの構成として保存され ません。‘カレントの構成’ は変数が定義された時に評価されるのであり、変数が使われる時に評価されるのではありません。そのため、変数の効果は変数がソースに配置された位置によって異なります。
変数を他の \layout
ブロックの中で使うことができます。例えば、以下のように:
\layout { \layoutVariable \context { \Voice \override NoteHead.color = #red } }
上記のような変数を含む \layout
ブロックは、カレントの構成をコピーせず、設定を追加するためのベースとなる構成として \layoutVariable
の内容を用います。このことは、変数が定義されてから使われるまでの間に定義された変更は失われるということを意味します。
layoutVariable
が使われる (あるいは \include
される) 直前に定義されている場合、layoutVariable
の内容はカレントの構成に変数内部で定義した設定を加えたものになります。そのため、上で示した \layoutVariable
の使用例の場合、最終的な
\layout
ブロックの構成は以下のようになります:
TextScript.padding = #1 TextScript.color = #magenta Glissando.thickness = #1.5 NoteHead.font-size = #4 NoteHead.color = #red
これに indent
と StaffGrouper
の設定がプラスしたものです。
しかしながら、変数が最初の \layout
ブロックより前に定義されていた場合、カレントの構成は以下だけになってしまいます:
NoteHead.font-size= #4 % (変数定義で記述されたものです) NoteHead.color = #red % (変数が使用された後に追加されたものです)
注意深く計画を立てれば、\layout
変数はソースのレイアウト設計を構築して、\layout
構成を既知の状態にリセットするための有用なツールになります。
参照
記譜法リファレンス: コンテキストのデフォルト設定を変更する
コード断片集: Spacing
[ << スペースの問題 ] | [Top][Contents][Index] | [ デフォルトを変更する >> ] |
[ < 楽譜レイアウト ] | [ Up : 楽譜レイアウト ] | [ 譜サイズを設定する > ] |