@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: 2c5ba46300cf1d3996045fb5d6153306474b042c
+ Translation of GIT committish: 6647daf0d6c8459d2b52bfc3a2a40bad4672fc7a
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
* コンテキストのプラグインを変更する::
* コンテキストのデフォルト設定を変更する::
* 新しいコンテキストを定義する::
-* ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\82\92æ\8f\83ã\81\88ã\82\8b::
+* ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81®é\85\8dç½®é \86åº\8f::
@end menu
-
@seealso
学習マニュアル:
@rlearning{コンテキストとエングラーバ}
-インストール済みファイル:
+インストールされているファイル:
@file{ly/@/engraver@/-init@/.ly},
@file{ly/@/performer@/-init@/.ly}
@code{Score}, @code{Staff} それに @code{Voice} コンテキストにおいて@c
デフォルトで使用されるコンテキスト設定は、以下の例で示すように、@c
@code{\layout} ブロックの中で指定することができます。@c
-@code{\layout} ブロックは、それを適用する @code{\score} ブロックの中で、かつ、@c
-音楽表記の外側に配置する必要があります。
+@code{\layout} ブロックは、それを適用する @code{\score} ブロックの中で、@c
+かつ、音楽表記の外側に配置する必要があります。
以下のような方法でコンテキストのデフォルト値を指定する場合、@c
@code{\set} コマンドとコンテキストを@c
@code{Score} コンテキストや @code{Voice} コンテキストに@c
変更を適用することができます。
-@knownissues
-
-変数に加えられたコンテキストの変更を収集すること、それに、@c
-その変数を参照することでそれらの変更を @code{\context} 定義に@c
-適用することはできません。
+コンテキストの変更を変数に格納することができます。@c
+コンテキストの変更に @code{\with} を付けて変数に格納して、その変数を@c
+コンテキスト定義の前に置くことにより、変更をコンテキストに適用することが@c
+できます:
+@lilypond[quote,verbatim]
+blubb = \with {
+ fontSize = #-4
+ \override Stem #'thickness = #4.0
+ \remove "Time_signature_engraver"
+}
-@code{\RemoveEmptyStaffContext} はカレントの
-@code{\Staff} 設定を上書きします。@c
-@code{\RemoveEmptyStaffContext} を使用する staff
-のデフォルト設定を変更したいのならば、@c
-@code{\RemoveEmptyStaffContext} を呼び出した後に@c
-変更を加える必要があります。@c
-つまり、以下のようにします:
+bla = \with {
+ fontSize = #3
+ \override Stem #'thickness = #-2.0
+}
-@example
-\layout @{
- \context @{
- \RemoveEmptyStaffContext
+melody = \relative c'' {
+ a4 a a a |
+ a4 a a a |
+}
- \override Stem #'thickness = #4.0
- @}
-@}
-@end example
+\score {
+ <<
+ \new Staff <<
+ \melody
+ s1*0^"Small, thicker stems, no time signature"
+ >>
+ \new Staff \bla <<
+ \melody
+ s1*0^"Different"
+ >>
+ >>
+ \layout {
+ \context {
+ \Staff
+ \blubb
+ }
+ }
+}
+@end lilypond
@c TODO: add \with in here.
@end example
-@node ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\82\92æ\8f\83ã\81\88ã\82\8b
-@subsection コンテキストを揃える
+@node ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\81®é\85\8dç½®é \86åº\8f
+@subsection Context layout order
@translationof Context layout order
-新しいコンテキストを既存のコンテキストの上または下に揃えることができます。@c
-これはボーカル譜 (@rlearning{合唱}) を組む場合やオッシアで役に立ちます。
-
-@c TODO Better example needed. Ref LM, and expand on it.
-
-@cindex ossia (オッシア)
-@funindex alignAboveContext
-@funindex alignBelowContext
-
-@lilypond[quote,ragged-right]
-ossia = { f4 f f f }
-\score{
- \relative c' \new Staff = "main" {
- c4 c c c
- <<
- \new Staff \with { alignAboveContext = #"main" } \ossia
- { d8 f d f d f d f }
- >>
- }
-}
-@end lilypond
-
-@cindex nested contexts (ネストされたコンテキスト)
-@cindex contexts, nested (ネストされたコンテキスト)
-
+@cindex contexts, layout order (コンテキストの配置順序)
@funindex \accepts
@funindex \denies
-@code{PianoStaff} のようなコンテキストは、@c
-ネスト (入れ子) 構造をとって、@c
-他のコンテキストを内部に保持することができます。@c
-ネスト構造をとることができるコンテキストは、@c
-コンテキストの @qq{accepts} リストによって定義されています。@c
-このリストには存在しないコンテキストは、楽譜が譜刻されるとき、@c
-(@code{PianoStaff} などの) 親コンテキストの下に配置されます。@c
-例えば、@code{PianoStaff} コンテキストは、デフォルトで、@c
-@code{Staff} と @code{FiguredBass} コンテキストを内部に受け入れるよう@c
-定義されていますが、(例えば) @code{Lyrics} コンテキストは受け入れません。@c
-そのため、以下の例では、歌詞は 2 つの譜の間ではなく、@c
-ピアノ譜の下に配置されています:
+通常、コンテキストは入力ファイルの中で記述した順に楽譜の段の上から下に@c
+配置されます。@c
+コンテキストがネストされている場合、外側のコンテキストは入力ファイルの@c
+中で指定されたコンテキストを内側に保持して、内側のコンテキストは外側の@c
+コンテキストの @qq{accepts} リストに含まれます。@c
+ネストされたコンテキストのうち外側のコンテキストの @qq{accepts} リスト@c
+に含まれないものは、ネストされずに外側のコンテキストの下に再配置されます。
+
+コンテキストの @qq{accepts} リストを @code{\accepts} コマンドと
+@code{\denies} コマンドで変更することができます。@c
+@code{\accepts} はコンテキストを @qq{accepts} リストに追加して、@c
+@code{\denies} は @qq{accepts} リストからコンテキストを削除します。@c
+例えば、通常、コード ネームは @code{Staff} コンテキストの中にネスト@c
+されないため、@code{ChordNames} コンテキストはデフォルトでは @code{Staff}
+コンテキストの @qq{accepts} リストには含まれませんが、リストに含める必要が@c
+あれば含めることができます:
-@lilypond[verbatim,quote,relative=1]
-\new PianoStaff
-<<
- \new Staff { e4 d c2 }
- \addlyrics { Three blind mice }
+@lilypond[verbatim,quote]
+\score {
\new Staff {
- \clef "bass"
- { c,1 }
+ c' d' e' f'
+ \chords { d1:m7 b1:min7.5- }
}
->>
+}
@end lilypond
-コンテキストの @qq{accepts} リストを変更することで、
-ネストされるコンテキストを追加するができます。@c
-ですから、歌詞を 2 つの譜の間に表示させたいのなら、以下のようにします:
-
-@lilypond[verbatim,quote,relative=1]
-\new PianoStaff \with { \accepts Lyrics }
-<<
- \new Staff { e4 d c2 }
- \addlyrics { Three blind mice }
+@lilypond[verbatim,quote]
+\score {
\new Staff {
- \clef "bass"
- { c,1 }
+ c' d' e' f'
+ \chords { d1:m7 b1:min7.5- }
}
->>
+ \layout {
+ \context {
+ \Staff
+ \accepts "ChordNames"
+ }
+ }
+}
@end lilypond
-@code{\accepts} の反対は @code{\denies} です。@c
-これはコンテキストを @qq{accepts} リストから削除します。
+@code{\denies} は主に、他のコンテキストをベースに新しいコンテキストを@c
+作成した時に、中にネストするコンテキストを変更するために用いられます。
+
+例えば、@code{VaticanaStaff} コンテキストは @code{Staff} コンテキストを@c
+ベースにしていますが、@qq{accepts} リストでは @code{Voice} コンテキスト@c
+の代わりに @code{VaticanaVoice} コンテキストを保持しています。
+
+コンテキストに保持されるべきコマンドが出現して、それを保持するための@c
+適切なコンテキストが存在しない場合、コンテキストが暗黙的に作成される@c
+ということに注意してください。@c
+これは予期しない譜や楽譜を生み出す可能性があります。
+
+@seealso
+アプリケーション使用方法:
+@rprogram{An extra staff appears}
+
+インストールされているファイル:
+@file{ly/engraver-init.ly}
@node 内部リファレンスの説明
@menu
* 内部リファレンスを使いこなす::
* レイアウト インターフェイス::
-* グラフィカル オブジェクトを決定する::
+* グラフィカル オブジェクト プロパティを決定する::
* 命名規約::
@end menu
(@rinternals{fingering-event}:
音楽イベント タイプ @code{fingering-event} は
@rinternals{FingeringEvent} という名前の音楽表記の中にあります)
-
@end itemize
このパスは、プログラム内部での情報フローとは逆向きです:
この定義から直接生成されたに過ぎません。
-@node グラフィカル オブジェクトを決定する
-@subsection グラフィカル オブジェクトを決定する
+@node グラフィカル オブジェクト プロパティを決定する
+@subsection グラフィカル オブジェクト プロパティを決定する
@translationof Determining the grob property
@c TODO remove this (it's in the LM)
@quotation
Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
+
(Fingering_engraver は次のコンテキストの一部です: @dots{} @rinternals{Voice})
@end quotation
-- 例: as-scheme-functions
@item グラフィカル オブジェクト インターフェイス: Scheme スタイルです
-- 例: scheme-style
-@c 未訳
@item バックエンド プロパティ: Scheme スタイルです (が、X と Y があります!)
@item コンテキスト (それに、音楽表記とグラフィカル オブジェクト):
大文字で始まる単語、あるいはそれらをつなげます
@end ifnothtml
@seealso
-
内部リファレンス:
-
@rinternals{Tunable context properties}
-
@cindex grob properties (グラフィカル オブジェクト プロパティ)
@cindex properties, grob (グラフィカル オブジェクト プロパティ)
@funindex \override
@end ignore
@seealso
-
内部リファレンス:
@rinternals{Backend}
あるいは、@c
@code{\tweak} の適用で入力を調整する方法を決定するときに役に立つかもしれません。
-
@seealso
学習マニュアル:
@rlearning{調整手段}
拡張:
@rextend{Displaying music expressions}
-
@knownissues
-
@cindex tweaks in a variable (変数の中での調整)
+
@code{\tweak} コマンドを変数の中で用いることはできません。
@cindex tweaks in lyrics (歌詞の中での調整)
@subsection @code{\set} 対 @code{\override}
@translationof set versus override
-TODO -- This section is probably unnecessary now.
+@c TODO -- This section is probably unnecessary now.
@ignore
We have seen two methods of changing properties: @code{\set} and
@menu
* 入力モード::
* 向きと配置::
-* コンテキスト レイアウトの順序::
* 距離と距離の単位::
* 譜記号プロパティ::
* スパナ::
入力ファイルの中に保持されている記譜を解釈する方法は、@c
カレントの入力モードによって決定されます。
-@strong{コード モード}
+@strong{和音モード}
このモードは @code{\chordmode} コマンドで有効になり、@c
入力はコード記譜法の構文で解釈されるようになります。@c
@ref{Chord notation} を参照してください。@c
コードは、譜面上に音符として描画されます。
-コード モードは @code{\chords} コマンドでも有効になります。@c
+和音モードは @code{\chords} コマンドでも有効になります。@c
このコマンドは新たに @code{ChordNames} コンテキストも作成します。@c
入力はコード記譜法の構文で解釈され、@c
さらに @code{ChordNames} コンテキストの中にコード ネームとして描画されます。@c
c2( c)
@end lilypond
-
-@node コンテキスト レイアウトの順序
-@subsection コンテキスト レイアウトの順序
-@translationof Context layout order
-
-@cindex contexts, layout order (コンテキスト レイアウトの順序)
-
-通常、コンテキストは、入力ファイルの中で出現した順番に、@c
-システムの上から下へと配置されます。@c
-コンテキストがネストされている場合、@c
-入力ファイルの中で内側にネストされたコンテキストが@c
-外側のコンテキストの @q{accepts} リストの中に含まれているのなら、@c
-外側のコンテキストの内部に配置されます。@c
-外側のコンテキストの @qq{accepts} リストに含まれていない場合、@c
-外側のコンテキストの内部ではなく、下に再配置されます。
-
-入力ファイルの中で、@c
-出現したコマンドを保持する適当なコンテキストが存在しない場合、@c
-コンテキストが暗黙的に作成されます。@c
-これは、予期しない譜やスコアを生み出す可能性があります。
-
-コンテキストが配置される順序や @qq{accepts} リストは変更することができます。@c
-@ref{コンテキストを揃える} を参照してください。
+多声の音楽では、一般的にオブジェクトの向きを変えるよりも明示的に
+@code{voice} を指定した方が良いです。@c
+更なる情報は、@ref{Multiple voices} を参照してください。
@seealso
-アプリケーション使用方法:
-@rprogram{余計な譜が表示される}
+学習マニュアル:
+@rlearning{Within-staff objects}
+
+記譜法リファレンス:
+@ref{Multiple voices}
@node 距離と距離の単位
この関数の説明と使用例については、@c
@rlearning{オブジェクトの長さと太さ} を参照してください。
-
@seealso
学習マニュアル:
@rlearning{オブジェクトの長さと太さ}
いくつかのスパナ -- 2 つのオブジェクトの間に直線を描くもの -- は、さらに、@c
@code{line-spanner-interface} をサポートします。
-
@unnumberedsubsubsec @code{spanner-interface} を使用する
このインターフェイスは、@c
e8 e e e
@end lilypond
-
@strong{@i{@code{to-barline} プロパティ}}
@code{spanner-interface} の 2 番目に有用なプロパティは
あるいは小節線で終了させることに意味が無い他のスパナに対して、@c
このプロパティを @code{#t} に設定しても効果がありません。
-
@unnumberedsubsubsec @code{line-spanner-interface} を使用する
@code{line-spanner-interface} をサポートするオブジェクトには@c
@code{\startTextSpan} を @code{\endTextSpan} で閉じる必要はなく、@c
ヘアピンを @code{\!} で閉じる必要もありません。
-
@seealso
内部リファレンス:
@rinternals{TextSpanner},
ベクトルの要素 3 つをすべて記述する必要がありますが、@c
それらすべてが各レイアウト オブジェクトに対して効果を持つわけではなく、@c
組み合わせによってはエラーになる場合もあります。@c
-
-even give errors. The following limitations apply:
+以下の制限があります:
@itemize @bullet
@item 小節線を行の先頭に描画することはできません。
@code{explicitClefVisibility} プロパティが@c
音部記号とそれに関連するオクターブ記号の両方を制御します。
-
@seealso
学習マニュアル:
@rlearning{オブジェクトの可視性と色}
* グラフィカル オブジェクトを垂直方向にグループ化する::
* ステンシルを変更する::
* 形状を変更する::
+* unpure-pure コンテナ::
@end menu
-
@seealso
学習マニュアル:
@rlearning{出力を調整する},
@ref{内部リファレンスの説明},
@ref{プロパティを変更する}
-インストール済みファイル:
+拡張:
+@rextend{Interfaces for programmers}
+
+インストールされているファイル:
@file{scm/define-grobs.scm}
コード断片集:
@rlsr{Tweaks and overrides}
-拡張:
-@rextend{Interfaces for programmers}
-
内部リファレンス:
@rinternals{All layout objects}
@code{break-aligned-interface} の中に特別なプロパティがあります。
@seealso
+記譜法リファレンス:
@ref{break-alignable-interface を使用する},
+
+拡張:
@rextend{Callback functions}
@menu
@c TODO Add inserting Postscript or ref to later
-
@seealso
記譜法リファレンス:
@ref{マークアップ内部でのグラフィック記譜法},
@end lilypond
@knownissues
-
同じ音楽タイミングに複数のタイあるいはスラーが存在する場合、@c
@code{control-points} プロパティを変更しても@c
それらの形状を変更することはできません。@c
内部リファレンス:
@rinternals{TieColumn}
+@cindex Scheme, pure containers (Scheme pure コンテナ)
+@cindex Scheme, unpure containers (Scheme unpure コンテナ)
+@cindex pure containers, Scheme (Scheme pure コンテナ)
+@cindex unpure containers, Scheme (Scheme unpure コンテナ)
+@cindex horizontal spacing, overriding (水平方向のスペースを上書きする)
+
+
+@node unpure-pure コンテナ
+@subsection unpure-pure コンテナ
+@translationof Unpure-pure containers
+
+unpure-pure コンテナは @emph{Y-axis} スペース - 特に @code{Y-offset} と
+@code{Y-extent} - の算出を文字 (つまり、数字やペア) ではなく、Scheme 関数で@c
+上書きする際に有用です。
+
+ある特定のグラフィカル オブジェクトでは、@code{Y-extent} は @code{stencil}
+プロパティをベースにしていて、それらの @code{stencil} プロパティを上書きする場合は
+unpure-pure コンテナで @code{Y-extent} も上書きする必要があります。@c
+関数が @code{Y-offset} と/または @code{Y-extent} を上書きした場合、@c
+その関数はコンパイルの最中に改行の算出を早すぎるタイミングで引き起こすと見なされます。@c
+そのため、その関数はまったく評価されず (通常、@samp{0} または @samp{'(0 . 0)} の@c
+値を返します)、結果として衝突を引き起こすことがあります。@c
+@q{pure} 関数はプロパティ、オブジェクト、あるいはグラフィカル オブジェクトの消失に@c
+影響を与えないため、その関数の Y-axis に関する評価は常に正しく行われます。
+
+現在のところ @q{pure} と見なされる関数が約 30 あり、Unpure-pure コンテナを用いて
+@q{pure} ではない関数を @q{pure} な関数としてセットすることができます。@c
+@q{pure} 関数は改行の @emph{前に} 評価されるため、水平方向のスペースを
+@q{正しいタイミングで} 調節することができます。@c
+@q{unpure} 関数は改行の @emph{後に} 評価されます。
+
+@warning{@q{pure} な関数を常に把握していることは困難なので、作成する @q{pure}
+関数ではグラフィカル オブジェクト @code{Beam} や @code{VerticalAlignment} を@c
+使わないことをおすすめします。}
+
+unpure-pure コンテナは以下のように構築します:
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+ここで @code{f0} は @var{n} (@var{n >= 1}) 個の引数を取る関数であり、最初の引数@c
+は常にグラフィカル オブジェクトである必要があります。@c
+これが実際に結果を返す関数です。@c
+@code{f1} は @q{pure} であると見なされる関数であり、@var{n + 2} 個の引数を@c
+取ります。@c
+@code{f1} も最初の引数は常にグラフィカル オブジェクトである必要があり、2 番目と
+3 番目の引数は @q{start} と @q{end} です。
+
+@q{start} と @q{end} は事実上、@code{Spanners} (つまり、@code{Hairpin} や
+@code{Beam}) だけで問題となるダミー値であり、
+@var{start} and @var{end} are, for all intents and purposes, dummy
+values that only matter for @code{Spanners} (i.e @code{Hairpin} or
+@code{Beam}), that can return different height estimations based on a
+starting and ending column.
+
+@code{f1} の残りの引数は @code{f0} の引数と同じです (@var{n = 1} である場合は@c
+残りの引数はありません)。
+
+関数 @code{f1} の結果は概算であり、@code{f0} が実際の値を得るのに用いられます。@c
+@code{f0} の結果はもっと後のスペースの処理で微調整に用いられます。
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+ (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+ (make-circle-stencil 0.5 0.0 #t)
+ (make-filled-box-stencil '(0 . 1.0)
+ '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+ \override NoteHead #'stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+ \squareLineCircleSpace
+ \override NoteHead #'Y-extent =
+ #(ly:make-unpure-pure-container
+ ly:grob::stencil-height
+ (lambda (grob start end) (ly:grob::stencil-height grob)))
+}
+
+\new Voice \with { \remove "Stem_engraver" }
+\relative c'' {
+ \squareLineCircleSpace
+ cis4 ces cisis c
+ \smartSquareLineCircleSpace
+ cis4 ces cisis c
+}
+@end lilypond
+
+最初の小節では unpure-pure コンテナを用いていないため、スペース算出エンジンは符頭の@c
+幅を知ることができず、符頭と臨時記号が衝突しています。@c
+次の小節では unpure-pure コンテナを用いているため、スペース算出エンジンは符頭の幅を@c
+知ることができ、それに応じて小節の幅を増やすことで衝突を回避しています。
+
+通常、簡単な計算では、unpure-pure コンテナの @q{unpure} パートと @q{pure} パート@c
+の両方に、引数の数とスコープを変えただけのほとんど同じ関数を用いることができます。
+
+@warning{@q{pure} と見なした関数が @q{pure} でなかった場合、予期しない結果となる@c
+ことがあります。}
+
@node 音楽関数を使用する
@section 音楽関数を使用する
です。
-@ignore
-共通の変数タイプについては @ref{共通の引数タイプ} で記述されています。@c
-変数タイプについてのもっと完全な記述は
-@rextend{Music function definitions} にあります。
-@end ignore
-
引数 @code{parser} と @code{location} を省略することはできず、@c
-@rextend{Music function definitions} で記述されている高度な状況で@c
+@rextend{Music functions} で記述されている高度な状況で@c
使用されることがあります。
置換関数において、必ずこれらの引数を記述してください。
@ref{Predefined type predicates} を参照してください。@c
ユーザが型述語を定義することもできます。
-
@seealso
-
記譜法リファレンス:
@ref{Predefined type predicates}
拡張:
-@rextend{Music function definitions}
+@rextend{Music functions}
インストールされているファイル:
@file{lily/music-scheme.cc},
@file{scm/lily.scm}
-@ignore
-@node 共通の引数タイプ
-@subsection 共通の引数タイプ
-@translationof Common argument types
-
-エラー チェックを考慮して、@c
-音楽関数に渡される各引数タイプを定義しておく必要があります。@c
-共通の引数タイプのいくつかを以下の表で示します。@c
-
-以下の入力タイプを音楽関数で変数として使用することができます。@c
-このリストは完全なものではありません。@c
-取り得る変数タイプについての更なる情報は、
-@rextend{Music function definitions} にあります。
-
-@multitable @columnfractions .33 .66
-@headitem 入力タイプ @tab @var{vari-type?} での記述方法
-@item 整数 @tab @code{integer?}
-@item 浮動小数点数 (10 進数) @tab @code{number?}
-@item テキスト文字列 @tab @code{string?}
-@item マークアップ @tab @code{markup?}
-@item 音楽表記 @tab @code{ly:music?}
-@item Scheme ペア @tab @code{pair?}
-@end multitable
-
-@seealso
-
-LilyPond の拡張:
-@rextend{Music function definitions}
-
-インストール済みファイル:
-@file{lily/music-scheme.cc},
-@file{scm/c++.scm}
-@end ignore
-
-
-@c ここから L3796
@node 置換関数の例
@subsection 置換関数の例
@translationof Substitution function examples
@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: 0af52987f3694217fa81c29bd4fdc0443d2fac49
+ Translation of GIT committish: 6647daf0d6c8459d2b52bfc3a2a40bad4672fc7a
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@node 紙面サイズを設定する
@unnumberedsubsubsec 紙面サイズを設定する
-@translationof Setting paper size
+@translationof Setting the paper size
紙面サイズを変更するために 2 つの関数が利用可能です:
@code{set-default-paper-size} と @code{set-paper-size} です。
@code{set-default-paper-size} は最上位スコープに配置する必要があり、@c
and @code{set-paper-size} は @code{\paper} ブロックの中に@c
配置する必要があります:
+@q{A4} が紙面サイズを明示的に設定しなかった場合のデフォルト値です。@c
+しかしながら、デフォルト値を変更するために使うことができる関数が 2 つあります。@c
+1 つは @code{set-default-paper-size} です:
@example
-#(set-default-paper-size "a4")
+#(set-default-paper-size "quarto")
@end example
+この関数は常に最上位スコープに配置する必要があります。@c
+もう 1 つは @code{set-paper-size} です:
+
@example
\paper @{
- #(set-paper-size "a4")
+ #(set-paper-size "tabloid")
@}
@end example
-@noindent
-最上位スコープにおいて、@c
-@code{set-default-paper-size} 関数はどこにあっても@c
-最初の @code{\paper} ブロックより先に安全に呼び出されます。@c
-@code{\paper} ブロック内において、@c
-最も安全に @code{set-paper-size} を呼び出せる場所はブロックの先頭、@c
-変数宣言の上です。@c
-この理由は、@ref{紙面サイズに応じた自動拡縮} で説明しています。
-
-@code{set-default-paper-size} はすべてのページのサイズをセットします。@c
-一方、@code{set-paper-size} は、@c
-その @code{\paper} ブロックが適用されたページのサイズのみをセットします。@c
-例えば、@code{\paper} ブロックがファイルの先頭にある場合、@c
-その紙面サイズはすべてのページに適用されます。@c
-@code{\paper} ブロックが @code{\book} の中にある場合、@c
-紙面サイズはその book にのみ適用されます。
-
-@code{a4}, @code{letter}, @code{legal}, それに @code{11x17}
-(タブロイド サイズとも呼ばれます)
-などの一般的な紙面サイズを利用することができます。@c
-さらに多くの紙面サイズがデフォルトでサポートされています。@c
-詳細は @file{scm/paper.scm} を参照して、@c
-@code{paper-alist} の定義を探してください。
-
-@c TODO add a new appendix for paper sizes (auto-generated) -pm
-
-@warning{デフォルトの紙面サイズは @code{a4} です。}
-
-初期ファイル @file{scm/paper.scm} の中にある
-@code{paper-alist} の定義を編集することにより、@c
-紙面サイズを追加することができます。@c
-しかしながら、追加した紙面サイズは、@c
-その後のインストールにより上書きされてしまいます。
-
-@cindex orientation (縦長の紙面)
-@cindex landscape (横長の紙面)
-
-@code{set-default-paper-size} への引数として@c
-シンボル @code{'landscape} を渡すと、@c
-ページは 90°回転し、それに応じてより長い行幅となります。
+この間数は常に @code{\paper} ブロックの中に配置する必要があります。
+
+@code{set-default-paper-size} 関数を最上位スコープで用いる場合、@c
+どの @code{\paper} ブロックよりも前に配置する必要があります。@c
+@code{set-default-paper-size} はすべてのページの紙面サイズを設定しますが、@c
+@code{set-paper-size} が設定する紙面サイズは @code{\paper} ブロックが適用@c
+されるページだけです。@c
+例えば、@code{\paper} ブロックがファイルの最上位に配置されている場合、すべての@c
+ページの紙面サイズに摘要されます。@c
+@code{\paper} ブロックが @code{\book} の中に配置されている場合、そのブックの@c
+ページだけに適用されます。
+
+@code{set-paper-size} 関数を用いる場合、同じ @code{\paper} ブロック内で@c
+用いられる他のすべての関数よりも @emph{前に} 配置する必要があります。@c
+@ref{Automatic scaling to paper size} を参照してください。
+
+紙面サイズは @file{scm/paper.scm} で定義されていて、カスタム サイズを追加する@c
+ことも可能ですが、追加後のソフトウェア アップデートにより上書きされます。@c
+利用可能な紙面サイズは @ref{Predefined paper sizes} でリスト アップされています。
+
+@c An appendix entry exists for paper sizes but is not auto-generated
+
+以下のコマンドを用いてカスタム紙面サイズを追加することができ、追加した紙面サイズは
+@code{set-default-paper-size} または @code{set-paper-size} で使用することが@c
+でいます。
+
+
+@example
+#(set! paper-alist (cons '("my size" . (cons (* 15 in) (* 3 in))) paper-list))
+
+\paper @{
+ #(set-paper-size "my size")
+@}
+@end example
+
+単位 @code{in} (インチ)、@code{cm} (センチメートル)、それに @code{mm}
+(ミリメートル) のすべてを使うことができます。
+
+@cindex paper size, orientation (紙面サイズの向き)
+@cindex page, orientation (紙面の向き)
+@cindex paper size, landscape (横向きの紙面サイズ)
+
+紙面サイズ関数にシンボル @code{'landscape} を渡すとページは 90°回転し、@c
+それに応じてより長い行幅となります。
@example
#(set-default-paper-size "a6" 'landscape)
@end example
+紙面が回転するだけで、楽譜は回転 @emph{しません}。
+
@seealso
記譜法リファレンス:
-@ref{紙面サイズに応じた自動拡縮}
+@ref{Automatic scaling to paper size},
+@ref{Predefined paper sizes}
インストールされているファイル:
@file{scm/paper.scm}
自動拡縮は起こらないということに注意してください。@c
しかしながら @code{paper-width} 変数の変更は他の値に影響を与えます
(これは拡縮とは別のことで、後で説明します)。
-@code{set-default-paper-size} é\96¢æ\95°ã\81¨ @code{set-paper-size} é\96¢æ\95°ã\81¯@c
-@ref{紙面サイズを設定する} で説明します。
+@code{set-default-paper-size} é\96¢æ\95°ã\81¨ @code{set-paper-size} é\96¢æ\95°ã\81«ã\81¤ã\81\84ã\81¦ã\81¯
+@ref{Setting the paper size} で説明します。
自動拡縮によって影響を受ける垂直方向の長さは
@code{top-margin} と @code{bottom-margin} です
@funindex ragged-last-bottom
偽に設定されている場合、最後のページでシステムはページ下端まで広がります。@c
-2 ページ以上ある楽曲では、この変数を真に設定すべきです。@c
+2 ページ以上ある楽曲では、この変数を偽に設定すべきです。@c
これは book パート
-- すなわち @code{\bookpart} ブロックによって作成された部分 --
の最後のページにも影響を与えます。
@rlsr{Spacing}
@knownissues
-
(@code{\header} ブロックによって作成された)
タイトルはシステムとして扱われます。@c
このため、@code{ragged-bottom} と @code{ragged-last-bottom} は@c
タイトルと score の最初のシステムとの間にスペースを追加します。
+明示的に定義された紙面サイズは、ユーザ定義の上または下のマージン設定を上書きします。
+
@node 可変な垂直方向の \paper スペース変数
@subsection 可変な垂直方向の @code{\paper} スペース変数
@end itemize
+複数ページの楽譜で、最後のページの楽譜がページ下端まで広がらない場合、最後の@c
+ページのスペースは前のページと同じです。
+
配列リストを変更する方法は、@ref{Modifying alists} で説明します。@c
以下の例は、連想配列を変更する 2 つの方法を提示しています。@c
最初の宣言はキー値を個別に変更していて、2 つ目は変数全体を再定義しています:
インストールされているファイル:
@file{ly/paper-defaults-init.ly}
+@knownissues
+明示的に定義された紙面サイズは、ユーザ定義の左または右のマージン設定を上書きします。
+
@node 両面モードのための \paper 変数
@unnumberedsubsubsec 両面モードのための @code{\paper} 変数
(垂直方向の) ページ スペースと (水平方向の) 行スペースの重要度の関係です。@c
大きな値だと、ページ スペースがより重要になります。@c
-デフォルトでは、@code{#10} です。
+デフォルトでは、@code{10} です。
@item print-all-headers
@funindex print-all-headers
@end table
-
@seealso
インストールされているファイル:
@file{ly/titling-init.ly}
コード断片集:
@rlsr{Spacing}
-
@knownissues
-
-
デフォルトのページ ヘッダは、@c
ページ番号と @code{\header} ブロックの @code{instrument} フィールドを@c
同一の行に配置します。
@}
@end example
-
@seealso
記譜法リファレンス:
@ref{Changing context default settings}
個々の譜に対してサイズを調整することができます。@c
個々の譜のサイズはグローバル サイズとの相対値です。
-
@seealso
記譜法リファレンス:
@ref{記譜フォント サイズを選択する}
コード断片集:
@rlsr{Spacing}
-
@knownissues
-
@code{layout-set-staff-size} は譜線の間隔を変更しません。
@code{ragged-right} や @code{ragged-last} と類似で、@c
垂直方向のスペースに対して同じ効果を持つ設定があります:
@code{ragged-bottom} と @code{ragged-last-bottom} です。@c
-これらの設定が @code{##t} にセットされている場合、@c
+これらの設定が @code{#t} にセットされている場合、@c
すべてのページあるいは最後のページのシステムは@c
ページの垂直方向全体には広がりません。@c
@ref{固定された垂直方向の \paper スペース変数} を参照してください。
@code{\noPageBreak}
@endpredefined
-
@seealso
記譜法リファレンス:
@ref{改行のための \paper 変数}
コンテキスト プロパティ @code{minimumPageTurnLength} を読み込んで、@c
どれくらい音符が無いセクションが続いたらページめくりを考慮するかを決定します。@c
@code{minimumPageTurnLength} のデフォルト値は
-@code{#(ly:make-moment 1 1)} です。@c
+@code{(ly:make-moment 1 1)} です。@c
ページめくりを不可にしたいのならば、@c
@code{minimumPageTurnLength} に非常に大きな値をセットします。
それに @code{\allowPageTurn} は、@c
最上位レベル、score や最上位のマークアップの間で使用される可能性もあります。
-
@predefined
@funindex \pageTurn
@code{\pageTurn},
@code{\allowPageTurn}
@endpredefined
-
@seealso
コード断片集:
@rlsr{Spacing}
-
@knownissues
-
score の中に配置する @code{Page_turn_engraver} は 1 つだけにするべきです。@c
複数の @code{Page_turn_engraver} がある場合、@c
互いに干渉し合います。
@}
@end example
-
@seealso
コード断片集:
@rlsr{Spacing}
}
@end lilypond
-
@seealso
コード断片集:
@rlsr{Spacing}
}
@end lilypond
-
@seealso
記譜法リファレンス:
@ref{垂直方向のスペース}
要素です。@c
@code{@var{item2}} は必ずしも @code{@var{item1}} の下にある要素ではないという@c
ことに注意してください。@c
-例えば、@code{staff-affinity} が @code{#UP} である場合、@c
+例えば、@code{staff-affinity} が @code{UP} である場合、@c
@code{nonstaff-relatedstaff-spacing} は譜ではない行から@c
上向きにスペースをとります。
@ref{可変な垂直方向の \paper スペース変数},
@ref{Modifying alists}
+インストールされているファイル:
+@file{ly/engraver-init.ly},
+@file{scm/define-grobs.scm}
+
内部リファレンス:
@rinternals{Contexts},
@rinternals{VerticalAxisGroup},
@rinternals{StaffGrouper}
-Installed Files:
-@file{ly/engraver-init.ly},
-@file{scm/define-grobs.scm}
-
@node グループ化されていない譜のスペース
@unnumberedsubsubsec グループ化されていない譜のスペース
これらの設定に適切な値を渡すことで、そのようなことは避けられます。
@end itemize
-
@seealso
コード断片集:
@rlsr{Spacing}
c''2
@end lilypond
-
@seealso
コード断片集:
@rlsr{Spacing}
各小節において、最短の演奏時間が決定されます。@c
スペースの基本として、最も共通する最短演奏時間が選択されます。@c
条件として、この最短演奏時間は常に 8 分音符以上の長さになります。@c
-@code{lilypond} を @code{--verbose} オプションを付けて実行すると、@c
+@code{lilypond} を @option{--verbose} オプションを付けて実行すると、@c
最短演奏時間が表示されます。
この演奏時間はカスタマイズすることもできます。@c
プロポーショナル ノーテーション (proportional notation) がサポートされます。@c
@ref{プロポーショナル ノーテーション} を参照してください。
-
@seealso
+Essay on automated music engraving:
+@ressay{Optical spacing}
+
コード断片集:
@rlsr{Spacing}
@rinternals{StaffSpacing},
@rinternals{NonMusicalPaperColumn}
-
@knownissues
-
スペースを手動で上書きするための、手軽な仕組みはありません。@c
余分なスペースを楽譜に挿入するために、以下の手段があります
-- 必要に応じて、パディングの値を調整しています。
+
@example
\override Score.NonMusicalPaperColumn #'padding = #10
@end example
@code{SpacingSpanner} オブジェクトを作成します。@c
そのため、その場所で新たに @code{\override} が使用される可能性があります。
-
@seealso
コード断片集:
@rlsr{Spacing}
\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] }
@end lilypond
-
@seealso
コード断片集:
@rlsr{Spacing}
@}
@end example
-
@seealso
コード断片集:
@rlsr{Spacing}
これはすべての音楽要素へのスペースに関係する参照演奏時間です。@c
LilyPond Scheme 関数 @code{make-moment} は 2 つの引数をとります
-- 全音符の分数を表す分子と分母です。@c
-それゆえ、@code{#(ly:make-moment 1 20)} という呼び出しは、@c
+それゆえ、@code{(ly:make-moment 1 20)} という呼び出しは、@c
20 分音符の参照演奏時間となります。@c
-@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, それに
-@code{#(ly:make-moment 3 97)} という値はすべてとり得る値です。
+@code{(ly:make-moment 1 16)}, @code{(ly:make-moment 1 8)}, それに
+@code{(ly:make-moment 3 97)} という値はすべてとり得る値です。
では、どのように @code{proportionalNotationDuration} に渡す@c
適切な参照演奏時間を決めるのでしょうか?@c
システムやページが改まるときに中断されることを許可します。@c
これらの設定について、本書の関連パートを参照してください。
-
@seealso
記譜法リファレンス:
@ref{新しいスペース領域}
@section 音楽を少ないページに収める
@translationof Fitting music onto fewer pages
-ときどき、譜の 1 つ、2 つが 2 番目 (あるいは、3 番目、4 番目 ...)
+ときどき、譜の 1 つ、2 つが 2 番目 (あるいは、3 番目、4 番目@dots{})
のページに配置されてしまうことがあります。@c
これは腹立たしいことです
-- 特に、前のページに十分なスペースがあるように見える場合は。
ペア (@var{a},@var{b}) は間隔を表します。@c
@var{a} は間隔の下端を、@var{b} は上端を表します。
-
@seealso
記譜法リファレンス:
@ref{譜サイズを設定する}
@rlsr{Spacing}
-@c ここから L3349
@node スペースを変更する
@subsection スペースを変更する
@translationof Changing spacing
@}
@end example
+@item
+強制的にページ数を設定する。@c
+例えば、以下の設定は強制的に 2 ページにレイアウトさせます。
+
+@example
+\paper @{
+ page-count = #2
+@}
+@end example
+
@item
オブジェクトがシステムの垂直方向のサイズを増加させるのを避ける
(あるいは減らす)。@c
@end itemize
-
@seealso
記譜法リファレンス:
@ref{ページ レイアウト},