]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/notation/spacing.itely
6d43db56153e078f986f4d5987c170e67df6ea7e
[lilypond.git] / Documentation / ja / notation / spacing.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2
3 @ignore
4     Translation of GIT committish: 0af52987f3694217fa81c29bd4fdc0443d2fac49
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.15.20"
12
13
14 @c Translators: Yoshiki Sawada
15 @c Translation status: post-GDP
16
17
18 @ignore
19 GDP TODO list
20
21 Negative numbers are allowed:
22 > Are you sure? The following works well
23 > \paper{
24 >   first-page-number = -2
25 > }
26 > and prints page number -1 on the second page, for example.
27
28
29 In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it
30 states:
31
32 "@code{layout-set-staff-size} does not change the distance between
33 the
34 staff lines."
35
36 Could we add a sentence:
37 "Use instead the pair               fontSize = #@var{N}
38             \override StaffSymbol #'staff-space = #(magstep
39 @var{N})
40 inside the Staff context to change the size of the font and the
41 distance between
42 staff lines accordingly."
43
44 Actually I found, that the @internalsref{StaffSymbol} at line 481
45 sends to an incomplete
46 documentation.  The property staff-space is not explained here.  I
47 thought Y-extent might be of
48 help, but it is in turn explained by x-space which again is
49 missing from the list.  Who has the
50 knowledge to fix this?
51
52
53 Clarify
54 http://code.google.com/p/lilypond/issues/detail?id=68
55
56 @end ignore
57
58
59 @node スペースの問題
60 @chapter スペースの問題
61 @translationof Spacing issues
62
63 紙面全体のレイアウトは 3 つの要素によって決定されます:
64 ページ レイアウト、改行、そしてスペースです。@c
65 これらはすべて互いに影響を与え合います。@c
66 スペース入れ方を選択することは音楽システムを@c
67 どれくらいの密度で譜刻するかを決定します。@c
68 これは改行をどこに挿入するかに影響を与え、@c
69 それゆえ最終的には、@c
70 楽曲が占めるページ数を決定します
71
72 大雑把に言って、@c
73 このプロセスには 4 つのステップがあります:
74 最初に、演奏時間に基づいて可変距離 (@q{スプリング}) が選択されます。@c
75 とり得る改行の組み合わせがすべて試され、@c
76 相対的に @q{悪い} 楽譜が算出されます。@c
77 それから、起こり得るシステムの高さが推定されます。
78 最後に、@c
79 水平方向と垂直方向のスペースが混み合いすぎたり、@c
80 広がりすぎたりしないように、@c
81 改ページと改行の組み合わせが選択されます。
82
83 2 タイプのブロックがレイアウト設定を保持できます:
84 @code{\paper @{@dots{}@}} と @code{\layout @{@dots{}@}} です。@c
85 @code{\paper} ブロックは book のすべての score で共通の@c
86 ページ レイアウト設定を保持します
87 -- ページの高さやページ番号を表示するか等です。@c
88 @ref{ページ レイアウト} を参照してください。@c
89 @code{\layout} ブロックは score のレイアウトを保持します
90 -- システム数や譜グループ間の間隔等です。@c
91 @ref{ページ レイアウト} を参照してください。@c
92
93 @menu
94 * ページ レイアウト::
95 * 楽譜レイアウト::
96 * 改行/改ページ::
97 * 垂直方向のスペース::
98 * 水平方向のスペース::
99 * 音楽を少ないページに収める::
100 @end menu
101
102 @node ページ レイアウト
103 @section ページ レイアウト
104 @translationof Page layout
105
106 このセクションでは @code{\paper} ブロックで使用するページ レイアウト
107 オプションについて説明します。
108
109 @menu
110 * \paper ブロック::
111 * 紙面サイズと自動拡縮::
112 * 固定された垂直方向の \paper スペース変数::
113 * 可変な垂直方向の \paper スペース変数::
114 * 水平方向の \paper スペース変数::
115 * 他の \paper 変数::
116 @end menu
117
118
119 @node \paper ブロック
120 @subsection @code{\paper} ブロック
121 @translationof The \paper block
122
123 @code{\paper} ブロックは、@code{\book} ブロック内に配置することができますが、@c
124 @code{\score} ブロック内に配置することはできません。@c
125 @code{\paper} ブロックでの設定は book 全体に適用されます。@c
126 book が複数の score を含む場合も、すべての score に適用されます。@c
127 @code{\paper} ブロックで可能な設定には以下のものがあります:
128
129 @itemize
130
131 @item
132 @code{set-paper-size} Scheme 関数
133
134 @item
135 ページ レイアウトをカスタマイズするのに用いられる @code{\paper} 変数
136
137 @item
138 ヘッダ、フッタ、それにタイトルのレイアウトを@c
139 カスタマイズするのに用いられるマークアップ定義
140
141 @end itemize
142
143 @code{set-paper-size} 関数は次のセクション
144 @ref{紙面サイズと自動拡縮}
145 で説明します。@c
146 ページ レイアウトを扱う @code{\paper} 変数は後のセクションで説明します。@c
147 ヘッダ、フッタ、それにタイトルを扱うマークアップ定義は
148 @ref{カスタム ヘッダ、フッタ、タイトル} で説明します。
149
150 たいていの @code{\paper} 変数は @code{\paper} ブロック内でのみ機能します。@c
151 @code{\layout} ブロック内でも機能するいくつかの @code{\paper} 変数を@c
152 @ref{\layout ブロック} でリスト アップしています。
153
154 ページの長さに関係する @code{\paper} 変数の単位は、@c
155 ユーザによって他の単位が指定されていなければ、@c
156 ミリメーターです。@c
157 例えば、以下の宣言は @code{top-margin} を @code{10mm} に設定します:
158
159 @example
160 \paper @{
161   top-margin = 10
162 @}
163 @end example
164
165 @code{top-margin} を @code{0.5} インチに設定するには、@c
166 単位接尾辞 @code{\in} を使用します:
167
168 @example
169 \paper @{
170   top-margin = 0.5\in
171 @}
172 @end example
173
174 利用可能な単位接尾辞は @code{\mm}, @code{\cm}, @code{\in},
175 それに @code{\pt} です。@c
176 これらの単位はミリメーターから変換するための値であり、@c
177 @file{ly/paper-defaults-init.ly} で定義されています。@c
178 技術的には必要はありませんが、明快さのために、@c
179 ミリメーターを用いる場合であっても @code{\mm} をコードに記述します。
180
181 Scheme を用いて @code{\paper} の値を定義することも可能です。@c
182 上の例と等価な Scheme は以下のようになります:
183
184 @example
185 \paper @{
186   #(define top-margin (* 0.5 in))
187 @}
188 @end example
189
190 @seealso
191 記譜法リファレンス:
192 @ref{紙面サイズと自動拡縮},
193 @ref{カスタム ヘッダ、フッタ、タイトル},
194 @ref{\layout ブロック}
195
196 インストールされているファイル:
197 @file{ly/paper-defaults-init.ly}
198
199
200 @node 紙面サイズと自動拡縮
201 @subsection 紙面サイズと自動拡縮
202 @translationof Paper size and automatic scaling
203
204 @cindex paper size (紙面サイズ)
205 @cindex page size (ページ サイズ)
206
207 @funindex \paper
208
209 @menu
210 * 紙面サイズを設定する::
211 * 紙面サイズに応じた自動拡縮::
212 @end menu
213
214
215 @node 紙面サイズを設定する
216 @unnumberedsubsubsec 紙面サイズを設定する
217 @translationof Setting paper size
218
219 紙面サイズを変更するために 2 つの関数が利用可能です:
220 @code{set-default-paper-size} と @code{set-paper-size} です。
221 @code{set-default-paper-size} は最上位スコープに配置する必要があり、@c
222 and @code{set-paper-size} は @code{\paper} ブロックの中に@c
223 配置する必要があります:
224
225 @example
226 #(set-default-paper-size "a4")
227 @end example
228
229 @example
230 \paper @{
231   #(set-paper-size "a4")
232 @}
233 @end example
234
235 @noindent
236 最上位スコープにおいて、@c
237 @code{set-default-paper-size} 関数はどこにあっても@c
238 最初の @code{\paper} ブロックより先に安全に呼び出されます。@c
239 @code{\paper} ブロック内において、@c
240 最も安全に @code{set-paper-size} を呼び出せる場所はブロックの先頭、@c
241 変数宣言の上です。@c
242 この理由は、@ref{紙面サイズに応じた自動拡縮} で説明しています。
243
244 @code{set-default-paper-size} はすべてのページのサイズをセットします。@c
245 一方、@code{set-paper-size} は、@c
246 その @code{\paper} ブロックが適用されたページのサイズのみをセットします。@c
247 例えば、@code{\paper} ブロックがファイルの先頭にある場合、@c
248 その紙面サイズはすべてのページに適用されます。@c
249 @code{\paper} ブロックが @code{\book} の中にある場合、@c
250 紙面サイズはその book にのみ適用されます。
251
252 @code{a4}, @code{letter}, @code{legal}, それに @code{11x17}
253 (タブロイド サイズとも呼ばれます)
254 などの一般的な紙面サイズを利用することができます。@c
255 さらに多くの紙面サイズがデフォルトでサポートされています。@c
256 詳細は @file{scm/paper.scm} を参照して、@c
257 @code{paper-alist} の定義を探してください。
258
259 @c TODO add a new appendix for paper sizes (auto-generated) -pm
260
261 @warning{デフォルトの紙面サイズは @code{a4} です。}
262
263 初期ファイル @file{scm/paper.scm} の中にある
264 @code{paper-alist} の定義を編集することにより、@c
265 紙面サイズを追加することができます。@c
266 しかしながら、追加した紙面サイズは、@c
267 その後のインストールにより上書きされてしまいます。
268
269 @cindex orientation (縦長の紙面)
270 @cindex landscape (横長の紙面)
271
272 @code{set-default-paper-size} への引数として@c
273 シンボル @code{'landscape} を渡すと、@c
274 ページは 90°回転し、それに応じてより長い行幅となります。
275
276 @example
277 #(set-default-paper-size "a6" 'landscape)
278 @end example
279
280 @seealso
281 記譜法リファレンス:
282 @ref{紙面サイズに応じた自動拡縮}
283
284 インストールされているファイル:
285 @file{scm/paper.scm}
286
287
288 @node 紙面サイズに応じた自動拡縮
289 @unnumberedsubsubsec 紙面サイズに応じた自動拡縮
290 @translationof Automatic scaling to paper size
291
292 Scheme 関数
293 (@code{set-default-paper-size} または @code{set-paper-size})
294 により紙面サイズが変更された場合、@c
295 いくつかの @code{\paper} 変数は自動的に新しいサイズに合わせて拡縮されます。@c
296 特定の変数の自動拡縮をスキップするには、@c
297 紙面サイズを設定した後にその変数を設定します。@c
298 @code{paper-height} 変数や @code{paper-width} 変数の変更では、@c
299 自動拡縮は起こらないということに注意してください。@c
300 しかしながら @code{paper-width} 変数の変更は他の値に影響を与えます
301 (これは拡縮とは別のことで、後で説明します)。
302 @code{set-default-paper-size} 関数と @code{set-paper-size} 関数は@c
303 @ref{紙面サイズを設定する} で説明します。
304
305 自動拡縮によって影響を受ける垂直方向の長さは
306 @code{top-margin} と @code{bottom-margin} です
307 (@ref{固定された垂直方向の \paper スペース変数} を参照してください)。@c
308 自動拡縮によって影響を受ける水平方向の長さは
309 @code{right-margin}, @code{inner-margin}, @code{outer-margin},
310 @code{binding-offset}, @code{indent}, それに @code{short-indent} です
311 (@ref{水平方向の \paper スペース変数} を参照してください)。
312
313 これらの長さに対するデフォルト値は
314 @code{top-margin-default}, @code{bottom-margin-default} 等の内部変数を@c
315 用いて @file{ly/paper-defaults-init.ly} で設定されています。@c
316 これらはデフォルトの紙面サイズ @code{a4} の場合の値です。@c
317 参考のために、@code{a4} 紙面での
318 @code{paper-height} は @code{297\mm} であり、@c
319 @code{paper-width} は @code{210\mm} です。
320
321 @seealso
322 記譜法リファレンス:
323 @ref{固定された垂直方向の \paper スペース変数},
324 @ref{水平方向の \paper スペース変数}
325
326 インストールされているファイル:
327 @file{ly/paper-defaults-init.ly},
328 @file{scm/paper.scm}
329
330
331 @node 固定された垂直方向の \paper スペース変数
332 @subsection 固定された垂直方向の @code{\paper} スペース変数
333 @translationof Fixed vertical spacing \paper variables
334
335 @warning{いくつかの @code{@bs{}paper} 変数は紙面サイズに応じて@c
336 自動的に拡縮され、結果として予期せぬ振る舞いを引き起こすことがあります。@c
337 @ref{紙面サイズに応じた自動拡縮} を参照してください。}
338
339 (拡縮する前の) デフォルト値は
340 @file{ly/paper-defaults-init.ly} で定義されています。
341
342 @table @code
343 @item paper-height
344 @funindex paper-height
345
346 ページの高さ -- デフォルトでは設定されていません。@c
347 これは垂直方向の長さの自動拡縮は影響を与えません。
348
349 @item top-margin
350 @funindex top-margin
351
352 ページの上端と印刷可能エリアの上端との間のマージン。@c
353 紙面サイズが変更されると、それに応じてこの長さのデフォルト値も拡縮されます。
354
355 @item bottom-margin
356 @funindex bottom-margin
357
358 印刷可能エリアの下端とページの下端との間のマージン。@c
359 紙面サイズが変更されると、それに応じてこの長さのデフォルト値も拡縮されます。
360
361 @item ragged-bottom
362 @funindex ragged-bottom
363
364 真に設定されている場合、システムはページ下端まで広がりません。@c
365 これは最後のページには影響しません。@c
366 ページに 2, 3 しかシステムを持たない楽曲 -- オーケストラ譜等 -- では、@c
367 この変数を真に設定すべきです。
368
369 @item ragged-last-bottom
370 @funindex ragged-last-bottom
371
372 偽に設定されている場合、最後のページでシステムはページ下端まで広がります。@c
373 2 ページ以上ある楽曲では、この変数を真に設定すべきです。@c
374 これは book パート
375 -- すなわち @code{\bookpart} ブロックによって作成された部分 --
376 の最後のページにも影響を与えます。
377
378 @end table
379
380 @seealso
381 記譜法リファレンス:
382 @ref{紙面サイズに応じた自動拡縮}
383
384 インストールされているファイル:
385 @file{ly/paper-defaults-init.ly}
386
387 コード断片集:
388 @rlsr{Spacing}
389
390 @knownissues
391
392 (@code{\header} ブロックによって作成された)
393 タイトルはシステムとして扱われます。@c
394 このため、@code{ragged-bottom} と @code{ragged-last-bottom} は@c
395 タイトルと score の最初のシステムとの間にスペースを追加します。
396
397
398 @node 可変な垂直方向の \paper スペース変数
399 @subsection 可変な垂直方向の @code{\paper} スペース変数
400 @translationof Flexible vertical spacing \paper variables
401
402 たいていの場合、ある要素間
403 (マージン、タイトル、システム、score 等の間)
404 の垂直方向の間隔は、状況に応じて伸びたり縮んだりするよう、@c
405 可変であることが好まれます。@c
406 いくつかの @code{\paper} 変数
407 (以下でリスト アップします) は、長さを微調整することができます。
408
409 このセクションで説明する @code{\paper} 変数は、@c
410 個々のシステム内にある譜のスペースを制御しないということに注意してください。@c
411 システム内のスペースは、@c
412 普通は @code{\score} ブロックや @code{\score} ブロックの中に配置される設定を@c
413 通じて、@c
414 グラフィカル オブジェクトのプロパティによって制御されます。@c
415 @ref{システム内部の可変な垂直方向のスペース} を参照してください。
416
417 @menu
418 * 可変な垂直方向スペース連想リストの構造::
419 * 可変な垂直方向の \paper スペース変数のリスト::
420 @end menu
421
422
423 @node 可変な垂直方向スペース連想リストの構造
424 @unnumberedsubsubsec 可変な垂直方向スペース連想リストの構造
425 @translationof Structure of flexible vertical spacing alists
426
427 可変な垂直方向の @code{\paper} スペース変数は、@c
428 それぞれが 4 つの @emph{キー} を保持する連想配列 (association list) です:
429
430 @itemize
431
432 @item
433 @code{basic-distance} -- 2 つの要素の @emph{参照ポイント} 間の@c
434 垂直方向の間隔。単位は譜スペースです。@c
435 衝突が生じない場合は、伸縮されません。@c
436 (タイトルまたは最上位の) マークアップの参照ポイントは最も上の箇所です。@c
437 システムの参照ポイントは、@c
438 譜線を持たない (@code{Lyrics} コンテキスト等) であっても、@c
439 最も近くにある @code{StaffSymbol} の垂直方向の中心です。@c
440 @code{basic-distance} の値が @code{padding} や @code{minimum-distance} よりも@c
441 小さいと無意味になります。@c
442 なぜなら、間隔が @code{padding} や @code{minimum-distance} よりも@c
443 小さくなることはないからです。
444 @code{minimum-distance} の値が @code{padding} よりも小さいと無意味になります。@c
445 なぜなら、間隔が @code{padding} よりも小さくなることはないからです。
446
447 @c TODO: explain skylines somewhere and xref to it from here.
448
449 @item
450 @code{padding} -- 2 つの要素間の境界ボックス (または輪郭) の間に必要な、@c
451 垂直方向の最小の間隔。単位は譜スペースです。@c
452
453 @item
454 @code{stretchability} -- 間隔の伸び率。@c
455 0 の場合、間隔は広がりません (衝突が生じない限りは)。@c
456 正の値の場合、ある間隔の @code{stretchability} 値は@c
457 他の間隔の @code{stretchability} との相対関係になります。@c
458 例えば、ある間隔の @code{stretchability} 値が@c
459 もう一つの間隔の @code{stretchability} の 2 倍である場合、@c
460 間隔の広がり方は 2 倍になります。@c
461 値は 0 以上の有限数でなければなりません。@c
462 @code{+inf.0} は @code{programming_error} を引き起こし、無視されます。@c
463 一方、@code{1.0e7} はほとんど無限の広がり方となります。@c
464 値が設定されなければ、デフォルト値が設定されます。@c
465 間隔の @emph{縮み} 率をユーザが直接設定することはできず、@c
466 (@code{basic-distance}@tie{}@minus{}@tie{}@code{minimum-distance})
467 であることに注意してください。
468
469 @end itemize
470
471 譜がページの下端まで広がらない設定の場合、間隔は以下の中の最大値となります:
472 largest of:
473
474 @itemize
475
476 @item
477 @code{basic-distance},
478
479 @item
480 @code{minimum-distance},
481
482 @item
483 @code{padding} + 衝突を回避するのに必要な最小の距離
484
485 @end itemize
486
487 配列リストを変更する方法は、@ref{Modifying alists} で説明します。@c
488 以下の例は、連想配列を変更する 2 つの方法を提示しています。@c
489 最初の宣言はキー値を個別に変更していて、2 つ目は変数全体を再定義しています:
490
491 @example
492 \paper @{
493   system-system-spacing #'basic-distance = #8
494   score-system-spacing =
495     #'((basic-distance . 12)
496        (minimum-distance . 6)
497        (padding . 1)
498        (stretchability . 12))
499 @}
500 @end example
501
502
503 @node 可変な垂直方向の \paper スペース変数のリスト
504 @unnumberedsubsubsec 可変な垂直方向の @code{\paper} スペース変数のリスト
505 @translationof List of flexible vertical spacing \paper variables
506
507 以下の変数の名前は @code{@var{upper}-@var{lower}-spacing} という形式で、@c
508 @code{@var{upper}} 要素と @code{@var{lower}} 要素との間隔です。@c
509 間隔の距離は 2 つの要素の参照ポイント間です
510 (上記の連想配列構造の説明を参照してください)。@c
511 変数名の中の @q{@code{markup}} は @emph{タイトル マークアップ}
512 (@code{bookTitleMarkup} や @code{scoreTitleMarkup}) と
513 @emph{最上位のマークアップ} (@ref{ファイル構造}) の両方を指します。@c
514 すべての間隔の距離の単位は譜スペースです。
515
516 デフォルト設定は @file{ly/paper-defaults-init.ly} で定義しています。
517
518 @c TODO: Where do headers/footers fit in? -mp
519
520 @table @code
521 @item markup-system-spacing
522 @funindex markup-system-spacing
523
524 (タイトルまたは最上位の) マークアップと、その後に続くシステムとの間隔。
525
526 @item score-markup-spacing
527 @funindex score-markup-spacing
528
529 score の最後のシステムと、その後に続く (タイトルまたは最上位の)
530 マークアップとの間隔
531
532 @item score-system-spacing
533 @funindex score-system-spacing
534
535 score の最後のシステムと、その後に score の最初のシステムとの間隔
536 -- score と score の間に (タイトルまたは最上位の) マークアップが無い場合。
537
538 @item system-system-spacing
539 @funindex system-system-spacing
540
541 同じ score の中にある 2 つのシステムの間隔。
542
543 @item markup-markup-spacing
544 @funindex markup-markup-spacing
545
546 2 つの (タイトルまたは最上位の) マークアップの間隔。
547
548 @item last-bottom-spacing
549 @funindex last-bottom-spacing
550
551 ページの最後のシステムまたは最上位のマークアップから、@c
552 印刷可能エリアの下端 (つまり、ボトム マージンの上端) までの距離。
553
554 @item top-system-spacing
555 @funindex top-system-spacing
556
557 印刷可能エリアの上端 (つまり、トップ マージンの下端) から、@c
558 ページの最初のシステムまでの距離
559 -- 間に (タイトルまたは最上位の) マークアップが無い場合。
560
561 @item top-markup-spacing
562 @funindex top-markup-spacing
563
564 印刷可能エリアの上端 (つまり、トップ マージンの下端) から、@c
565 ページの最初の (タイトルまたは最上位の) までの距離
566 -- 間にシステムが無い場合。
567 @end table
568
569 @seealso
570 記譜法リファレンス:
571 @ref{システム内部の可変な垂直方向のスペース}
572
573 インストールされているファイル:
574 @file{ly/paper-defaults-init.ly}
575
576 コード断片集:
577 @rlsr{Spacing}
578
579
580 @node 水平方向の \paper スペース変数
581 @subsection 水平方向の @code{\paper} スペース変数
582 @translationof Horizontal spacing \paper variables
583
584 @warning{いくつかの @code{@bs{}paper} の間隔は紙面サイズに応じて自動的に@c
585 拡縮され、それにより予期せぬ結果となることがあります。@c
586 @ref{紙面サイズに応じた自動拡縮} を参照してください。}
587
588 @menu
589 * 幅とマージンの \paper 変数::
590 * 両面モードのための \paper 変数::
591 * シフトとインデントのための \paper 変数::
592 @end menu
593
594
595 @node 幅とマージンの \paper 変数
596 @unnumberedsubsubsec 幅とマージンの @code{\paper} 変数
597 @translationof \paper variables for widths and margins
598
599 ここでリスト アップされていない (拡縮する前の) デフォルト値は、@c
600 @file{ly/paper-defaults-init.ly} で定義されています。
601
602 @table @code
603
604 @item paper-width
605 @funindex paper-width
606
607 ページの幅 - デフォルトでは、値は設定されていません。@c
608 @code{paper-width} は水平方向の自動拡縮に影響を与えませんが、@c
609 @code{line-width} 変数に影響を与えます。@c
610 @code{paper-width} と @code{line-width} の両方に値が設定された場合、@c
611 @code{left-margin} と @code{right-margin} が更新されます。@c
612 @code{check-consistency} も参照してください。
613
614 @item line-width
615 @funindex line-width
616
617 この変数に値が設定されていない場合、@c
618 インデントされず、ページ右端まで広がるシステムの譜線の水平方向の長さは、@c
619 @code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}
620 です。@c
621 @code{left-margin} と @code{right-margin} に値が設定されていなければ、@c
622 マージンは自動的に更新されて、@c
623 システムはページの中央に配置されます。
624 @code{check-consistency} も参照してください。@c
625 この変数は @code{\layout} ブロック内で設定される可能性もあります。
626
627 @item left-margin
628 @funindex left-margin
629
630 ページの左端とインデントされていないシステムの譜線開始点との間のマージンです。@c
631 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
632 @code{left-margin} に値が設定されず、@c
633 @code{line-width} と @code{right-margin} の両方に値が設定された場合、@c
634 @code{left-margin} は
635 @code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)}
636 に設定されます。@c
637 @code{line-width} だけに値が設定された場合、@c
638 左右のマージンは
639 @code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}
640 に設定され、@c
641 結果としてシステムはページの中央に配置されます。@c
642 @code{check-consistency} も参照してください。@c
643
644 @item right-margin
645 @funindex right-margin
646
647 ページの右端とページの右端まで広がる譜線終点との間のマージンです。@c
648 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
649 @code{right-margin} に値が設定されず、@c
650 @code{line-width} と @code{left-margin} の両方に値が設定された場合、@c
651 @code{right-margin} は
652 @code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)}
653 に設定されます。@c
654 @code{line-width} だけに値が設定された場合、@c
655 左右のマージンは
656 @code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}
657 に設定され、@c
658 結果としてシステムはページの中央に配置されます。@c
659 @code{check-consistency} も参照してください。@c
660
661 @item check-consistency
662 @funindex check-consistency
663
664 真にセットされた場合、@code{left-margin}, @code{line-width},
665 それに @code{right-margin} の和が @code{paper-width} にならなければ警告を@c
666 表示して、@c
667 @code{left-margin} と @code{right-margin} をデフォルト値に置き換え
668 (必要に応じて紙面サイズに合わせて拡宿し) ます。@c
669 偽にセットされた場合、不一致を無視して、@c
670 システムがページの左端からはみ出すことを許可します。
671
672 @item ragged-right
673 @funindex ragged-right
674
675 真にセットされた場合、システムは譜線の幅いっぱいまで広がらず、@c
676 本来の長さで終了します。@c
677 デフォルトでは、1 つだけシステムを持つ score の場合は @code{#t}、@c
678 複数のシステムを持つ score の場合は @code{#f} です。@c
679 この変数は @code{\layout} ブロック内でセットされる可能性もあります。
680
681 @item ragged-last
682 @funindex ragged-last
683
684 真にセットされた場合、score の最後のシステムは譜線の幅いっぱいまで広がらず、@c
685 本来の長さで終了します。@c
686 デフォルトでは @code{#f} です。@c
687 この変数は @code{\layout} ブロック内でセットされる可能性もあります。
688
689 @end table
690
691 @seealso
692 記譜法リファレンス:
693 @ref{紙面サイズに応じた自動拡縮}
694
695 インストールされているファイル:
696 @file{ly/paper-defaults-init.ly}
697
698
699 @node 両面モードのための \paper 変数
700 @unnumberedsubsubsec 両面モードのための @code{\paper} 変数
701 @translationof \paper variables for two-sided mode
702
703 (拡縮される前の) デフォルト値は
704 @file{ly/paper-defaults-init.ly} で定義されています。
705
706 @table @code
707
708 @item two-sided
709 @funindex two-sided
710
711 @cindex gutter
712 @cindex binding gutter
713
714 真にセットされた場合、@c
715 ページ番号が偶数か奇数かに応じて @code{inner-margin}, @code{outer-margin}
716 それに @code{binding-offset} を用いてマージンを決定します。@c
717 これは @code{left-margin} と @code{right-margin} を上書きします。
718
719 @item inner-margin
720 @funindex inner-margin
721
722 book の一部であるページすべてが見開きページの内側に持つマージンです。@c
723 (左ページの場合は右側のマージン、右ページの場合は左側のマージンです。)
724 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
725 @code{two-sided} が真にセットされてい場合にのみ、機能します。
726
727 @item outer-margin
728 @funindex outer-margin
729
730 book の一部であるページすべてが見開きページの外側に持つマージンです。@c
731 (左ページの場合は左側のマージン、右ページの場合は右側のマージンです。)
732 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
733 @code{two-sided} が真にセットされてい場合にのみ、機能します。
734
735 @item binding-offset
736 @funindex binding-offset
737
738 製本により何かが隠れてしまわないように
739 @code{inner-margin} を増加させる量です。@c
740 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
741 @code{two-sided} が真にセットされてい場合にのみ、機能します。
742
743 @end table
744
745 @seealso
746 記譜法リファレンス:
747 @ref{紙面サイズに応じた自動拡縮}
748
749 インストールされているファイル:
750 @file{ly/paper-defaults-init.ly}
751
752
753 @node シフトとインデントのための \paper 変数
754 @unnumberedsubsubsec シフトとインデントのための @code{\paper} 変数
755 @translationof \paper variables for shifts and indents
756
757 このにリスト アップされていない (拡縮される前の) デフォルト値は
758 @file{ly/paper-defaults-init.ly} で定義されています。
759
760 @table @code
761
762 @item horizontal-shift
763 @funindex horizontal-shift
764
765 @c This default value is buried in the middle of page.scm.  -mp
766
767 (タイトルとシステム セパレータを含む) すべてのシステムを@c
768 右にシフトさせる量です。@c
769 デフォルトでは @code{0.0\mm} です。
770
771 @item indent
772 @funindex indent
773
774 score の最初のシステムに対するインデントのレベルです。@c
775 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
776 この変数は @code{\layout} ブロック内でセットされる可能性もあります。
777
778 @item short-indent
779 @funindex short-indent
780
781 最初のシステムを除くすべてのシステムに対するインデントのレベルです。@c
782 紙面サイズが変更された場合、それに応じてこの変数のデフォルト値も拡縮されます。@c
783 この変数は @code{\layout} ブロック内でセットされる可能性もあります。
784
785 @end table
786
787 @seealso
788 記譜法リファレンス:
789 @ref{紙面サイズに応じた自動拡縮}
790
791 インストールされているファイル:
792 @file{ly/paper-defaults-init.ly}
793
794 コード断片集:
795 @rlsr{Spacing}
796
797
798 @node 他の \paper 変数
799 @subsection 他の @code{\paper} 変数
800 @translationof Other \paper variables
801
802 @menu
803 * 改行のための \paper 変数::
804 * 改ページのための \paper 変数::
805 * ページ番号のための \paper 変数::
806 * その他の \paper 変数::
807 @end menu
808
809
810 @node 改行のための \paper 変数
811 @unnumberedsubsubsec 改行のための @code{\paper} 変数
812 @translationof \paper variables for line breaking
813
814 @c TODO: Mention that ly:optimal-breaking is on by default? -mp
815
816 @table @code
817
818 @item max-systems-per-page
819 @funindex max-systems-per-page
820
821 1 ページに配置されるシステムの最大数です。@c
822 現在、これは @code{ly:optimal-breaking} アルゴリズムでのみサポートされます。@c
823 デフォルトでは、値は設定されていません。
824
825 @item min-systems-per-page
826 @funindex min-systems-per-page
827
828 1 ページに配置されるシステムの最小数です。@c
829 この値が大きすぎると、システムがページからはみ出す可能性があります。@c
830 現在、これは @code{ly:optimal-breaking} アルゴリズムでのみサポートされます。@c
831 デフォルトでは、値は設定されていません。
832
833 @item systems-per-page
834 @funindex systems-per-page
835
836 各ページに配置すべきシステム数です。@c
837 現在、これは @code{ly:optimal-breaking} アルゴリズムでのみサポートされます。@c
838 デフォルトでは、値は設定されていません。
839
840 @item system-count
841 @funindex system-count
842
843 score で使用すべきシステム数です。@c
844 デフォルトでは、値は設定されていません。@c
845 この変数は @code{\layout} ブロック内でセットされる可能性もあります。
846
847 @end table
848
849 @seealso
850 記譜法リファレンス:
851 @ref{改行}
852
853
854 @node 改ページのための \paper 変数
855 @unnumberedsubsubsec 改ページのための @code{\paper} 変数
856 @translationof \paper variables for page breaking
857
858 ここでリスト アップされていないデフォルト値は
859 @file{ly/paper-defaults-init.ly} で定義されています。
860
861 @table @code
862
863 @item blank-after-score-page-force
864 @funindex blank-after-score-page-force
865
866 @c 未訳
867 The penalty for having a blank page after the end of one score and
868 before the next.  By default, this is smaller than
869 @code{blank-page-force}, so that we prefer blank pages after
870 scores to blank pages within a score.
871
872 @item blank-last-page-force
873 @funindex blank-last-page-force
874
875 @c 未訳
876 The penalty for ending the score on an odd-numbered page.
877
878 @item blank-page-force
879 @funindex blank-page-force
880
881 @c 未訳
882 The penalty for having a blank page in the middle of a
883 score.  This is not used by @code{ly:optimal-breaking} since it will
884 never consider blank pages in the middle of a score.
885
886 @item page-breaking
887 @funindex page-breaking
888
889 @c 未訳
890 The page-breaking algorithm to use.  Choices are
891 @code{ly:minimal-breaking}, @code{ly:page-turn-breaking}, and
892 @code{ly:optimal-breaking}.
893
894 @item page-breaking-system-system-spacing
895 @funindex page-breaking-system-system-spacing
896
897 @c 未訳
898 Tricks the page breaker into thinking that
899 @code{system-system-spacing} is set to something different than
900 it really is.  For example, if
901 @code{page-breaking-system-system-spacing #'padding} is set to something
902 substantially larger than @code{system-system-spacing #'padding}, then the
903 page-breaker will put fewer systems on each page.  Default: unset.
904
905 @item page-count
906 @funindex page-count
907
908 score で使用すべきページ数です。@c
909 デフォルトでは、値は設定されていません。
910
911 @end table
912
913 @seealso
914 記譜法リファレンス:
915 @ref{改ページ},
916 @ref{最適改ページ},
917 @ref{最適ページめくり},
918 @ref{最小改ページ}
919
920 インストールされているファイル:
921 @file{ly/paper-defaults-init.ly}
922
923
924 @node ページ番号のための \paper 変数
925 @unnumberedsubsubsec ページ番号のための @code{\paper} 変数
926 @translationof \paper variables for page numbering
927
928 ここでリスト アップされていないデフォルト値は
929 @file{ly/paper-defaults-init.ly} で定義されています。
930
931 @table @code
932
933 @cindex page numbers, auto-numbering (ページ番号を自動付番する)
934 @item auto-first-page-number
935 @funindex auto-first-page-number
936
937 @c 未訳
938 The page breaking algorithm is affected by the first page number
939 being odd or even.  If set to true, the page breaking algorithm
940 will decide whether to start with an odd or even number.  This
941 will result in the first page number remaining as is or being
942 increased by one.  Default: @code{#f}.
943
944 @cindex page numbers, specify the first (最初のページ番号を指定する)
945 @item first-page-number
946 @funindex first-page-number
947
948 最初のページのページ番号の値です。
949
950 @item print-first-page-number
951 @funindex print-first-page-number
952
953 真にセットされた場合、最初のページにページ番号が譜刻されます。
954
955 @cindex page numbers, suppress (ページ番号を抑制する)
956 @item print-page-number
957 @funindex print-page-number
958
959 偽にセットされた場合、ページ番号は譜刻されません。
960
961 @end table
962
963 @seealso
964 インストールされているファイル:
965 @file{ly/paper-defaults-init.ly}
966
967 @knownissues
968 奇数のページ番号は常に右側に配置されます。@c
969 楽譜をページ 1 から始めたいのであれば、@c
970 カバー ページの裏にブランク ページ配置して、@c
971 ページ 1 が右側にくるようにする必要があります。
972
973
974 @node その他の \paper 変数
975 @unnumberedsubsubsec その他の @code{\paper} 変数
976 @translationof Miscellaneous \paper variables
977
978 @table @code
979
980 @item page-spacing-weight
981 @funindex page-spacing-weight
982
983 (垂直方向の) ページ スペースと (水平方向の) 行スペースの重要度の関係です。@c
984 大きな値だと、ページ スペースがより重要になります。@c
985 デフォルトでは、@code{#10} です。
986
987 @item print-all-headers
988 @funindex print-all-headers
989
990 真にセットされている場合、@c
991 出力の各 @code{\score} のすべてのヘッダを譜刻します。@c
992 通常、@code{piece} ヘッダ変数と @code{opus} ヘッダ変数だけが譜刻されます。@c
993 デフォルトでは、@code{#f} です。
994
995 @item system-separator-markup
996 @funindex system-separator-markup
997
998 しばしばオーケストラ譜で使用される、@c
999 システム間に挿入されるマークアップ オブジェクトです。@c
1000 デフォルトでは、設定されていません。@c
1001 以下の例のように、@c
1002 @file{ly/titling-init.ly} で定義されている @code{\slashSeparator} マークアップ@c
1003 を使用すると適当です:
1004
1005 @lilypond[quote,verbatim,noragged-right,line-width=30\mm]
1006 #(set-default-paper-size "a8")
1007
1008 \book {
1009   \paper {
1010     system-separator-markup = \slashSeparator
1011   }
1012   \header {
1013     tagline = ##f
1014   }
1015   \score {
1016     \relative c'' { c1 \break c1 \break c1 }
1017   }
1018 }
1019 @end lilypond
1020
1021 @end table
1022
1023
1024 @seealso
1025 インストールされているファイル:
1026 @file{ly/titling-init.ly}
1027
1028 コード断片集:
1029 @rlsr{Spacing}
1030
1031
1032 @knownissues
1033
1034
1035 デフォルトのページ ヘッダは、@c
1036 ページ番号と @code{\header} ブロックの @code{instrument} フィールドを@c
1037 同一の行に配置します。
1038
1039
1040 @node 楽譜レイアウト
1041 @section 楽譜レイアウト
1042 @translationof Score layout
1043
1044 このセクションでは、@code{\layout} ブロックで使用する@c
1045 楽譜レイアウト オプションについて説明します。
1046
1047 @menu
1048 * \layout ブロック::
1049 * 譜サイズを設定する::
1050 @end menu
1051
1052
1053 @node \layout ブロック
1054 @subsection @code{\layout} ブロック
1055 @translationof The \layout block
1056
1057 @funindex \layout
1058
1059 @code{\paper} ブロックがドキュメント全体のページ フォーマットに関係する@c
1060 設定を保持する一方で、@c
1061 @code{\layout} ブロックは楽譜特有のレイアウトに関する設定を保持します。@c
1062 楽譜レイアウト オプションを全体に設定するには、@c
1063 設定を最上位の @code{\layout} ブロックに配置します。@c
1064 個々の楽譜に対してレイアウト オプションを設定するには、@c
1065 音楽表記の後の @code{\score} ブロック内の @code{\layout} ブロックの中に@c
1066 設定を配置します。@c
1067 @code{\layout} ブロックに配置される設定には以下のものがあります:
1068
1069 @itemize
1070 @item @code{layout-set-staff-size} Scheme 関数、
1071 @item @code{\context} ブロック内のコンテキスト変更、それに
1072 @item 楽譜レイアウトに影響を与える @code{\paper} 変数
1073 @end itemize
1074
1075 @code{layout-set-staff-size} 関数は次のセクション @ref{譜サイズを設定する}
1076 で説明します。@c
1077 コンテキスト変更は @ref{Modifying context plug-ins} と
1078 @ref{Changing context default settings} で説明します。@c
1079 @code{\layout} ブロック内で使用される @code{\paper} には以下のものがあります:
1080
1081 @itemize
1082
1083 @item
1084 @code{line-width}, @code{ragged-right} それに @code{ragged-last}
1085 (@ref{幅とマージンの \paper 変数} を参照してください)
1086
1087 @item
1088 @code{indent} と @code{short-indent}
1089 (@ref{シフトとインデントのための \paper 変数} を参照してください)
1090
1091 @item
1092 @code{system-count}
1093 (@ref{改行のための \paper 変数} を参照してください)
1094
1095 @end itemize
1096
1097 ここで、@code{\layout} ブロックの例を挙げます:
1098
1099 @example
1100 \layout @{
1101   indent = 2\cm
1102   \context @{
1103     \StaffGroup
1104     \override StaffGrouper #'staff-staff-spacing #'basic-distance = #8
1105   @}
1106   \context @{
1107     \Voice
1108     \override TextScript #'padding = #1
1109     \override Glissando #'thickness = #3
1110   @}
1111 @}
1112 @end example
1113
1114
1115 @seealso
1116 記譜法リファレンス:
1117 @ref{Changing context default settings}
1118
1119 コード断片集:
1120 @rlsr{Spacing}
1121
1122
1123 @node 譜サイズを設定する
1124 @subsection 譜サイズを設定する
1125 @translationof Setting the staff size
1126
1127 @cindex font size, setting (フォント サイズを設定する)
1128 @cindex staff size, setting (譜サイズを設定する)
1129 @funindex layout file
1130
1131 デフォルトの @strong{譜サイズ} は 20 ポイントに設定されています。@c
1132 これを変更するには 2 つの方法があります:
1133
1134 譜サイズをファイルの中にあるすべての楽譜
1135 (正確には @code{book} ブロックの中にあるすべての楽譜)
1136 に設定するには、@c
1137 @code{set-global-staff-size} を使用します。
1138
1139 @example
1140 #(set-global-staff-size 14)
1141 @end example
1142
1143 @noindent
1144 これはグローバルなデフォルトの譜サイズを高さが 14pt になるよう設定し、@c
1145 それに応じてすべてのフォントを拡縮します。
1146
1147 それぞれの楽譜に個別に譜サイズを設定するには、@c
1148 以下のようにします:
1149 @example
1150 \score@{
1151   @dots{}
1152   \layout @{
1153     #(layout-set-staff-size 15)
1154   @}
1155 @}
1156 @end example
1157
1158 Feta フォントは 8 つのサイズの音楽シンボルを提供します。
1159 各フォントは譜サイズに合わせて調整されます:
1160 小さなサイズになるにつれて、@c
1161 相対的に太くなる譜線に対して釣り合いをとるために、@c
1162 太くなります。@c
1163 推奨されるフォント サイズを以下の表にリストアップします:
1164
1165 @quotation
1166 @multitable @columnfractions .15 .2 .22 .2
1167
1168 @item @b{フォント名}
1169 @tab @b{譜の高さ (pt)}
1170 @tab @b{譜の高さ (mm)}
1171 @tab @b{用途}
1172
1173 @item feta11
1174 @tab 11.22
1175 @tab 3.9
1176 @tab ポケット サイズの楽譜
1177
1178 @item feta13
1179 @tab 12.60
1180 @tab 4.4
1181 @tab
1182
1183 @item feta14
1184 @tab 14.14
1185 @tab 5.0
1186 @tab
1187
1188 @item feta16
1189 @tab 15.87
1190 @tab 5.6
1191 @tab
1192
1193 @item feta18
1194 @tab 17.82
1195 @tab 6.3
1196 @tab 歌集
1197
1198 @item feta20
1199 @tab 20
1200 @tab 7.0
1201 @tab 標準パート譜
1202
1203 @item feta23
1204 @tab 22.45
1205 @tab 7.9
1206 @tab
1207
1208 @item feta26
1209 @tab 25.2
1210 @tab 8.9
1211 @tab
1212 @c modern レンタルの資料?
1213
1214 @end multitable
1215 @end quotation
1216
1217 これらのフォントは任意のサイズで利用可能です。@c
1218 コンテキスト プロパティ @code{fontSize} と@c
1219 レイアウト プロパティ @code{staff-space}
1220 (@rinternals{StaffSymbol} の中にあります)
1221 を使用することで、@c
1222 個々の譜に対してサイズを調整することができます。@c
1223 個々の譜のサイズはグローバル サイズとの相対値です。
1224
1225
1226 @seealso
1227 記譜法リファレンス:
1228 @ref{記譜フォント サイズを選択する}
1229
1230 コード断片集:
1231 @rlsr{Spacing}
1232
1233
1234 @knownissues
1235
1236 @code{layout-set-staff-size} は譜線の間隔を変更しません。
1237
1238
1239 @node 改行/改ページ
1240 @section 改行/改ページ
1241 @translationof Breaks
1242
1243 @menu
1244 * 改行::
1245 * 改ページ::
1246 * 最適改ページ::
1247 * 最適ページめくり::
1248 * 最小改ページ::
1249 * 明示的な改行/改ページ::
1250 * 改行/改ページのために追加のボイスを使用する::
1251 @end menu
1252
1253 @node 改行
1254 @subsection 改行
1255 @translationof Line breaking
1256
1257 @cindex line breaks (改行)
1258 @cindex breaking lines (改行する)
1259
1260 通常、改行は自動的に決定されます。@c
1261 改行は、行が混み合って見えたり散漫に見えたりしないように、@c
1262 連続する行の密度が同じくらいになるように選択されます。
1263
1264 小節線が引かれる場所で手動で強制的に改行を入れるには、@c
1265 @code{\break} コマンドを使用します:
1266
1267 @lilypond[quote,ragged-right,relative=2,verbatim]
1268 c4 c c c | \break
1269 c4 c c c |
1270 @end lilypond
1271
1272 デフォルトでは、小節の途中での @code{\break} は無視され、@c
1273 警告が表示されます。@c
1274 小節の途中で強制的に改行を入れるには、@c
1275 @w{@samp{\bar ""}} を用いて不可視の小節線を追加します:
1276
1277 @lilypond[quote,ragged-right,relative=2,verbatim]
1278 c4 c c
1279 \bar "" \break
1280 c |
1281 c4 c c c |
1282 @end lilypond
1283
1284 連符が開始する小節と終了する小節が異なる場合などのように、@c
1285 前の小節が音符の途中で終わっている場合、@c
1286 前の小節の終わりに @code{\break} を配置しても無視されます。@c
1287 そのような状況で、@code{\break} コマンドを機能させるには、@c
1288 @code{Voisce} コンテキストから @code{Forbid_line_break_engraver} を@c
1289 削除します。@c
1290 音符の途中で強制的に改行を入れるには、@c
1291 音楽と並列に改行コマンドを追加する必要があるということに注意してください:
1292
1293 @lilypond[quote,ragged-right,verbatim]
1294 \new Voice \with {
1295   \remove Forbid_line_break_engraver
1296 } \relative c'' {
1297   <<
1298     { c2. \times 2/3 { c4 c c } c2. | }
1299     { s1 | \break s1 | }
1300   >>
1301 }
1302 @end lilypond
1303
1304 同様に、通常は連桁が小節線を跨いでいる場合も、改行は禁止されます。@c
1305 この振る舞いは、@code{\override Beam #'breakable = ##t} により、@c
1306 変更することができます:
1307
1308 @lilypond[quote,ragged-right,relative=2,verbatim]
1309 \override Beam #'breakable = ##t
1310 c2. c8[ c | \break
1311 c8 c] c2. |
1312 @end lilypond
1313
1314 @code{\noBreak} コマンドは、コマンドが配置された小節線での改行を禁止します。
1315
1316 行スペースに影響を与える最も基本的な設定は @code{indent} と
1317 @code{line-width} です。@c
1318 これらは @code{\layout} ブロック内で設定されます。@c
1319 これらは音楽の最初の行のインデントと行の長さを制御します。
1320
1321 @code{\layout} ブロック内で @code{ragged-right} が真にセットされた場合、@c
1322 システムは、行全体に広がらずに、本来の長さで終了します。@c
1323 これは短い楽譜の断片を記譜する場合や、@c
1324 本来のスペースがどれくらい密になっているかチェックする場合に有用です。
1325
1326 @c TODO Check and add para on default for ragged-right
1327
1328 オプション @code{ragged-last} は @code{ragged-right} と似ていますが、@c
1329 楽曲の最後の行にだけ効果を持ちます。
1330
1331 @example
1332 \layout @{
1333   indent = 0\mm
1334   line-width = 150\mm
1335   ragged-last = ##t
1336 @}
1337 @end example
1338
1339
1340
1341 @cindex regular line breaks (規則的な改行)
1342 @cindex four bar music (4 小節楽譜)
1343
1344 規則的な間隔で改行を行うには、@c
1345
1346 スキップで区切られた @code{\break} を用いて、@c
1347 それを @code{\repeat} で繰り返します。@c
1348 例えば、@c
1349 以下の例は 28 小節 (4/4 拍子と仮定して) であり、@c
1350 4 小節ごとに改行が入ります
1351 (それ以外の場所で改行が入ることはありません):
1352
1353 @example
1354 <<
1355   \repeat unfold 7 @{
1356     s1 \noBreak s1 \noBreak
1357     s1 \noBreak s1 \break
1358   @}
1359   @{ @var{実際の音楽@dots{}} @}
1360 >>
1361 @end example
1362
1363 @c TODO Check this
1364 改行設定を自動的に @file{.ly} ファイルに保存することができます。@c
1365 これにより、@c
1366 2 回目のフォーマット実行時に垂直方向のスペースがページにフィットするよう@c
1367 引き伸ばされます。@c
1368 この機能は本当に新しく、複雑です。@c
1369 詳細は @rlsr{Spacing} を参照してください。
1370
1371
1372 @predefined
1373 @funindex \break
1374 @code{\break},
1375 @funindex \noBreak
1376 @code{\noBreak}
1377 @endpredefined
1378
1379 @seealso
1380 記譜法リファレンス:
1381 @ref{改行のための \paper 変数}
1382
1383 コード断片集:
1384 @rlsr{Spacing}
1385
1386 内部リファレンス:
1387 @rinternals{LineBreakEvent}
1388
1389
1390 @node 改ページ
1391 @subsection 改ページ
1392 @translationof Page breaking
1393
1394 デフォルトの改ページは、@c
1395 @code{\pageBreak} や @code{\noPageBreak} を挿入することによって@c
1396 上書きすることができます。@c
1397 これらのコマンドは @code{\break} と @code{\noBreak} に似ています。
1398 これらのコマンドは小節線のところに挿入すべきであり、@c
1399 改ページを強制/禁止します。@c
1400 当然のことですが、@c
1401 @code{\pageBreak} は強制的に改行も行います。
1402
1403 @code{\pageBreak} コマンドと @code{\noPageBreak} コマンドは@c
1404 最上位レベルに挿入することができ、@c
1405 score や最上位レベルのマークアップの間に挿入することができます。
1406
1407 @code{ragged-right} や @code{ragged-last} と類似で、@c
1408 垂直方向のスペースに対して同じ効果を持つ設定があります:
1409 @code{ragged-bottom} と @code{ragged-last-bottom} です。@c
1410 これらの設定が @code{##t} にセットされている場合、@c
1411 すべてのページあるいは最後のページのシステムは@c
1412 ページの垂直方向全体には広がりません。@c
1413 @ref{固定された垂直方向の \paper スペース変数} を参照してください。
1414
1415 改ページは @code{page-breaking} 関数によって算出されます。@c
1416 LilyPond は改ページを算出するために 3 つのアルゴリズムを提供します:
1417 @code{ly:optimal-breaking}, @code{ly:page-turn-breaking}, それに
1418 @code{ly:minimal-breaking} です。@c
1419 デフォルトは @code{ly:optimal-breaking} ですが、@c
1420 @code{\paper} ブロックの中で変更することができます:
1421
1422 @example
1423 \paper @{
1424   page-breaking = #ly:page-turn-breaking
1425 @}
1426 @end example
1427
1428 @funindex \bookpart
1429
1430 1 つのブックが多くの楽譜とページを持つ場合、@c
1431 改ページを処理するのに多くの処理時間とメモリが必要になり、@c
1432 改ページの問題を解決することが困難になる可能性があります。@c
1433 改ページ処理を簡単にするために、@c
1434 @code{\bookpart} ブロックを用いてブックをいくつかのパートに分割します:
1435 改ページはパートごとに別々に処理されます。@c
1436 異なるブック パートには、@c
1437 異なる改ページ関数を使用することもできます。
1438
1439 @example
1440 \bookpart @{
1441   \header @{
1442     subtitle = "Preface"
1443   @}
1444   \paper @{
1445      %% ほとんどテキストしか保持していないパートでは
1446      %% ly:minimal-breaking が適しています
1447      page-breaking = #ly:minimal-breaking
1448   @}
1449   \markup @{ @dots{} @}
1450   @dots{}
1451 @}
1452 \bookpart @{
1453   %% このパートは音楽を保持しているので、デフォルトの
1454   %% ly:optimal-breaking を使用します
1455   \header @{
1456     subtitle = "First movement"
1457   @}
1458   \score @{ @dots{} @}
1459   @dots{}
1460 @}
1461 @end example
1462
1463
1464 @predefined
1465 @funindex \pageBreak
1466 @code{\pageBreak},
1467 @funindex \noPageBreak
1468 @code{\noPageBreak}
1469 @endpredefined
1470
1471
1472 @seealso
1473 記譜法リファレンス:
1474 @ref{改行のための \paper 変数}
1475
1476 コード断片集:
1477 @rlsr{Spacing}
1478
1479
1480 @node 最適改ページ
1481 @subsection 最適改ページ
1482 @translationof Optimal page breaking
1483
1484 @funindex ly:optimal-breaking
1485
1486 @code{ly:optimal-breaking} 関数は、@c
1487 LilyPond が改ページを決定するためのデフォルトの手法です。
1488 この関数は、@c
1489 ページの (水平方向と垂直方向の両方の) 混み合いや広がりすぎを@c
1490 最小にする改ページを見つけ出そうと試みます。@c
1491 @code{ly:page-turn-breaking} とは異なり、@c
1492 この関数はページめくりについて考慮しません。
1493
1494 @seealso
1495 コード断片集:
1496 @rlsr{Spacing}
1497
1498
1499 @node 最適ページめくり
1500 @subsection 最適ページめくり
1501 @translationof Optimal page turning
1502
1503 @funindex ly:page-turn-breaking
1504
1505 しばしば、@c
1506 2 枚目のページ (横書きの本を開いたときの右側のページ) の終わりに@c
1507 休符を置くための改ページ構成が必要になります。@c
1508 こうすることで、@c
1509 演奏者は音符を見失うことなくページをめくることができます。@c
1510 @code{ly:page-turn-breaking} 関数は@c
1511 ページの混み合いや広がりすぎを最小にする改ページを見つけ出そうと試みますが、@c
1512 ページめくりを特定の場所だけに置くための制約を受けます。
1513
1514 この改ページ関数を使うには、2 つのステップがあります。@c
1515 最初に、@ref{改ページ} で説明されているように、@c
1516 @code{\paper} ブロックの中でこの関数を有効にする必要があります。@c
1517 次に、この関数に改ページを許可したい場所を教える必要があります。
1518
1519 2 番目のステップを達成するには、2 つの方法があります。@c
1520 1 つ目の方法では、@c
1521 入力ファイルの適当な場所に @code{\allowPageTurn} を挿入することによって、@c
1522 潜在的なページめくりを手動で指定します。
1523
1524 この方法では手間がかかりすぎる場合は、@c
1525 @code{Page_turn_engraver} を
1526 @code{Staff} あるいは @code{Voice} コンテキストに追加します。@c
1527 @code{Page_turn_engraver} はコンテキストをスキャンして@c
1528 音符の無いセクションを探します
1529 (休符を探すわけではなく、音符の無い部分を探すということに注意してください。@c
1530 単一譜の多声で、ボイスの 1 つが休符を持つ場合に、@c
1531 @code{Page_turn_engraver} に渡されないようにするためです。)
1532 @code{Page_turn_engraver} は音符を持たない十分に長いセクションを見つけると、@c
1533 @q{特殊な} 小節線 (2 重小節線など) がないかぎりは、@c
1534 そのセクションの最後の小節線のところに @code{\allowPageTurn} を挿入します。
1535
1536 @funindex minimumPageTurnLength
1537
1538 @code{Page_turn_engraver} は@c
1539 コンテキスト プロパティ @code{minimumPageTurnLength} を読み込んで、@c
1540 どれくらい音符が無いセクションが続いたらページめくりを考慮するかを決定します。@c
1541 @code{minimumPageTurnLength} のデフォルト値は
1542 @code{#(ly:make-moment 1 1)} です。@c
1543 ページめくりを不可にしたいのならば、@c
1544 @code{minimumPageTurnLength} に非常に大きな値をセットします。
1545
1546 @example
1547 \new Staff \with @{ \consists "Page_turn_engraver" @}
1548 @{
1549   a4 b c d |
1550   R1 | % ここでページめくりが許可されます
1551   a4 b c d |
1552   \set Staff.minimumPageTurnLength = #(ly:make-moment 5 2)
1553   R1 | % ここではページめくりは許可されません
1554   a4 b r2 |
1555   R1*2 | % ここでページめくりが許可されます
1556   a1
1557 @}
1558 @end example
1559
1560 @funindex minimumRepeatLengthForPageTurn
1561
1562 @code{Page_turn_engraver} は volta 繰り返しを検出します。@c
1563 繰り返しの開始と終わりにページめくりを行うのに十分な時間がある場合にのみ、@c
1564 その繰り返しの最中でのページめくりが許可されます。@c
1565 繰り返しが非常に短い場合、@c
1566 @code{Page_turn_engraver} はページめくりを不可にする可能性があります。@c
1567 コンテキスト プロパティ @code{minimumRepeatLengthForPageTurn} に値を@c
1568 設定した場合、@c
1569 その値よりも長い演奏時間を持つ繰り返しに対してのみ、@c
1570 @code{Page_turn_engraver} は繰り返しの最中でページめくりを許可します。
1571
1572 ページめくりコマンド @code{\pageTurn}, @code{\noPageTurn}
1573 それに @code{\allowPageTurn} は、@c
1574 最上位レベル、score や最上位のマークアップの間で使用される可能性もあります。
1575
1576
1577 @predefined
1578 @funindex \pageTurn
1579 @code{\pageTurn},
1580 @funindex \noPageTurn
1581 @code{\noPageTurn},
1582 @funindex \allowPageTurn
1583 @code{\allowPageTurn}
1584 @endpredefined
1585
1586
1587 @seealso
1588 コード断片集:
1589 @rlsr{Spacing}
1590
1591
1592 @knownissues
1593
1594 score の中に配置する @code{Page_turn_engraver} は 1 つだけにするべきです。@c
1595 複数の @code{Page_turn_engraver} がある場合、@c
1596 互いに干渉し合います。
1597
1598
1599 @node 最小改ページ
1600 @subsection 最小改ページ
1601 @translationof Minimal page breaking
1602
1603 @funindex ly:minimal-breaking
1604
1605 The @code{ly:minimal-breaking} 関数は最小限の改ページを算出します:
1606 この関数は 1 ページに可能な限り多くのシステムを配置します。@c
1607 そのため、多くのページを持つ楽譜
1608 -- そのような場合、他の改ページ関数では時間がかかりすぎたり、@c
1609 メモリ使用量が多くなりすぎたりします --
1610 や、多くのテキストを持つ楽譜でこの関数を使用すると良いかもしれません。@c
1611 この関数を有効にするには以下のようにします:
1612
1613 @example
1614 \paper @{
1615   page-breaking = #ly:minimal-breaking
1616 @}
1617 @end example
1618
1619
1620 @seealso
1621 コード断片集:
1622 @rlsr{Spacing}
1623
1624
1625 @node 明示的な改行/改ページ
1626 @subsection 明示的な改行/改ページ
1627 @translationof Explicit breaks
1628
1629 LilyPond はしばしば明示的な @code{\break} や @code{\pageBreak} を@c
1630 却下します。@c
1631 この振る舞いを上書きするための 2 つのコマンドがあります:
1632
1633 @example
1634 \override NonMusicalPaperColumn #'line-break-permission = ##f
1635 \override NonMusicalPaperColumn #'page-break-permission = ##f
1636 @end example
1637
1638 @code{line-break-permission} が偽に上書きされた場合、@c
1639 LilyPond は明示的な改行である @code{\break} コマンドのところで改行を行い、@c
1640 他の場所では改行を行いません。@c
1641 @code{page-break-permission} が偽に上書きされた場合、@c
1642 LilyPond は明示的な改ページである
1643 @code{\pageBreak} コマンドのところで改ページを行い、@c
1644 他の場所では改ページを行いません。
1645
1646 @lilypond[quote,verbatim]
1647 \paper {
1648   indent = #0
1649   ragged-right = ##t
1650   ragged-bottom = ##t
1651 }
1652
1653 music = \relative c'' { c8 c c c }
1654
1655 \score {
1656   \new Staff {
1657     \repeat unfold 2 { \music } \break
1658     \repeat unfold 4 { \music } \break
1659     \repeat unfold 6 { \music } \break
1660     \repeat unfold 8 { \music } \pageBreak
1661     \repeat unfold 8 { \music } \break
1662     \repeat unfold 6 { \music } \break
1663     \repeat unfold 4 { \music } \break
1664     \repeat unfold 2 { \music }
1665   }
1666   \layout {
1667     \context {
1668       \Score
1669       \override NonMusicalPaperColumn #'line-break-permission = ##f
1670       \override NonMusicalPaperColumn #'page-break-permission = ##f
1671     }
1672   }
1673 }
1674 @end lilypond
1675
1676
1677 @seealso
1678 コード断片集:
1679 @rlsr{Spacing}
1680
1681
1682 @node 改行/改ページのために追加のボイスを使用する
1683 @subsection 改行/改ページのために追加のボイスを使用する
1684 @translationof Using an extra voice for breaks
1685
1686 通常、改行/改ページ情報は音符入力部分に直接入力します。
1687
1688 @example
1689 music = \relative c'' @{ c4 c c c @}
1690
1691 \score @{
1692   \new Staff @{
1693     \repeat unfold 2 @{ \music @} \break
1694     \repeat unfold 3 @{ \music @}
1695   @}
1696 @}
1697 @end example
1698
1699 この方法では @code{\break} と @code{\pageBreak} コマンドを入力しやすいですが、@c
1700 音楽入力と@c
1701 音楽をどのようにページにレイアウトするかを指定する情報とが混ざってしまいます。@c
1702 改行/改ページ情報を保持するための追加のボイスを導入することによって、@c
1703 音楽入力と改行/改ページ情報を 2 つ場所に分けることができます。@c
1704 この追加のボイスはスキップ、@code{\break}、@code{\pageBreak}、それに、@c
1705 その他の改行/改ページ情報だけを保持します。
1706
1707 @lilypond[quote,verbatim]
1708 music = \relative c'' { c4 c c c }
1709
1710 \score {
1711   \new Staff <<
1712     \new Voice {
1713       s1 * 2 \break
1714       s1 * 3 \break
1715       s1 * 6 \break
1716       s1 * 5 \break
1717     }
1718     \new Voice {
1719       \repeat unfold 2 { \music }
1720       \repeat unfold 3 { \music }
1721       \repeat unfold 6 { \music }
1722       \repeat unfold 5 { \music }
1723     }
1724   >>
1725 }
1726 @end lilypond
1727
1728 @ignore
1729 This pattern becomes especially helpful when overriding
1730 @code{line-break-system-details} and the other useful but long properties of
1731 @code{NonMusicalPaperColumnGrob}, as explained in @ref{垂直方向のスペース}.
1732 @end ignore
1733
1734 以下の方法は、@ref{垂直方向のスペース} で説明されているように、@c
1735 @code{NonMusicalPaperColumnGrob} の @code{line-break-system-details} と@c
1736 他の有用だが長いプロパティを上書きするときに、非常に役に立ちます。
1737
1738 @lilypond[quote,verbatim]
1739 music = \relative c'' { c4 c c c }
1740
1741 \score {
1742   \new Staff <<
1743     \new Voice {
1744       \overrideProperty "Score.NonMusicalPaperColumn"
1745         #'line-break-system-details #'((Y-offset . 0))
1746       s1 * 2 \break
1747
1748       \overrideProperty "Score.NonMusicalPaperColumn"
1749         #'line-break-system-details #'((Y-offset . 35))
1750       s1 * 3 \break
1751
1752       \overrideProperty "Score.NonMusicalPaperColumn"
1753         #'line-break-system-details #'((Y-offset . 70))
1754       s1 * 6 \break
1755
1756       \overrideProperty "Score.NonMusicalPaperColumn"
1757         #'line-break-system-details #'((Y-offset . 105))
1758       s1 * 5 \break
1759     }
1760     \new Voice {
1761       \repeat unfold 2 { \music }
1762       \repeat unfold 3 { \music }
1763       \repeat unfold 6 { \music }
1764       \repeat unfold 5 { \music }
1765     }
1766   >>
1767 }
1768 @end lilypond
1769
1770
1771 @seealso
1772 記譜法リファレンス:
1773 @ref{垂直方向のスペース}
1774
1775 コード断片集:
1776 @rlsr{Spacing}
1777
1778
1779 @node 垂直方向のスペース
1780 @section 垂直方向のスペース
1781 @translationof Vertical spacing
1782
1783 @cindex vertical spacing (垂直方向のスペース)
1784 @cindex spacing, vertical (垂直方向のスペース)
1785
1786 垂直方向のスペースは 3 つの要素によって制御されます:
1787 利用可能なスペースの量 (つまり、紙面サイズとマージン)、@c
1788 システムの間隔、それにシステム内部での譜の間隔です。
1789
1790 @menu
1791 * システム内部の可変な垂直方向のスペース::
1792 * 譜とシステムを明示的に配置する::
1793 * 垂直方向の衝突回避::
1794 @end menu
1795
1796
1797 @node システム内部の可変な垂直方向のスペース
1798 @subsection システム内部の可変な垂直方向のスペース
1799 @translationof Flexible vertical spacing within systems
1800
1801 @cindex distance between staves (譜の間隔)
1802 @cindex staff distance (譜の間隔)
1803 @cindex space between staves (譜の間のスペース)
1804 @cindex space inside systems (システム内部のスペース)
1805
1806 システム内部の可変な垂直方向のスペースを制御する 3 つの仕組みがあり、@c
1807 以下のカテゴリに分けられます:
1808
1809 @itemize
1810
1811 @item
1812 @emph{グループ化されていない譜},
1813
1814 @item
1815 @emph{グループ化されている譜}
1816 (@code{ChoirStaff} 等のような譜グループ内の譜)
1817
1818 @item
1819 @emph{譜ではない行}
1820 (@code{Lyrics}, @code{ChordNames} 等)
1821
1822 @end itemize
1823
1824 @c TODO: Clarify this.  This almost implies that non-staff lines
1825 @c       have NO effect on the spacing between staves.  -mp
1826
1827 システムの高さは 2 つのステップで決定されます。@c
1828 最初に、すべての譜が利用可能なスペースの量に応じた間隔で配置されます。@c
1829 次に、譜ではない行が譜の間に配置されます。
1830
1831 このセクションでは、@c
1832 システム内部の譜と譜ではない行の垂直方向のスペースを制御する@c
1833 仕組みだけを説明しているということに注意してください。@c
1834 システム、score、マークアップ、それにマージン間の垂直方向のスペースは、@c
1835 @code{\paper} 変数によって制御されます
1836 -- @ref{可変な垂直方向の \paper スペース変数} で説明しています。
1837
1838 @menu
1839 * システム内部のスペース プロパティ::
1840 * グループ化されていない譜のスペース::
1841 * グループ化されている譜のスペース::
1842 * 譜ではない行のスペース::
1843 @end menu
1844
1845
1846 @node システム内部のスペース プロパティ
1847 @unnumberedsubsubsec システム内部のスペース プロパティ
1848 @translationof Within-system spacing properties
1849
1850 @funindex staff-affinity
1851 @funindex staffgroup-staff-spacing
1852 @funindex staff-staff-spacing
1853 @funindex nonstaff-unrelatedstaff-spacing
1854 @funindex nonstaff-relatedstaff-spacing
1855 @funindex nonstaff-nonstaff-spacing
1856 @funindex default-staff-staff-spacing
1857 @funindex minimum-Y-extent
1858 @funindex extra-offset
1859 @funindex self-alignment-X
1860 @funindex X-offset
1861 @funindex VerticalAxisGroup
1862
1863 システム内部の垂直方向のスペースは、2 セットのグラフィカル オブジェクト
1864 プロパティによって制御されます。@c
1865 1 つ目は @code{VerticalAxisGroup} グラフィカル オブジェクト
1866 -- これは、譜と譜ではない行によって作成されます --
1867 のプロパティ セットです。@c
1868 2 つ目は @code{StaffGrouper} グラフィカル オブジェクト
1869 -- これは、明示的に呼び出された場合に、譜グループによって作成されます --
1870 のプロパティ セットです。@c
1871 これらのプロパティは、このセクションの終わりで説明します。
1872
1873 これらのプロパティの名前は (@code{staff-affinity} を除いて)、@c
1874 @code{@var{item1}-@var{item2}-spacing} という形式に従います
1875 -- ここで、@code{@var{item1}} と @code{@var{item2}} は、スペースを入れられる@c
1876 要素です。@c
1877 @code{@var{item2}} は必ずしも @code{@var{item1}} の下にある要素ではないという@c
1878 ことに注意してください。@c
1879 例えば、@code{staff-affinity} が @code{#UP} である場合、@c
1880 @code{nonstaff-relatedstaff-spacing} は譜ではない行から@c
1881 上向きにスペースをとります。
1882
1883 スペースは、2 つの要素の @emph{参照ポイント} 間の距離です。@c
1884 譜の参照ポイントは、その譜の @code{StaffSymbol}
1885 (すなわち、@code{line-count} が奇数の場合は中央の譜線で、@c
1886 @code{line-count} が偶数の場合は中央のスペースです)
1887 の垂直方向の中央です。@c
1888 譜ではない行の参照ポイントは、以下の表のようになります:
1889
1890 @multitable {Non-staff line} {Reference point}
1891 @headitem 譜ではない行   @tab 参照ポイント
1892 @item @code{ChordNames}  @tab ベースライン
1893 @item @code{NoteNames}   @tab ベースライン
1894 @item @code{Lyrics}      @tab ベースライン
1895 @item @code{Dynamics}    @tab 垂直方向の中央
1896 @item @code{FiguredBass} @tab 最も上のポイント
1897 @item @code{FretBoards}  @tab トップ ライン
1898 @end multitable
1899
1900 以下の画像では、水平方向の線が参照ポイントの位置を示しています:
1901
1902 @lilypond[quote,noragged-right,line-width=110\mm]
1903 #(define zero-space '((padding . -inf.0) (basic-distance . 0)))
1904
1905 alignToZero = \with {
1906   \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = #zero-space
1907   \override VerticalAxisGroup #'nonstaff-nonstaff-spacing = #zero-space
1908 }
1909 lowerCaseChords = \with {
1910   chordNameLowercaseMinor = ##t
1911 }
1912 staffAffinityDown = \with {
1913   \override VerticalAxisGroup #'staff-affinity = #DOWN
1914 }
1915 labelContext =
1916 #(define-music-function
1917      (parser location context)
1918      (string?)
1919    #{ s1*0^\markup { \typewriter #context } #})
1920
1921 \layout {
1922   \context { \Dynamics    \alignToZero }
1923   \context { \FiguredBass \alignToZero }
1924   \context { \Lyrics      \alignToZero }
1925   \context { \NoteNames   \alignToZero \staffAffinityDown }
1926   \context { \ChordNames  \alignToZero
1927                           \staffAffinityDown
1928                           \lowerCaseChords }
1929   \context { \FretBoards  \alignToZero \staffAffinityDown }
1930   \context { \Score
1931     \override BarLine #'stencil = ##f
1932     \override DynamicText #'self-alignment-X = #-1
1933     \override FretBoard #'X-offset = #1.75
1934     \override InstrumentName #'minimum-Y-extent = #'(-2 . 2)
1935     \override InstrumentName #'extra-offset = #'(0 . -0.5)
1936     \override TextScript #'minimum-Y-extent = #'(-2 . 3)
1937     \override TimeSignature #'stencil = ##f
1938   }
1939 }
1940
1941 %% These contexts have reference points at the baseline:
1942 %%   ChordNames, NoteNames, and Lyrics
1943 <<
1944   \new ChordNames { \chords { g1:m } }
1945   \new NoteNames { s1 | g1 | }
1946   \new RhythmicStaff {
1947     \set RhythmicStaff.instrumentName = #"baseline "
1948     \textLengthOn
1949     \labelContext "ChordNames " s1 |
1950     \labelContext "NoteNames "  s1 |
1951     \labelContext "Lyrics"     s1 |
1952   }
1953   \new Lyrics { \lyrics { \skip 1*2 | ghijk1 | } }
1954 >>
1955
1956 %% The reference point for Dynamics is its vertical center
1957 <<
1958   \new RhythmicStaff {
1959     \set RhythmicStaff.instrumentName = #"vertical center "
1960     \labelContext "Dynamics" s1*3
1961   }
1962   \new Dynamics { s1\mp s\fp }
1963 >>
1964
1965 %% The reference point for FiguredBass is its highest point
1966 <<
1967   \new RhythmicStaff {
1968     \set RhythmicStaff.instrumentName = #"highest point "
1969     \labelContext "FiguredBass" s1
1970   }
1971   \new FiguredBass { \figuremode { <6 5>1 } }
1972 >>
1973
1974 %% The reference point for FretBoards is the top line
1975 \include "predefined-guitar-fretboards.ly"
1976 <<
1977   \new FretBoards { \chordmode { e1 } }
1978   \new RhythmicStaff {
1979     \set RhythmicStaff.instrumentName = #"top line "
1980     \labelContext "FretBoards " s1
1981   }
1982 >>
1983 @end lilypond
1984
1985 垂直方向のスペースのグラフィカル オブジェクト プロパティは
1986 (@code{staff-affinity} を除いて)、@c
1987 @ref{可変な垂直方向の \paper スペース変数} で説明した
1988 @code{\paper} スペース変数と同じ連想配列構造を使用します。
1989 連想配列を変更する方法は、@ref{Modifying alists} で説明します。@c
1990 グラフィカル オブジェクト プロパティの調節は、@c
1991 @code{\score} ブロックか @code{\layout} ブロックの内部で、@c
1992 @code{\override} を用いて行う必要があります。
1993
1994 以下の例は、連想配列を変更する 2 つの方法を示しています。@c
1995 最初の宣言は 1 つのキー値を個別に更新して、@c
1996 2 番目の宣言はプロパティ全体を再定義しています:
1997
1998 @example
1999 \new Staff \with @{
2000   \override VerticalAxisGroup #'default-staff-staff-spacing
2001        #'basic-distance = #10
2002 @} @{ @dots{} @}
2003
2004 \new Staff \with @{
2005   \override VerticalAxisGroup #'default-staff-staff-spacing =
2006     #'((basic-distance . 10)
2007        (minimum-distance . 9)
2008        (padding . 1)
2009        (stretchability . 10))
2010 @} @{ @dots{} @}
2011 @end example
2012
2013 スペース設定をグローバルに変更するには、@c
2014 そのスペース設定を @code{\layout} ブロックの中に配置します:
2015
2016 @example
2017 \layout @{
2018   \context @{
2019     \Staff
2020     \override VerticalAxisGroup #'default-staff-staff-spacing
2021          #'basic-distance = #10
2022   @}
2023 @}
2024 @end example
2025
2026 垂直方向スペースのグラフィカル オブジェクト プロパティの標準設定は
2027 @rinternals{VerticalAxisGroup} と @rinternals{StaffGrouper} でリスト アップ@c
2028 しています。@c
2029 特定のタイプの譜ではない行のデフォルト設定は、@c
2030 @rinternals{Contexts} の中にある関連するコンテキストの説明でリスト アップ@c
2031 しています。
2032
2033
2034 @subsubheading @code{VerticalAxisGroup} グラフィカル オブジェクトのプロパティ
2035
2036 通常、@code{VerticalAxisGroup} プロパティは、@c
2037 @code{Staff} レベル (あるいはそれと同等のレベル) で、@c
2038 @code{\override} を用いて調節します。
2039
2040 @table @code
2041 @item staff-staff-spacing
2042
2043 カレントの譜とそのすぐ下の譜の間隔
2044 -- その間に 1 つ以上の譜ではない行 (@code{Lyrics} 等) が配置されている場合で@c
2045 あっても --
2046 を決定するために使用します。@c
2047 システムの最下段の譜には適用されません。
2048
2049 @code{VerticalAxisGroup} の @code{staff-staff-spacing} は、@c
2050 譜がグループの一部である場合は @code{StaffGrouper} の
2051 @code{staff-staff-spacing} プロパティを適用し、@c
2052 グループではない譜の場合はその譜の @code{default-staff-staff-spacing}
2053 を適用する Scheme 関数です。@c
2054 これにより、グループ化されている譜に異なる間隔を入れることが可能です。@c
2055 グループ化されていることとは無関係に同一の間隔を入れるには、@c
2056 上で示したプロパティ再定義を用いて、@c
2057 この関数を可変スペースの連想配列で置き換えます。
2058
2059 @item default-staff-staff-spacing
2060 グループ化されていない譜で使用される @code{staff-staff-spacing} を定義している@c
2061 可変スペースの連想配列です。@c
2062 @code{staff-staff-spacing} は @code{\override} を用いて@c
2063 上書きされることがあります。
2064
2065 @item staff-affinity
2066 カレントの譜ではない行にスペースを入れるために使用する譜の方向です。@c
2067 選択肢は @code{UP}, @code{DOWN}, それに @code{CENTER} です。@c
2068 @code{CENTER} の場合、衝突や他のスペース上の制約によって妨げられない限り、@c
2069 譜ではない行は上下にある近くの譜から等距離になるよう配置されます。@c
2070 隣接する譜ではない行の @code{staff-affinity} は、@c
2071 方向が下から上へと増加しないようにする必要があります。@c
2072 例えば、@code{DOWN} に設定された譜ではない行のすぐ後に
2073 @code{UP} に設定された譜ではない行を置くべきではありません。@c
2074 システムの最上段にある譜ではない行は @code{DOWN} であるべきで、@c
2075 システムの最下段にある譜ではない行は @code{UP} であるべきです。@c
2076 譜ではない行の @code{staff-affinity} を @code{#f} に設定すると、@c
2077 その行は譜として扱われます。@c
2078 譜に対して @code{UP}, @code{CENTER}, あるいは @code{DOWN} の
2079 @code{staff-affinity} を設定すると、@c
2080 その譜は譜ではない行として扱われます。@c
2081
2082 @item nonstaff-relatedstaff-spacing
2083 カレントの譜ではない行と @code{staff-affinity} の方向にある@c
2084 最も近い譜との間隔です
2085 -- 2 つの間に譜ではない行が無く、@c
2086 @code{staff-affinity} が @code{UP} と @code{DOWN} のどちらかである場合です。@c
2087 @code{staff-affinity} が @code{CENTER} である場合、@c
2088 @code{nonstaff-relatedstaff-spacing} は最も近くにある @emph{上下両サイド} の@c
2089 譜の間隔になります
2090 -- たとえ、カレントの譜ではない行と上下どちらかの譜の間に、@c
2091 他の譜ではない行があったとしてもです。@c
2092 このことは、譜ではない行の配置は、上下にある譜と譜ではない行の両方に依存する@c
2093 ということを意味します。@c
2094 このスペースの @code{stretchability} に小さな値を設定すると、@c
2095 そのとおりのスペースになりやすくなります。@c
2096 このスペースの @code{stretchability} に大きな値を設定すると、@c
2097 そのとおりのスペースになりにくくなります。@c
2098
2099 @item nonstaff-nonstaff-spacing
2100 カレントの譜ではない行と @code{staff-affinity} の方向にある@c
2101 次の譜ではない行の間隔です
2102 -- 2 つの間に譜が無く、@c
2103 @code{staff-affinity} が @code{UP} と @code{DOWN} のどちらかである場合です。@c
2104
2105 @item nonstaff-unrelatedstaff-spacing
2106 カレントの譜ではない行と @code{staff-affinity} とは反対方向にある譜の間隔です
2107 -- 2 つの間に他の譜ではない行が無く、@c
2108 @code{staff-affinity} が @code{UP} と @code{DOWN} のどちらかである場合です。@c
2109 これは、例えば、@c
2110 @code{Lyrics} 行と @code{Lyrics} が属していない譜との間のパディングを@c
2111 最小にする必要がある場合に使用される可能性があります。
2112 @end table
2113
2114
2115 @subsubheading @code{StaffGrouper} グラフィカル オブジェクトのプロパティ
2116
2117 通常、@code{StaffGrouper} プロパティは、@c
2118 @code{StaffGroup} レベル (あるいはそれと同等のレベル) で、@c
2119 @code{\override} を用いて調節します。
2120
2121 @table @code
2122 @item staff-staff-spacing
2123 カレントの譜グループ内部にある隣接する譜の間隔です。@c
2124 個々の譜の @code{VerticalAxisGroup} グラフィカル オブジェクトの
2125 @code{staff-staff-spacing} プロパティは、@c
2126 譜毎のスペース設定で上書きされる可能性があります。
2127
2128 @item staffgroup-staff-spacing
2129 カレントの譜グループの最後の譜と、同じシステム内にあるすぐ下の譜の間隔です
2130 -- 2 つの譜の間に 1 つ以上の譜ではない行 (@code{Lyrics} 等) が存在する場合で@c
2131 あってもです。@c
2132 システムの最下段の譜には適用されません。@c
2133 個々の譜の @code{VerticalAxisGroup} グラフィカル オブジェクトの
2134 @code{staff-staff-spacing} プロパティは、@c
2135 譜毎のスペース設定で上書きされる可能性があります。
2136 @end table
2137
2138 @seealso
2139 記譜法リファレンス:
2140 @ref{可変な垂直方向の \paper スペース変数},
2141 @ref{Modifying alists}
2142
2143 内部リファレンス:
2144 @rinternals{Contexts},
2145 @rinternals{VerticalAxisGroup},
2146 @rinternals{StaffGrouper}
2147
2148 Installed Files:
2149 @file{ly/engraver-init.ly},
2150 @file{scm/define-grobs.scm}
2151
2152
2153 @node グループ化されていない譜のスペース
2154 @unnumberedsubsubsec グループ化されていない譜のスペース
2155 @translationof Spacing of ungrouped staves
2156
2157 @emph{譜} (@code{Staff}, @code{DrumStaff}, @code{TabStaff} 等) は、@c
2158 1 つ以上のボイス コンテキストを保持することができ、@c
2159 他の譜を保持することはできないコンテキストです。
2160
2161 以下のプロパティは、@emph{グループ化されていない} 譜のスペースに影響を与えます:
2162
2163 @itemize
2164 @item @code{VerticalAxisGroup} プロパティ:
2165 @itemize
2166 @item @code{default-staff-staff-spacing}
2167 @item @code{staff-staff-spacing}
2168 @end itemize
2169 @end itemize
2170
2171 これらのグラフィカル オブジェクト プロパティは、それぞれ上で説明しています。@c
2172 @ref{システム内部のスペース プロパティ} を参照してください。
2173
2174 譜グループの一部である譜には、他にもプロパティがあります。@c
2175 @ref{グループ化されている譜のスペース} を参照してください。
2176
2177 以下の例は、@code{default-staff-staff-spacing} プロパティがどのように@c
2178 グループ化されていない譜のスペースに影響を与えるかを示しています。@c
2179 @code{staff-staff-spacing} に同じ上書きを適用すると同じ効果を持ちますが、@c
2180 譜がグループ化されている場合にも適用されます。
2181
2182 @c KEEP LY
2183 @lilypond[verbatim,quote,staffsize=16]
2184 \layout {
2185   \context {
2186     \Staff
2187     \override VerticalAxisGroup #'default-staff-staff-spacing =
2188       #'((basic-distance . 8)
2189          (minimum-distance . 7)
2190          (padding . 1))
2191   }
2192 }
2193
2194 <<
2195   % 非常に低い位置にある音符は 'basic-distance が提供するよりも
2196   % 大きなスペースを必要とするため、この譜と次の譜の間隔は 'padding
2197   % によって決定されます。
2198   \new Staff { b,2 r | }
2199
2200   % ここでは、'basic-distance が十分なスペースを提供していて、
2201   % ページ上にある他の要素のスペースを確保するためにスペースを
2202   % ('minimum-distance の値に向かって) 縮める必要はありません。
2203   % そのため、この譜と次の譜の間隔は 'basic-distance によって
2204   % 決定されます。
2205   \new Staff { \clef bass g2 r | }
2206
2207   % 'padding に負の値を設定することにより、譜を重ねることができます。
2208   % 'basic-distance が取り得る最小の値は 0 です。
2209   \new Staff \with {
2210     \override VerticalAxisGroup #'default-staff-staff-spacing =
2211       #'((basic-distance . 3.5)
2212          (padding . -10))
2213   } { \clef bass g2 r | }
2214   \new Staff { \clef bass g2 r | }
2215 >>
2216 @end lilypond
2217
2218 @seealso
2219 インストールされているファイル:
2220 @file{scm/define-grobs.scm}
2221
2222 コード断片集:
2223 @rlsr{Spacing}
2224
2225 内部リファレンス:
2226 @rinternals{VerticalAxisGroup}
2227
2228
2229 @node グループ化されている譜のスペース
2230 @unnumberedsubsubsec グループ化されている譜のスペース
2231 @translationof Spacing of grouped staves
2232
2233 オーケストラ譜や他の大きな楽譜では、@c
2234 譜を譜ループ化することが一般的です。@c
2235 通常、グループ間のスペースは、@c
2236 同じグループの譜の間のスペースよりも大きくなります。
2237
2238 @emph{譜グループ} (@code{StaffGroup}, @code{ChoirStaff} 等) は、@c
2239 同時進行する 1 つ以上の譜を保持することができるコンテキストです。
2240
2241 以下のプロパティは、譜グループの中にある譜のスペースに影響を与えます:
2242
2243 @itemize
2244 @item @code{VerticalAxisGroup} プロパティ:
2245 @itemize
2246 @item @code{staff-staff-spacing}
2247 @end itemize
2248 @item @code{StaffGrouper} プロパティ:
2249 @itemize
2250 @item @code{staff-staff-spacing}
2251 @item @code{staffgroup-staff-spacing}
2252 @end itemize
2253 @end itemize
2254
2255 これらのグラフィカル オブジェクト プロパティは、上で個々に説明しています。@c
2256 @ref{システム内部のスペース プロパティ} を参照してください。
2257
2258 以下の例は、@code{StaffGrouper} グラフィカル オブジェクトのプロパティが@c
2259 どのようにグループ化された譜のスペースに影響を与えるかを示しています:
2260
2261 @lilypond[verbatim,quote,staffsize=16]
2262 \layout {
2263   \context {
2264     \Score
2265     \override StaffGrouper #'staff-staff-spacing #'padding = #0
2266     \override StaffGrouper #'staff-staff-spacing #'basic-distance = #1
2267   }
2268 }
2269
2270 <<
2271   \new PianoStaff \with {
2272     \override StaffGrouper #'staffgroup-staff-spacing #'basic-distance = #20
2273   } <<
2274     \new Staff { c'1 }
2275     \new Staff { c'1 }
2276   >>
2277
2278   \new StaffGroup <<
2279     \new Staff { c'1 }
2280     \new Staff { c'1 }
2281   >>
2282 >>
2283 @end lilypond
2284
2285 @seealso
2286 インストールされているファイル:
2287 @file{scm/define-grobs.scm}
2288
2289 コード断片集:
2290 @rlsr{Spacing}
2291
2292 内部リファレンス:
2293 @rinternals{VerticalAxisGroup},
2294 @rinternals{StaffGrouper}
2295
2296
2297 @node 譜ではない行のスペース
2298 @unnumberedsubsubsec 譜ではない行のスペース
2299 @translationof Spacing of non-staff lines
2300
2301 @emph{譜ではない行} (@code{Lyrics}, @code{ChordNames} 等) は、@c
2302 それが保持するレイアウト オブジェクトが譜のように譜刻される
2303 (すなわち、システム内部の水平線上での譜刻) コンテキストです。@c
2304 具体的に言うと、@c
2305 譜ではない行は @code{VerticalAxisGroup} レイアウト オブジェクトを@c
2306 作成する譜ではないコンテキストです。
2307
2308 以下のプロパティが、譜ではない行のスペースに影響を与えいます:
2309
2310 @itemize
2311 @item @code{VerticalAxisGroup} プロパティ:
2312 @itemize
2313 @item @code{staff-affinity}
2314 @item @code{nonstaff-relatedstaff-spacing}
2315 @item @code{nonstaff-nonstaff-spacing}
2316 @item @code{nonstaff-unrelatedstaff-spacing}
2317 @end itemize
2318 @end itemize
2319
2320 これらのグラフィカル オブジェクト プロパティは、上で個々に説明しています。@c
2321 @ref{システム内部のスペース プロパティ} を参照してください。
2322
2323 以下の例は、@code{nonstaff-nonstaff-spacing} プロパティが@c
2324 どのように隣接する譜ではない行のスペースに影響を与えるかを示しています。@c
2325 ここでは、@code{stretchability} キーに非常に大きな値を設定することにより、@c
2326 通常よりも歌詞が広がりやすくしています:
2327
2328 @lilypond[verbatim,quote,staffsize=16]
2329 \layout {
2330   \context {
2331     \Lyrics
2332     \override VerticalAxisGroup
2333       #'nonstaff-nonstaff-spacing #'stretchability = #1000
2334   }
2335 }
2336
2337 \new StaffGroup
2338 <<
2339   \new Staff \with {
2340     \override VerticalAxisGroup #'staff-staff-spacing = #'((basic-distance . 30))
2341   } { c'1 }
2342   \new Lyrics \with {
2343     \override VerticalAxisGroup #'staff-affinity = #UP
2344   } \lyricmode { up }
2345   \new Lyrics \with {
2346     \override VerticalAxisGroup #'staff-affinity = #CENTER
2347   } \lyricmode { center }
2348   \new Lyrics \with {
2349     \override VerticalAxisGroup #'staff-affinity = #DOWN
2350   } \lyricmode { down }
2351   \new Staff { c'1 }
2352 >>
2353 @end lilypond
2354
2355
2356 @seealso
2357 インストールされているファイル:
2358 @file{ly/engraver-init.ly},
2359 @file{scm/define-grobs.scm}
2360
2361 コード断片集:
2362 @rlsr{Spacing}
2363
2364 @c @lsr{spacing,page-spacing.ly},
2365 @c @lsr{spacing,alignment-vertical-spacing.ly}
2366
2367 内部リファレンス:
2368 @rinternals{Contexts},
2369 @rinternals{VerticalAxisGroup}
2370
2371
2372 @node 譜とシステムを明示的に配置する
2373 @subsection 譜とシステムを明示的に配置する
2374 @translationof Explicit staff and system positioning
2375
2376 上で説明した可変な垂直方向のスペースの仕組みを理解する方法の 1 つに、@c
2377 譜とシステムの間の垂直方向のパティングの大きさを制御する設定を@c
2378 コレクションすることがあります。
2379
2380 @code{NonMusicalPaperColumn #'line-break-system-details} を用いて、@c
2381 垂直方向のスペースに別の方法でアプローチすることができます。@c
2382 可変な垂直方向のスペースの仕組みが垂直方向のパディングを指定するのに対して、@c
2383 @code{NonMusicalPaperColumn #'line-break-system-details} は@c
2384 ページ上の垂直方向の位置を指定することができます。
2385
2386 @code{NonMusicalPaperColumn #'line-break-system-details} は
2387 3 つ設定からなる連想配列を受け取ります:
2388
2389 @itemize
2390 @item @code{X-offset}
2391 @item @code{Y-offset}
2392 @item @code{alignment-distances}
2393 @end itemize
2394
2395 以下の  @code{NonMusicalPaperColumn} に対する上書きを含む、@c
2396 グラフィカル オブジェクトの上書きは、@c
2397 入力ファイルの中の 3 つの場所に配置することができます:
2398
2399 @itemize
2400 @item 音符入力の途中に直接配置する
2401 @item @code{\context} ブロックの中に配置する
2402 @item @code{\with} ブロックの中に配置する
2403 @end itemize
2404
2405 @code{NonMusicalPaperColumn} を上書きする場合、@c
2406 通常は @code{\context} ブロックや @code{\with} ブロックの中で@c
2407 @code{\override} コマンドを使用します。@c
2408 一方、音符入力の途中で @code{NonMusicalPaperColumn} を上書きする場合、@c
2409 特殊なコマンド @code{\overrideProperty} を使用します。@c
2410 ここで、@c
2411 特殊なコマンド @code{\overrideProperty} で
2412 @code{NonMusicalPaperColumn} を上書きする例をいくつか挙げます:
2413
2414 @example
2415 \overrideProperty NonMusicalPaperColumn
2416   #'line-break-system-details #'((X-offset . 20))
2417
2418 \overrideProperty NonMusicalPaperColumn
2419   #'line-break-system-details #'((Y-offset . 40))
2420
2421 \overrideProperty NonMusicalPaperColumn
2422   #'line-break-system-details #'((X-offset . 20)
2423                                  (Y-offset . 40))
2424
2425 \overrideProperty NonMusicalPaperColumn
2426   #'line-break-system-details #'((alignment-distances . (15)))
2427
2428 \overrideProperty NonMusicalPaperColumn
2429   #'line-break-system-details #'((X-offset . 20)
2430                                  (Y-offset . 40)
2431                                  (alignment-distances . (15)))
2432 @end example
2433
2434 これらの異なる設定がそれぞれどのように機能するのかを理解するために、@c
2435 まったく上書きを含まない例を見ることから始めます。
2436
2437 @c \book { } is required in these examples to ensure the spacing
2438 @c overrides can be seen between systems. -np
2439
2440 @lilypond[verbatim,quote,staffsize=16]
2441 \header { tagline = ##f }
2442 \paper { left-margin = 0\mm }
2443 \book {
2444   \score {
2445     <<
2446       \new Staff <<
2447         \new Voice {
2448           s1*5 \break
2449           s1*5 \break
2450           s1*5 \break
2451         }
2452         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
2453       >>
2454       \new Staff {
2455         \repeat unfold 15 { d'4 d' d' d' }
2456       }
2457     >>
2458   }
2459 }
2460 @end lilypond
2461
2462 この楽譜は改行/改ページ情報を専用のボイスに孤立させています。@c
2463 この改行/改ページ用のボイスを作成するテクニックは、@c
2464 例がより複雑になっていくときに、@c
2465 レイアウトと音楽入力を分離することを助けてくれます。@c
2466 @ref{改行/改ページのために追加のボイスを使用する} を参照してください。
2467
2468 明示的な @code{\breaks} は一様に音楽を 1 行あたり 5 小節に分割しています。@c
2469 垂直方向のスペースは LilyPond のデフォルトです。@c
2470 @code{NonMusicalPaperColumn} グラフィカル オブジェクトの
2471 @code{line-break-system-details} 属性の中にある
2472 @code{Y-offset} を設定することで、@c
2473 各システムの垂直方向の開始位置を設定することができます:
2474
2475 @lilypond[verbatim,quote,staffsize=16]
2476 \header { tagline = ##f }
2477 \paper { left-margin = 0\mm }
2478 \book {
2479   \score {
2480     <<
2481       \new Staff <<
2482         \new Voice {
2483           \overrideProperty #"Score.NonMusicalPaperColumn"
2484             #'line-break-system-details #'((Y-offset . 0))
2485           s1*5 \break
2486           \overrideProperty #"Score.NonMusicalPaperColumn"
2487             #'line-break-system-details #'((Y-offset . 40))
2488           s1*5 \break
2489           \overrideProperty #"Score.NonMusicalPaperColumn"
2490             #'line-break-system-details #'((Y-offset . 80))
2491           s1*5 \break
2492         }
2493         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
2494       >>
2495       \new Staff {
2496         \repeat unfold 15 { d'4 d' d' d' }
2497       }
2498     >>
2499   }
2500 }
2501 @end lilypond
2502
2503 @code{line-break-system-details} は@c
2504 潜在的に多くの値を持つ連想リストをとりますが、@c
2505 ここでは値を 1 つだけしかセットしていないということに注意してください。@c
2506 また、ここでは @code{Y-offset} プロパティは、@c
2507 各システムがページに描画される垂直方向の位置を@c
2508 決定しているということにも注意してください。
2509
2510 これまでに各システムの垂直方向の開始位置を明示的に設定しましたが、@c
2511 各システム内部の各譜の垂直方向の開始位置を手動で設定することも可能です。@c
2512 @code{line-break-system-details} のサブプロパティ @code{alignment-offsets} を@c
2513 用います。
2514
2515 @lilypond[verbatim,quote,staffsize=16]
2516 \header { tagline = ##f }
2517 \paper { left-margin = 0\mm }
2518 \book {
2519   \score {
2520     <<
2521       \new Staff <<
2522         \new Voice {
2523           \overrideProperty #"Score.NonMusicalPaperColumn"
2524             #'line-break-system-details #'((Y-offset . 20)
2525                                            (alignment-distances . (15)))
2526           s1*5 \break
2527           \overrideProperty #"Score.NonMusicalPaperColumn"
2528             #'line-break-system-details #'((Y-offset . 60)
2529                                            (alignment-distances . (15)))
2530           s1*5 \break
2531           \overrideProperty #"Score.NonMusicalPaperColumn"
2532             #'line-break-system-details #'((Y-offset . 100)
2533                                            (alignment-distances . (15)))
2534           s1*5 \break
2535         }
2536         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
2537       >>
2538       \new Staff {
2539         \repeat unfold 15 { d'4 d' d' d' }
2540       }
2541     >>
2542   }
2543 }
2544 @end lilypond
2545
2546 ここでは @code{NonMusicalPaperColumn} グラフィカル オブジェクトの@c
2547 @code{line-break-system-details} 属性に 2 つの値を代入しているということに@c
2548 注意してください。@c
2549 @code{line-break-system-details} 属性の連想配列はもっと多くのスペース パラメータ
2550 (例えば、@code{Y-offset} ペアに相当する @code{X-offset} ペア)
2551 を受け付けますが、@c
2552 システムと譜の垂直方向の開始地点を制御するのに必要な設定は、@c
2553 @code{Y-offset} ペアと @code{alignment-offsets} ペアだけです。
2554 最後に、@c
2555 @code{alignment-offsets} は譜の垂直方向の位置を指定するのであり、@c
2556 譜グループの位置を指定するわけではないということに注意してください。
2557
2558 @lilypond[verbatim,quote,staffsize=16]
2559 \header { tagline = ##f }
2560 \paper { left-margin = 0\mm }
2561 \book {
2562   \score {
2563     <<
2564       \new Staff <<
2565         \new Voice {
2566           \overrideProperty #"Score.NonMusicalPaperColumn"
2567             #'line-break-system-details #'((Y-offset . 0)
2568                                            (alignment-distances . (30 10)))
2569           s1*5 \break
2570           \overrideProperty #"Score.NonMusicalPaperColumn"
2571             #'line-break-system-details #'((Y-offset . 60)
2572                                            (alignment-distances . (10 10)))
2573           s1*5 \break
2574           \overrideProperty #"Score.NonMusicalPaperColumn"
2575             #'line-break-system-details #'((Y-offset . 100)
2576                                            (alignment-distances . (10 30)))
2577           s1*5 \break
2578         }
2579         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
2580       >>
2581       \new StaffGroup <<
2582         \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
2583         \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
2584       >>
2585     >>
2586   }
2587 }
2588 @end lilypond
2589
2590 考慮すべき点がいくつかあります:
2591
2592 @itemize
2593 @item @code{alignment-offsets} を使用する場合、@c
2594 歌詞と他の譜ではない行は譜としてカウントされません。
2595
2596 @item @code{X-offset}, @code{Y-offset} それに @code{alignment-offsets} に@c
2597 渡される数の単位は、@c
2598 譜線間隔の乗数と解釈されます。@c
2599 正の値は譜と歌詞を下または右に移動させ、@c
2600 負の値は譜と歌詞を上または左に移動させます。
2601
2602 @item ここで扱った @code{NonMusicalPaperColumn #'line-break-system-details}
2603 設定は譜とシステムを任意の場所に配置することを可能にするため、@c
2604 紙面領域やマージン領域を犯したり、@c
2605 他の譜やシステムの上に譜刻する可能性さえあります。@c
2606 これらの設定に適切な値を渡すことで、そのようなことは避けられます。
2607 @end itemize
2608
2609
2610 @seealso
2611 コード断片集:
2612 @rlsr{Spacing}
2613
2614
2615 @node 垂直方向の衝突回避
2616 @subsection 垂直方向の衝突回避
2617 @translationof Vertical collision avoidance
2618
2619 @funindex outside-staff-priority
2620 @funindex outside-staff-padding
2621 @funindex outside-staff-horizontal-padding
2622
2623 直観的に、音楽記譜には譜に属するオブジェクトと、@c
2624 譜の外側に配置されるべきオブジェクトがあります。@c
2625 譜の外側に属するオブジェクトには、リハーサル記号、テキスト、@c
2626 それに強弱記号などがあります
2627 (これからは、それらを譜外部オブジェクトと呼びます)。@c
2628 LilyPond が譜外部オブジェクトの垂直方向の配置を決定するとき、@c
2629 譜外部オブジェクトをできる限り譜の近くに、@c
2630 しかしながら、他のオブジェクトと衝突しない程度の近さに配置します。
2631
2632 LilyPond は @code{outside-staff-priority} プロパティを用いて@c
2633 あるグラフィカル オブジェクトが譜外部オブジェクトかどうかを決定します:
2634 @code{outside-staff-priority} が数であれば、@c
2635 そのグラフィカル オブジェクトは譜外部オブジェクトです。@c
2636 さらに、@code{outside-staff-priority} は LilyPond に、@c
2637 そのグラフィカル オブジェクトを配置する順番を教えてくれます。
2638
2639 まず最初にに、LilyPond は譜外部オブジェクトには属さないオブジェクトを@c
2640 すべて配置します。@c
2641 次に、譜外部オブジェクトを @code{outside-staff-priority} に従って
2642 (昇順に) ソートします。@c
2643 LilyPond は譜外部オブジェクトを、既に配置済みのオブジェクトと衝突しないよう、@c
2644 一つずつ配置していきます。@c
2645 つまり、2 つの譜外部オブジェクトが同じスペースをめぐって競合する場合、@c
2646 より小さな @code{outside-staff-priority} を持つオブジェクトが@c
2647 譜の近くに配置されます。
2648
2649 @c KEEP LY
2650 @lilypond[quote,ragged-right,relative=2,verbatim]
2651 c4_"Text"\pp
2652 r2.
2653 \once \override TextScript #'outside-staff-priority = #1
2654 c4_"Text"\pp % ここでは、テキストが譜の近くに配置されます
2655 r2.
2656 % outside-staff-priority に数ではない値を設定することにより、
2657 % 自動衝突回避を無効にします
2658 \once \override TextScript #'outside-staff-priority = ##f
2659 \once \override DynamicLineSpanner #'outside-staff-priority = ##f
2660 c4_"Text"\pp % ここでは、2 つのオブジェクトが衝突します
2661 @end lilypond
2662
2663 ある譜外部オブジェクトとその前に配置されたグラフィカル オブジェクトとの間に@c
2664 ある垂直方向のパディングは、@c
2665 @code{outside-staff-padding} で制御することができます。
2666
2667 @c KEEP LY
2668 @lilypond[quote,ragged-right,relative=2,verbatim]
2669 \once \override TextScript #'outside-staff-padding = #0
2670 a'^"このテキストは音符のすぐ近くに配置されます。"
2671 \once \override TextScript #'outside-staff-padding = #3
2672 c^"このテキストは前のテキストから離れた位置に配置されます"
2673 c^"この手キスとは前にテキストの近くに配置されます"
2674 @end lilypond
2675
2676
2677 デフォルトでは、譜外部オブジェクトの配置は、@c
2678 配置済みのグラフィカル オブジェクトとの水平方向の衝突回避だけを考慮します。@c
2679 このことは、@c
2680 オブジェクト同士が水平方向に非常に近く配置される状況を招く可能性があります。@c
2681 譜の垂直方向の間隔を設定した場合も、@c
2682 譜外部オブジェクトが挟み込まれる可能性があります。@c
2683 @code{outside-staff-horizontal-padding} を設定すると、@c
2684 オブジェクトは垂直方向にずれるため、@c
2685 そのような状況は起こらなくなります。
2686
2687 @c KEEP LY
2688 @lilypond[quote,ragged-right,relative=2,verbatim]
2689 % マークアップは後に続く音符に近寄りすぎています
2690 c4^"Text"
2691 c4
2692 c''2
2693 % outside-staff-horizontal-padding を設定することで修正します
2694 R1
2695 \once \override TextScript #'outside-staff-horizontal-padding = #1
2696 c,,4^"Text"
2697 c4
2698 c''2
2699 @end lilypond
2700
2701
2702 @seealso
2703 コード断片集:
2704 @rlsr{Spacing}
2705
2706
2707 @node 水平方向のスペース
2708 @section 水平方向のスペース
2709 @translationof Horizontal spacing
2710
2711 @cindex horizontal spacing (水平方向のスペース)
2712 @cindex spacing, horizontal (水平方向のスペース)
2713
2714 @menu
2715 * 水平方向のスペースの概要::
2716 * 新しいスペース領域::
2717 * 水平方向のスペースを変更する::
2718 * 行の長さ::
2719 * プロポーショナル ノーテーション::
2720 @end menu
2721
2722
2723 @node 水平方向のスペースの概要
2724 @subsection 水平方向のスペースの概要
2725 @translationof Horizontal spacing overview
2726
2727 スペース エンジンは異なる演奏時間を異なる長さの可変距離 (@q{スプリング}) に@c
2728 翻訳します。@c
2729 長い演奏時間はより多くのスペースをとり、@c
2730 短い演奏時間はより少ないスペースをとります。@c
2731 最短の演奏時間は固定量のスペース
2732 (これは @rinternals{SpacingSpanner} オブジェクトの中にある
2733 @code{shortest-duration-space} によって制御されます)
2734 をとります。@c
2735 演奏時間が長くなるほど、より多くのスペースをとります:
2736 演奏時間が倍になると、固定量のスペース
2737 (これは @code{spacing-increment} によって制御されます)
2738 がその音符に付け加えられます。
2739
2740 例えば、以下の楽曲には多くの 2 分音符、4 分音符、@c
2741 それに 8 分音符が含まれています。
2742 8 分音符の後には符頭幅 (NHW) 1 つ分が挿入されます。@c
2743 4 分音符の後には 2 NHW が挿入され、2 分音符の後には 3 NHW が挿入されます。
2744
2745 @lilypond[quote,verbatim,relative=1]
2746 c2 c4. c8 c4. c8 c4. c8 c8
2747 c8 c4 c4 c4
2748 @end lilypond
2749
2750 通常、@code{spacing-increment} は 1.2 譜スペースに設定されています。@c
2751 これは符頭の幅とだいたい同じです。@c
2752 さらに、@code{shortest-duration-space} は 2.0 に設定されています。@c
2753 つまり、最短の音符は 2.4 譜スペース (@code{spacing-increment} の 2 倍) の@c
2754 水平方向のスペースをとります。@c
2755 このスペースはシンボルの左端からカウントされます。@c
2756 そのため、最短の音符の後には一般に 1 NHW のスペースが挿入されます。
2757
2758 上記の手順に正確に従った場合、@c
2759 8 分音符や 16 分音符を含む楽譜に 32 分音符を 1 つ付け加えると、@c
2760 楽譜全体が大きく引き伸ばされます。@c
2761 最短の音符はもはや 16 分音符ではなく、32 分音符であり、@c
2762 それぞれの 16 分音符に 1 NHW が付け加えられます。@c
2763 このことを防ぐため、スペースをとるための最短の演奏時間を、@c
2764 その楽譜の中にある最短の音符ではなく、最も頻繁に出現する音符とします。
2765
2766
2767 最も共通する最短演奏時間は以下のように決定されます:
2768 各小節において、最短の演奏時間が決定されます。@c
2769 スペースの基本として、最も共通する最短演奏時間が選択されます。@c
2770 条件として、この最短演奏時間は常に 8 分音符以上の長さになります。@c
2771 @code{lilypond} を @code{--verbose} オプションを付けて実行すると、@c
2772 最短演奏時間が表示されます。
2773
2774 この演奏時間はカスタマイズすることもできます。@c
2775 @rinternals{SpacingSpanner} の中にある @code{common-shortest-duration} を@c
2776 設定した場合、@c
2777 スペースのための基本演奏時間が設定されれます。@c
2778 この基本演奏時間の最大値 (通常、8 分音符) は、@c
2779 @code{base-shortest-duration} によって設定されます。
2780
2781 @funindex common-shortest-duration
2782 @funindex base-shortest-duration
2783 @funindex stem-spacing-correction
2784 @funindex spacing
2785
2786 共通の最短音符よりも短い音符の後には、@c
2787 その音符の演奏時間と共通の最短音符の演奏時間の比を反映した@c
2788 スペースが付けられます。@c
2789 そのため、@c
2790 上記の例に 16 分音符を数個付け加えた場合、@c
2791 16 分音符の後には NHW の半分の幅のスペースが付けられます:
2792
2793 @lilypond[quote,verbatim,relative=2]
2794 c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4
2795 @end lilypond
2796
2797
2798 @emph{Essay on automated music engraving} において、@c
2799 符幹の向きはスペースに影響を与えるということを説明しました
2800 (@ressay{Optical spacing} を参照してください)。@c
2801 これは、@rinternals{NoteSpacing} オブジェクトの中にある
2802 @code{stem-spacing-correction} プロパティによって制御されます。@c
2803 このオブジェクトは @rinternals{Voice} コンテキストごとに生成されます。@c
2804 @code{StaffSpacing} オブジェクト
2805 (@rinternals{Staff} コンテキストの中で生成されます)
2806 は、符幹/小節線のスペースを制御するために、同様のプロパティを保持します。@c
2807 以下の例は、それらプロパティによる修正の様子を示しています。
2808 前半はデフォルト設定による修正であり、@c
2809 後半は修正を誇張しています:
2810
2811 @lilypond[quote,ragged-right]
2812 {
2813   c'4 e''4 e'4 b'4 |
2814   b'4 e''4 b'4 e''4 |
2815   \override Staff.NoteSpacing #'stem-spacing-correction = #1.5
2816   \override Staff.StaffSpacing #'stem-spacing-correction = #1.5
2817   c'4 e''4 e'4 b'4 |
2818   b'4 e''4 b'4 e''4 |
2819 }
2820 @end lilypond
2821
2822 プロポーショナル ノーテーション (proportional notation) がサポートされます。@c
2823 @ref{プロポーショナル ノーテーション} を参照してください。
2824
2825
2826 @seealso
2827 コード断片集:
2828 @rlsr{Spacing}
2829
2830 内部リファレンス:
2831 @rinternals{SpacingSpanner},
2832 @rinternals{NoteSpacing},
2833 @rinternals{StaffSpacing},
2834 @rinternals{NonMusicalPaperColumn}
2835
2836
2837 @knownissues
2838
2839 スペースを手動で上書きするための、手軽な仕組みはありません。@c
2840 余分なスペースを楽譜に挿入するために、以下の手段があります
2841 -- 必要に応じて、パディングの値を調整しています。
2842 @example
2843  \override Score.NonMusicalPaperColumn #'padding = #10
2844 @end example
2845
2846 スペースを減らすための手段はありません。
2847
2848
2849 @node 新しいスペース領域
2850 @subsection 新しいスペース領域
2851 @translationof New spacing area
2852
2853 @code{newSpacingSection} を用いることで、@c
2854 異なるスペース パラメータを持つ新しいセクションを開始することができます。@c
2855 これは、音符の長さに関して異なる概念を持つセクションがある場合に、有用です。@c
2856
2857 以下の例では、@c
2858 拍子記号が新たしいセクションを導入しています。@c
2859 その結果、16 分音符の間隔が広くなっています。
2860
2861 @lilypond[relative=1,verbatim,quote]
2862 \time 2/4
2863 c4 c8 c
2864 c8 c c4 c16[ c c8] c4
2865 \newSpacingSection
2866 \time 4/16
2867 c16[ c c8]
2868 @end lilypond
2869
2870 @code{\newSpacingSection} コマンドは新たに
2871 @code{SpacingSpanner} オブジェクトを作成します。@c
2872 そのため、その場所で新たに @code{\override} が使用される可能性があります。
2873
2874
2875 @seealso
2876 コード断片集:
2877 @rlsr{Spacing}
2878
2879 内部リファレンス:
2880 @rinternals{SpacingSpanner}
2881
2882
2883 @node 水平方向のスペースを変更する
2884 @subsection 水平方向のスペースを変更する
2885 @translationof Changing horizontal spacing
2886
2887 水平方向のスペースを、@code{base-shortest-duration} で@c
2888 変更することができます。@c
2889 ここで、同じ音楽を比較します。@c
2890 1 つではこのプロパティを変更せず、もう 1 つでは変更します。@c
2891 @code{ly:make-moment} の値が大きくなると、@c
2892 楽譜は小さくなります。@c
2893 @code{ly:make-moment} は演奏時間を構成するため、@c
2894 @code{1 4} は @code{1 16} よりも長い演奏時間である@c
2895 ということに注意してください。
2896
2897 @lilypond[verbatim,line-width=12\cm]
2898 \score {
2899   \relative c'' {
2900     g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
2901     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2902     d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
2903     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2904   }
2905 }
2906 @end lilypond
2907
2908 @lilypond[verbatim,line-width=12\cm]
2909 \score {
2910   \relative c'' {
2911     g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
2912     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2913     d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
2914     g4 e e2 | f4 d d2 | c4 e g g | c,1 |
2915   }
2916   \layout {
2917     \context {
2918       \Score
2919       \override SpacingSpanner
2920         #'base-shortest-duration = #(ly:make-moment 1 16)
2921     }
2922   }
2923 }
2924 @end lilypond
2925
2926
2927 @snippets
2928
2929 デフォルトでは、連符のスペースは演奏時間とは関係の無い要素
2930 (臨時記号、音部記号の変化など)
2931 に依存します。@c
2932 そのような記号を無視して、同じ演奏時間に等しいスペースを割り当てるには、@c
2933 @code{Score.SpacingSpanner #'uniform-stretching} を使用します。@c
2934 このプロパティは、楽譜の先頭でのみ、変更することができます。
2935
2936 @lilypond[quote,ragged-right,verbatim]
2937 \score {
2938   <<
2939     \new Staff {
2940       \times 4/5 {
2941         c8 c8 c8 c8 c8
2942       }
2943       c8 c8 c8 c8
2944     }
2945     \new Staff {
2946       c8 c8 c8 c8
2947       \times 4/5 {
2948         c8 c8 c8 c8 c8
2949       }
2950     }
2951   >>
2952   \layout {
2953     \context {
2954       \Score
2955       \override SpacingSpanner #'uniform-stretching = ##t
2956     }
2957   }
2958 }
2959 @end lilypond
2960
2961 @code{strict-note-spacing} がセットされている場合、@c
2962 音部記号、小節線、それに装飾小音符を考慮せずに、@c
2963 音符にスペースが割り当てられます。
2964
2965 @lilypond[quote,ragged-right,relative=2,verbatim]
2966 \override Score.SpacingSpanner #'strict-note-spacing = ##t
2967 \new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c32] }
2968 @end lilypond
2969
2970
2971 @seealso
2972 コード断片集:
2973 @rlsr{Spacing}
2974
2975
2976 @node 行の長さ
2977 @subsection 行の長さ
2978 @translationof Line length
2979
2980 @cindex page breaks (改ページ)
2981 @cindex breaking pages (改ページ)
2982
2983 @funindex indent
2984 @funindex line-width
2985 @funindex ragged-right
2986 @funindex ragged-last
2987
2988 @c Although line-width can be set in \layout, it should be set in paper
2989 @c block, to get page layout right.
2990 @c Setting indent in \paper block makes not much sense, but it works.
2991
2992 @c Bit verbose and vague, use examples?
2993 スペースに影響を与える最も基本的な設定は、@c
2994 @code{indent} と @code{line-width} です。@c
2995 これらは @code{\layout} ブロックの中で設定されます。@c
2996 これらの設定は、楽譜の最初の行のインデントと、行の長さを制御します。
2997
2998 @code{\layout} ブロックの中で @code{ragged-right} が真にセットされている場合、@c
2999 システムは行全体を埋めるように水平方向に引き伸ばされず、@c
3000 本来の長さで終了します。@c
3001 これは、小さな楽譜の場合や、@c
3002 本来のスペースがどれくらいの密度なのかをチェックする場合に有用です。@c
3003 通常のデフォルト設定は偽ですが、@c
3004 1 つしかシステムを持たない楽譜の場合のデフォルト値は真です。
3005
3006 @cindex page layout (ページ レイアウト)
3007 @cindex vertical spacing (垂直方向のスペース)
3008
3009 @code{ragged-last} オプションは @code{ragged-right} に似ていますが、@c
3010 楽曲の最後の行だけに影響を与えます。@c
3011 最後の行には、何の制限も加えられません。@c
3012 この結果は、文章の段落をフォーマットする場合と同じです。@c
3013 文章の段落において、@c
3014 最後の行は単純にそのままの長さにフォーマットされます。
3015
3016 @c Note that for text there are several options for the last line.
3017 @c While Knuth TeX uses natural length, lead typesetters use the same
3018 @c stretch as the previous line.  eTeX uses \lastlinefit to
3019 @c interpolate between both these solutions.
3020
3021 @example
3022 \layout @{
3023   indent = #0
3024   line-width = #150
3025   ragged-last = ##t
3026 @}
3027 @end example
3028
3029
3030 @seealso
3031 コード断片集:
3032 @rlsr{Spacing}
3033
3034
3035 @node プロポーショナル ノーテーション
3036 @subsection プロポーショナル ノーテーション
3037 @translationof Proportional notation
3038
3039 Lilypond はプロポーショナル ノーテーションをサポートします。@c
3040 この記譜法では、各音符は演奏時間に相当する水平方向のスペースをとります。@c
3041 このタイプの水平スペースは、方眼紙上の水平方向スペースと同等です。@c
3042 20 世紀後半、21 世紀前半の楽譜の中には、@c
3043 複雑なリズムをわかりやすく示すため、@c
3044 あるいは、時間軸や他の図の配置を容易にするために、@c
3045 プロポーショナル ノーテーションを使っているものがあります。
3046
3047 LilyPond はプロポーショナル ノーテーション用に 5 つの設定をサポートします。@c
3048 それらの設定は一緒に使われることもありますし、単独で使われることもあります:
3049
3050 @itemize
3051 @item @code{proportionalNotationDuration}
3052 @item @code{uniform-stretching}
3053 @item @code{strict-note-spacing}
3054 @item @code{\remove Separating_line_group_engraver}
3055 @item @code{\override PaperColumn #'used = ##t}
3056 @end itemize
3057
3058 以下の例では、@c
3059 これら 5 つのプロポーショナル ノーテーション用の設定を見ていき、@c
3060 それらがどのように相互に作用するかを調べます。
3061
3062 以下のような 1 小節の例から始めます。@c
3063 これは、@code{ragged-right} が ON であり、@c
3064 クラシック音楽でのスペースを使用します。
3065
3066 @lilypond[quote,verbatim,ragged-right]
3067 \score {
3068   <<
3069     \new RhythmicStaff {
3070       c'2
3071       c'16 c'16 c'16 c'16
3072       \times 4/5 {
3073         c'16 c'16 c'16 c'16 c'16
3074       }
3075     }
3076   >>
3077 }
3078 @end lilypond
3079
3080 小節の始まりに配置された 2 分音符がその小節で占める水平方向のスペースは、@c
3081 半分よりもずっと少ないということに注意してください。@c
3082 そのため、@c
3083 小節の後半に配置された 16 分音符と、16 分音符からなる 5 連符
3084 (すなわち、20 分音符) がその小節で占める水平方向のスペースは、@c
3085 半分よりもずっと多くなっています。
3086
3087 クラシック音楽の譜刻では、このスペースのとり方が望ましいかもしれません。@c
3088 なぜなら、2 分音符から水平方向のスペースを借りてきて、@c
3089 小節全体としてスペースを維持することができるからです。
3090
3091 他方で、時間軸や他の図を楽譜の上または下に挿入しようとした場合、@c
3092 プロポーショナル ノーテーションが必要になります。@c
3093 @code{proportionalNotationDuration} 設定でプロポーショナル ノーテーションを@c
3094 有効にします。
3095
3096 @lilypond[quote,verbatim,ragged-right]
3097 \score {
3098   <<
3099     \new RhythmicStaff {
3100       c'2
3101       c'16 c'16 c'16 c'16
3102       \times 4/5 {
3103         c'16 c'16 c'16 c'16 c'16
3104       }
3105     }
3106   >>
3107  \layout {
3108     \context {
3109       \Score
3110       proportionalNotationDuration = #(ly:make-moment 1 20)
3111     }
3112   }
3113 }
3114 @end lilypond
3115
3116 今度は、@c
3117 小節の前半に配置された 2 分音符と、後半に配置された短い音符の集まりが@c
3118 占める水平方向のスペースは等しくなりました。@c
3119 これで、この例の上または下に、時間軸や他の図を配置することが可能になりました。
3120
3121 @code{proportionalNotationDuration} 設定は、@c
3122 @code{Score} の中にあるコンテキスト設定です。@c
3123 入力ファイルの中でコンテキスト設定が出現するのは、@c
3124 3 つの場所のどれかだということを思い出してください
3125 -- @code{\with} ブロックの中、@code{\context} ブロックの中、あるいは、@c
3126 @code{\set} コマンドを前に置いた形で音楽エントリの中に直接配置します。@c
3127 他のすべてのコンテキスト設定と同様に、@c
3128 ユーザはこれら 3 つの場所のどれか 1 つを選択して、@c
3129 そこで @code{proportionalNotationDuration} をセットすることができます。
3130
3131 @code{proportionalNotationDuration} 設定は引数を 1 つとります。@c
3132 これはすべての音楽要素へのスペースに関係する参照演奏時間です。@c
3133 LilyPond Scheme 関数 @code{make-moment} は 2 つの引数をとります
3134 -- 全音符の分数を表す分子と分母です。@c
3135 それゆえ、@code{#(ly:make-moment 1 20)} という呼び出しは、@c
3136 20 分音符の参照演奏時間となります。@c
3137 @code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, それに
3138 @code{#(ly:make-moment 3 97)} という値はすべてとり得る値です。
3139
3140 では、どのように @code{proportionalNotationDuration} に渡す@c
3141 適切な参照演奏時間を決めるのでしょうか?@c
3142 通常、その楽曲の最速 (あるいは最小) の演奏時間に近い演奏時間から始めて、@c
3143 トライ&エラーで決めます。@c
3144 小さな参照演奏時間にすると疎な楽譜となり、@c
3145 大きな参照演奏時間にすると密な楽譜になります。
3146
3147 @lilypond[quote,verbatim,ragged-right]
3148 \score {
3149   <<
3150     \new RhythmicStaff {
3151       c'2
3152       c'16 c'16 c'16 c'16
3153       \times 4/5 {
3154         c'16 c'16 c'16 c'16 c'16
3155       }
3156     }
3157   >>
3158   \layout {
3159     \context {
3160       \Score
3161       proportionalNotationDuration = #(ly:make-moment 1 8)
3162     }
3163   }
3164 }
3165
3166 \score {
3167   <<
3168     \new RhythmicStaff {
3169       c'2
3170       c'16 c'16 c'16 c'16
3171       \times 4/5 {
3172         c'16 c'16 c'16 c'16 c'16
3173       }
3174     }
3175   >>
3176   \layout {
3177     \context {
3178       \Score
3179       proportionalNotationDuration = #(ly:make-moment 1 16)
3180     }
3181   }
3182 }
3183
3184 \score {
3185   <<
3186     \new RhythmicStaff {
3187       c'2
3188       c'16 c'16 c'16 c'16
3189       \times 4/5 {
3190         c'16 c'16 c'16 c'16 c'16
3191       }
3192     }
3193   >>
3194   \layout {
3195     \context {
3196       \Score
3197       proportionalNotationDuration = #(ly:make-moment 1 32)
3198     }
3199   }
3200 }
3201 @end lilypond
3202
3203 8 分音符以上などのようなあまりにも大きな演奏時間にすると、@c
3204 楽譜が密になりすぎて、符頭の衝突が発生する可能性があるということに@c
3205 注意してください。@c
3206 さらに、一般にプロポーショナル ノーテーションはクラシック音楽のスペースよりも@c
3207 多くの水平方向スペースをとるということに注意してください。@c
3208 プロポーショナル ノーテーションは、多くの水平方向スペースを使うことで、@c
3209 明快なリズムを提供します。
3210
3211 次に、重複する連符に最適なスペースを割り当てる方法を検証します。
3212
3213 まず、クラシック音楽のスペースで、異なるタイプの連符を付け加えたときに、@c
3214 何が起こるかを見ていきます。
3215
3216 @lilypond[quote,verbatim,ragged-right]
3217 \score {
3218   <<
3219     \new RhythmicStaff {
3220       c'2
3221       c'16 c'16 c'16 c'16
3222       \times 4/5 {
3223         c'16 c'16 c'16 c'16 c'16
3224       }
3225     }
3226     \new RhythmicStaff {
3227       \times 8/9 {
3228         c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8
3229       }
3230     }
3231   >>
3232 }
3233 @end lilypond
3234
3235 このスペースのとり方は良くありません。@c
3236 なぜなら、下の譜の音符の間隔が一様ではないからです。@c
3237 クラシック音楽の譜刻には複雑な連符はほとんど含まれないため、@c
3238 クラシック音楽の譜刻規則はこのような結果を生み出す可能性があります。@c
3239 @code{proportionalNotationDuration} を設定することにより、@c
3240 この状況はかなり修正されます。
3241
3242 @lilypond[quote,verbatim,ragged-right]
3243 \score {
3244   <<
3245     \new RhythmicStaff {
3246       c'2
3247       c'16 c'16 c'16 c'16
3248       \times 4/5 {
3249         c'16 c'16 c'16 c'16 c'16
3250       }
3251     }
3252     \new RhythmicStaff {
3253       \times 8/9 {
3254         c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8
3255       }
3256     }
3257   >>
3258   \layout {
3259     \context {
3260       \Score
3261       proportionalNotationDuration = #(ly:make-moment 1 20)
3262     }
3263   }
3264 }
3265 @end lilypond
3266
3267 しかしながら、注意深く見ると、@c
3268 9 連符の後半の音符の間隔が、@c
3269 前半の音符の間隔よりもわずかに広くなっています。@c
3270 間隔を一様にするため、@c
3271 @code{SpacingSpanner} のプロパティである
3272 @code{uniform-stretching} を ON にします。
3273
3274 @lilypond[quote,verbatim,ragged-right]
3275 \score {
3276   <<
3277     \new RhythmicStaff {
3278       c'2
3279       c'16 c'16 c'16 c'16
3280       \times 4/5 {
3281         c'16 c'16 c'16 c'16 c'16
3282       }
3283     }
3284     \new RhythmicStaff {
3285       \times 8/9 {
3286         c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8
3287       }
3288     }
3289   >>
3290   \layout {
3291     \context {
3292       \Score
3293       proportionalNotationDuration = #(ly:make-moment 1 20)
3294       \override SpacingSpanner #'uniform-stretching = ##t
3295     }
3296   }
3297 }
3298 @end lilypond
3299
3300 今度は、適切にスペースが割り当てられました。@c
3301 リズムは視覚的に明快になり、必要があれば時間軸や図を挿入することができます。
3302
3303 LilyPond のプロポーショナル ノーテーション パッケージは、@c
3304 すべてのプロポーショナルな楽譜は @code{SpacingSpanner} の
3305 @code{'uniform-stretching} 属性が @code{##t} に設定されているものと@c
3306 見なします。@c
3307 @code{SpacingSpanner} の @code{'uniform-stretching} 属性が @code{##t}
3308 に設定されずに、@c
3309 @code{proportionalNotationDuration} が設定されると、@c
3310 例えば、スキップ (空白音符) の水平方向のスペースが適切に割り当てられません。
3311
3312 @code{SpacingSpanner} は @code{Score} コンテキストの中にある@c
3313 抽象的なグラフィカル オブジェクトです。@c
3314 @code{proportionalNotationDuration} の設定と一緒に、@c
3315 @code{SpacingSpanner} をオーバライドする場所は、@c
3316 入力ファイルの 3 つの場所のいずれかになります
3317 -- @code{Score \with} ブロックの中、@code{Score \context} ブロックの中、@c
3318 あるいは音符入力の場所に直接配置するかです。
3319
3320 デフォルトでは、@code{Score} ごとに @code{SpacingSpanner} が 1 つあります。@c
3321 つまり、デフォルトでは、@code{uniform-stretching} は楽譜全体で ON であるか、@c
3322 OFF であるかのどちらかであるということです。@c
3323 しかしながら、この振る舞いをオーバライドして、@c
3324 楽譜内の異なる場所で異なるスペース機能を設定することができます。@c
3325 これを実現するには、コマンド @code{\newSpacingSection} を用います。@c
3326 更なる情報は、@ref{新しいスペース領域} を参照してください。
3327
3328 次に、@code{Separating_line_group_engraver} の効果を検証し、@c
3329 なぜプロポーショナルな楽譜は頻繁に@c
3330 このエングラーバを削除するのかを見ていきます。@c
3331 以下の例は、各システムの最初の音符の直前に小さな @qq{前置きの} スペースが@c
3332 あることを示しています。@c
3333
3334 @lilypond[quote,verbatim,ragged-right]
3335 \paper {
3336   indent = #0
3337 }
3338
3339 \new Staff {
3340   c'1
3341   \break
3342   c'1
3343 }
3344 @end lilypond
3345
3346
3347 この前置きのスペースの量は、前にあるのが拍子記号、調号、あるいは音部記号の@c
3348 いずれであっても、同じです。@c
3349 @code{Separating_line_group_engraver} はこのスペースに責任を負います。@c
3350 @code{Separating_line_group_engraver} を削除すると、@c
3351 このスペースはゼロになります。
3352
3353 @lilypond[quote,verbatim,ragged-right]
3354 \paper {
3355   indent = #0
3356 }
3357
3358 \new Staff \with {
3359   \remove Separating_line_group_engraver
3360 } {
3361   c'1
3362   \break
3363   c'1
3364 }
3365 @end lilypond
3366
3367 拍子記号、調号、音部記号、それに臨時記号のような非音楽要素は、@c
3368 プロポーショナル ノーテーションでは問題になります。@c
3369 これらはすべて演奏時間を持ちません。@c
3370 しかしながら、これらはすべて水平方向のスペースを消費します。@c
3371 この問題に対して、プロポーショナルな楽譜はいくつかの異なるアプローチをとります。
3372
3373 調号のスペースの問題は、調号を持たないことで回避できるかもしれません。@c
3374 これは有効な選択肢です。@c
3375 なぜなら、たいていのプロポーショナルな楽譜は現代音楽だからです。@c
3376 拍子記号についても同じことが言えるかもしれません。@c
3377 時間軸や他の図を持つ楽譜であれば特にそうです。@c
3378 しかしながら、そのような楽譜は例外的なものであり、@c
3379 たいていのプロポーショナルな楽譜は少なくともいくつかの拍子記号を持ちます。@c
3380 さらに、音部記号と臨時記号はより必須のものです。
3381
3382 それでは、プロポーショナルなコンテキストにおける非音楽要素のスペースに対して@c
3383 どのような解決法が存在するのでしょうか?@c
3384 とり得る選択肢の 1 つに、@code{SpacingSpanner} の @code{strict-note-spacing}
3385 プロパティがあります。@c
3386 以下の 2 つの楽譜を比べてください:
3387
3388 @lilypond[quote,verbatim,ragged-right]
3389 \new Staff {
3390   \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
3391   c''8
3392   c''8
3393   c''8
3394   \clef alto
3395   d'8
3396   d'2
3397 }
3398
3399 \new Staff {
3400   \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
3401   \override Score.SpacingSpanner #'strict-note-spacing = ##t
3402   c''8
3403   c''8
3404   c''8
3405   \clef alto
3406   d'8
3407   d'2
3408 }
3409 @end lilypond
3410
3411 どちらの楽譜もプロポーショナルです。@c
3412 しかしながら、最初の楽譜は音部変更があるため広がりすぎています。@c
3413 2 番目の楽譜は、@code{strict-note-spacing} を ON にしているため、@c
3414 プロポーショナルな間隔を維持しています。@c
3415 @code{strict-note-spacing} を ON にすると、@c
3416 拍子記号、調号、音部記号、それに臨時記号の幅は、@c
3417 スペース アルゴリズムの中で何の役割も果たさなくなります。
3418
3419 この設定に加えて、他にもプロポーショナルな楽譜で頻出する設定があります。@c
3420 以下のような設定です:
3421
3422 @itemize
3423 @item @code{\override SpacingSpanner #'strict-grace-spacing = ##t}
3424 @item @code{tupletFullLength = ##t}
3425 @item @code{\override Beam #'breakable = ##t}
3426 @item @code{\override Glissando #'breakable = ##t}
3427 @item @code{\override TextSpanner #'breakable = ##t}
3428 @item @code{\remove Forbid_line_break_engraver in the Voice context}
3429 @end itemize
3430
3431 これらの設定は、装飾小音符のスペースを厳密にし、@c
3432 連譜の囲みをリズム的な開始点、終了点まで拡張し、@c
3433 (連桁のような) 広がりを持つ要素が、@c
3434 システムやページが改まるときに中断されることを許可します。@c
3435 これらの設定について、本書の関連パートを参照してください。
3436
3437
3438 @seealso
3439 記譜法リファレンス:
3440 @ref{新しいスペース領域}
3441
3442 コード断片集:
3443 @rlsr{Spacing}
3444
3445
3446 @node 音楽を少ないページに収める
3447 @section 音楽を少ないページに収める
3448 @translationof Fitting music onto fewer pages
3449
3450 ときどき、譜の 1 つ、2 つが 2 番目 (あるいは、3 番目、4 番目 ...)
3451 のページに配置されてしまうことがあります。@c
3452 これは腹立たしいことです
3453 -- 特に、前のページに十分なスペースがあるように見える場合は。
3454
3455 レイアウトの問題を解決しようとしている時、@c
3456 @code{annotate-spacing} は何にも代え難いツールです。@c
3457 このコマンドはさまざまなレイアウト スペース変数の値を表示します。@c
3458 詳細は以下のセクション @ref{スペースを表示する} を参照してください。
3459
3460 @menu
3461 * スペースを表示する::
3462 * スペースを変更する::
3463 @end menu
3464
3465
3466 @node スペースを表示する
3467 @subsection スペースを表示する
3468 @translationof Displaying spacing
3469
3470 @funindex annotate-spacing
3471 @cindex spacing, display of layout (レイアウト スペースの表示)
3472
3473 ページ フォーマットのために変更される可能性がある、@c
3474 垂直方向のレイアウト変数の値を表示させるには、@c
3475 @code{\paper} ブロックの中で @code{annotate-spacing} をセットします:
3476
3477 @c need to have \book{} otherwise we get the separate systems. -hwn
3478 @lilypond[verbatim,quote]
3479 #(set-default-paper-size "a6" 'landscape)
3480 \book {
3481   \score { { c4 } }
3482   \paper { annotate-spacing = ##t }
3483 }
3484 @end lilypond
3485
3486
3487 @noindent
3488 すべてのレイアウト値は、@c
3489 @code{\paper} ブロックや @code{\layout} ブロックの中で@c
3490 指定された単位とは無関係に、譜スペースで表示されます。@c
3491 上の例では、@code{paper-height} の値は 59.75 @code{譜スペース} であり、@c
3492 @code{staff-size} は 20 ポイント (デフォルト値) です。@c
3493 以下のことに注意してください:
3494
3495 @multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm}
3496
3497 @item 1 ポイント
3498 @tab = (25.4/72.27) mm
3499
3500 @item 1 譜スペース
3501 @tab = (@code{staff-size})/4 ポイント
3502 @item
3503 @tab = (@code{staff-size})/4 * (25.4/72.27) mm
3504
3505 @end multitable
3506
3507 @noindent
3508 この場合、1 譜スペースは約 1.757mm です。@c
3509 それゆえ、59.75 譜スペースである @code{paper-height} は 105mm であり、@c
3510 横置きの @code{A6} 紙の高さと同じです。@c
3511 ペア (@var{a},@var{b}) は間隔を表します。@c
3512 @var{a} は間隔の下端を、@var{b} は上端を表します。
3513
3514
3515 @seealso
3516 記譜法リファレンス:
3517 @ref{譜サイズを設定する}
3518
3519 コード断片集:
3520 @rlsr{Spacing}
3521
3522
3523 @c ここから L3349
3524 @node スペースを変更する
3525 @subsection スペースを変更する
3526 @translationof Changing spacing
3527
3528 @code{annotate-spacing} の出力は、@c
3529 垂直方向のレイアウト変数の値を詳細に取得します。@c
3530 マージンや他のレイアウト変数を変更することについての詳細は、@c
3531 @ref{ページ レイアウト} を参照してください。
3532
3533 マージン以外にも、スペースを節約するための選択肢がいくつかあります:
3534
3535 @itemize
3536 @item
3537
3538 (1 ページにできるだけ多くのシステムを収めるために)
3539 スペースがある限り、システムを可能な限り近寄せる。@c
3540 それにより、ページの下部に空きスペースが無くなります。
3541
3542 @example
3543 \paper @{
3544   system-system-spacing = #'((basic-distance . 0.1) (padding . 0))
3545   ragged-last-bottom = ##f
3546   ragged-bottom = ##f
3547 @}
3548 @end example
3549
3550 @item
3551 システム数を設定する。@c
3552 これは 2 つの意味でスペースを節約します。@c
3553 システム数を設定することで、たとえそれがデフォルト値であっても、@c
3554 各ページにより多くのシステムを収めることができる場合があります。@c
3555 なぜなら、見積もりのステップが迂回され、より正確な適合が得られるからです。@c
3556 さらに、システム数を減らすことで、より多くのページを節約できる場合があります。@c
3557 例えば、デフォルトのレイアウトが 11 システムである場合、@c
3558 以下の指定により、レイアウトは強制的に 10 システムに収められます。
3559
3560 @example
3561 \paper @{
3562   system-count = #10
3563 @}
3564 @end example
3565
3566 @item
3567 オブジェクトがシステムの垂直方向のサイズを増加させるのを避ける
3568 (あるいは減らす)。@c
3569 例えば、volta リピート (または、差し替えの繰り返し) は@c
3570 余分なスペースを必要とします。@c
3571 これらの繰り返しが 2 つのシステムに広がっている場合、@c
3572 1 システムが volta リピートを持ち、もう 1 システムが volta リピートを持たない@c
3573 場合よりも多くのスペースをとります。@c
3574 別の例では、@c
3575 システムから突き出ている強弱記号を譜に近づけることで、@c
3576 スペースを節約することができます:
3577
3578 @lilypond[verbatim,quote,relative=1]
3579 e4 c g\f c
3580 e4 c g-\tweak #'X-offset #-2.7 -\tweak #'Y-offset #2.5 \f c
3581 @end lilypond
3582
3583 @item
3584 @code{SpacingSpanner} 経由で水平方向のスペースを変更する。@c
3585 詳細は、@ref{水平方向のスペースを変更する} を参照してください。@c
3586 以下の例は、デフォルトをスペースを示しています:
3587
3588 @lilypond[verbatim,quote]
3589 \score {
3590   \relative c'' {
3591     g4 e e2 |
3592     f4 d d2 |
3593     c4 d e f |
3594     g4 g g2 |
3595     g4 e e2 |
3596   }
3597 }
3598 @end lilypond
3599
3600 @noindent
3601 次の例では、@code{common-shortest-duration} の値を
3602 @code{1/4} から @code{1/2} に変更しています。@c
3603 この例では、4 分音符が最も共通で、最短の演奏時間です。@c
3604 そのため、@code{common-shortest-duration} を長くすることで
3605 @q{詰め込む} 効果を得られます:
3606
3607 @lilypond[verbatim,quote]
3608 \score {
3609   \relative c'' {
3610     g4 e e2 |
3611     f4 d d2 |
3612     c4 d e f |
3613     g4 g g2 |
3614     g4 e e2 |
3615   }
3616   \layout {
3617     \context {
3618       \Score
3619       \override SpacingSpanner
3620         #'common-shortest-duration = #(ly:make-moment 1 2)
3621     }
3622   }
3623 }
3624 @end lilypond
3625
3626 @noindent
3627 @code{common-shortest-duration} プロパティを動的に変更することはできません。@c
3628 そのため、このプロパティは常に @code{\context} ブロックの中に配置して、@c
3629 楽譜全体に適用されるようにする必要があります。
3630
3631 @end itemize
3632
3633
3634 @seealso
3635 記譜法リファレンス:
3636 @ref{ページ レイアウト},
3637 @ref{水平方向のスペースを変更する}
3638
3639 コード断片集:
3640 @rlsr{Spacing}