(a) 簡単なページレイアウト
簡単なページレイアウトには単純ページ列流し込みオブジェクトクラスの特質を使います。
用紙サイズは幅、高さを指定して決めます。
- page−width:ページの幅
- page−height: ページの高さ
ページ枠の大きさと配置は、余白を指定して決めます。
- top−margin:上余白
- bottom−margin:下余白
- left−margin:左余白
- right−margin:右余白
ヘッダ・フッタの配置は上端または下端からの距離を指定して決めます。
- header−margin:ヘッダの上余白
- footer−margin:フッタの下余白
ヘッダ・フッタを表示するには内容となる行内流し込みオブジェクトを指定します。
- left−header: ヘッダ左部分の内容
- center−header: ヘッダ中央部分の内容
- right−header: ヘッダ右部分の内容
- left−footer: フッタ左部分の内容
- center−footer: フッタ中央部分の内容
- right−footer: フッタ右部分の内容
(b) 柔軟なページレイアウト
自由度の高いページレイアウトは、ページ列流し込みオブジェクトクラスのページモデルを使うことによって実現できます。ページモデルは、ページ区画の大きさと配置を決定します。ページ区画は、「DSSSLの組版」で説明した領域コンテナに当たるものです。ページモデルは複数のページ区画を指定して柔軟なレイアウトを実現します。
<1>ページモデル
ページモデルはプロシージャが階層構造になっているものです。複雑に見えますが、分解すればすべて式言語の(プロシージャ名引数)という形式で個々の値を指定することになります。以下にページモデルの形式を示します。[ ]の中は指定する値のデータ型です。
(define−page−model [page−model−name] ページモデル名 (region ページ区画の指定(1つ以上) (x−origin [length]) 起点のx座標 (y−origin [length]) 起点のy座標 (width [length]) 幅 (height [length]) 高さ (decorate [sosofo]) 修飾領域の内容オブジェクト (filling−direction [symbol]) 流し込み方向 (header ヘッダ部の指定 (width [length]) 幅 (height [length]) 高さ (filling−direction [symbol]) 流し込み方向 (contents−alignment [symbol]) 内容の揃え方 (generate [sosofo]) 内容オブジェクト ) (footer フッタ部の生成領域の指定 (width [length]) 幅 (height [length]) 高さ (filling−direction [symbol]) 流し込み方向 (contents−alignment [symbol]) 内容の揃え方 (generate [sosofo]) 内容オブジェクト ) (flow [port−specifier]) 内容オブジェクト(1つ以上) ) (width [length]) ページの幅 (height [length]) ページの高さ (filling−direction [symbol]) ページ全体の流し込み方向 (decorate [sosofo]) 修飾領域の内容オブジェクト )
以下の図に、ページモデルの中でどのような指定をするかを示します。
<2>ページ列流し込みオブジェクトの特質
以下の特質はページモデルのリストを指定します。
- initial−page−models:初期ページのページモデルのリスト
- repeat−page−modelss:初期ページに続くページのページモデルのリスト
- デフォルトlist()(指定するページモデルなし)
以下の特質は一連のページの最初または最後に、丁の表裏どちらを使うかを指定します。
- force−last−page:ページ列の最後のページが表か裏か
- force−first−page:ページ列の最初のページが表か裏か
- デフォルト#f(どちらでも構わない)
- front(表ページ)
- back(裏ページ)
通常、force−first−page:は直前のページ列のforce−last−page:と反対の型になります。つまり、直前のページ列の最後が表であれば、次のページ列の最初は同じ丁の裏ページになります。force−first−page:に直前のページ列の最後のページと同じ型を指定した場合には、直前のページ列に空白ページが自動的に追加されます。これは改丁が行われるということです。
以下の特質はページ列の最初のページが表裏どちらであるかを指定します。
- first−page−type:ページ列の最初のページが表か裏か
- デフォルトparent(親(ルートのみ)のオブジェクトによって判定)
- front
- back
この特質は最初のページの型を表すだけです。指定に合わせるための自動改丁は行われません。
以下の特質はページ列の最後に要求された表または裏ページのページモデルを指定します。
- blank−back−page−model:force−last−page:で要求された最後の裏ページのページモデル
- blank−front−page−model:force−last−page:で要求された最後の表ページのページモデル
- デフォルト#f(通常のページモデルを使う)
以下の特質は見開きの左ページと右ページの内容の長さを揃えるために指定します。
- justify−spread?:ページ内容の長さを見開き2ページで揃えるかどうか
- デフォルト#f(揃えない)
以下の特質は製本することを意識して、どの辺を綴じ込むかを指定しておきます。
- binding−edge:表ページを基準として、どの端を綴じるか
- デフォルトleft
- right
- top
- bottom
(c) 段組み
段組みを実現するには、段集合列流し込みオブジェクトクラスの段集合モデルを使います。1つの段集合が1つの行外領域に当たります。段集合モデルは、複数の段集合がそれぞれに生成する領域の階層構造を表します。段集合はページモデルで指定するページ区画の中に入ります。段の中にさらに複数の段がある入れ子の段組みは、段集合を別の段集合の中に含めることによって実現できます。
段集合モデル
(define−column−set−model [column−set−model−name] 段集合モデルを識別する名前 (fill−out [boolean]) 領域いっぱいまで流し込むかどうか (tie [column−subset−spec column−subset−spec]) 2つ以上の段部分集合を結合する (filling−direction [symbol]) 内容の流し込み方向 (width [length]) 段集合領域の幅 (height [length]) 段集合領域の高さ (decorate [sosofo]) 修飾領域 (column−subset 段部分集合の指定 (flow ([port−specifier] [zonename])) 内容オブジェクト 区域名 (top−float−space−below [display−space]) 上部浮動区域の下のスペース (bottom−float−space−above [display−space]) 下部浮動区域の上のスペース (balance? [boolean]) 段部分集合の最後を揃えるか (justify? [boolean]) 段を両端揃えするか (justify−limit [number]) 両端揃え可能なスペースの上限率 (justify−last−limit [number]) 同上(最後の段集合の段に対して) (length−deviation [length]) 段と段の長さの差の上限値 (length−decrease−order [symbol | #f]) 段長を短くする順 (align−lines? [boolean]) 隣の段と行を揃えるか (column 段の指定(2つ以上) (width [length]) 段の幅 (height [length]) 段の長さ (x−origin [length]) 起点のx座標 (y−origin [length]) 起点のy座標 (footnote−separator 脚注区域との区切り指定 (generate [sosofo]) 内容オブジェクト (width [length]) 幅 (height [length]) 高さ (filling−direction [symbol]) 流し込み方向 (contents−alignment [symbol]) 内容の揃え ) (header ヘッダ部の指定 (generate [sosofo]) 内容オブジェクト (width [length]) 幅 (height [length]) 高さ (filling−direction [symbol]) 流し込み方向 (contents−alignment [symbol]) 内容の揃え ) (footer フッタ部の指定 (generate [sosofo]) 内容オブジェクト (width [length]) 幅 (height [length]) 高さ (filling−direction [symbol]) 流し込み方向 (contents−alignment [symbol]) 内容の揃え ) ) ) )
以下の3図に、段部分集合の段長に関する指定を示します。
(balance?)は、段部分集合内で段長を揃えるかどうかを指定します。
(length−deviation)は、段長を揃えるために段長の差の上限値を指定します。
(length−decrease−order)は、段長に差ができる場合に段長を短くする順を前からにするか後ろからにするかを指定します。
以下の図に、段の指定の内容を示します。
<2>段集合列流し込みオブジェクトの特質
- column−set−model−map:段集合モデルを流し込む先のページモデルを指定
- デフォルトlist()
段集合列をページ区画に流し込む際に、どのページモデルのページ区画にどの段集合モデルの段集合列を入れるかを決めておく特質です。指定した段集合モデルが使えない場合は特質column−set−model:で指定するデフォルトの段集合モデルを使います。
- column−set−model:デフォルトの段集合モデル
- デフォルト#f(デフォルトを用意しない)
<3>段集合に関連する共通特質
- position−preference:
- デフォルト#f(制限しない)
- top(上部浮動区域だけに流し込む)
- bottom(下部浮動区域だけに流し込む)
段集合モデルで上部浮動区域と下部浮動区域の両方へ流し込むと指定したオブジェクトをどちらか一方にだけ流し込むと制限する特質です。
- span:オブジェクトが抜く段の数
- デフォルト1
- span−weak?:オブジェクトが弱い段抜きを行うかどうか
- デフォルト#f(強い段抜きを行う)
- #t(弱い段抜きを行う)
段抜きに関する指定を行う特質です。段抜きとは、1つのオブジェクトを複数の段にまたがって配置することです。強い段抜きとは、段抜き可能な段ならばspan:で指定された数だけ段抜きするもので、弱い段抜きとは流し込み方向で直前の段のみを段抜きするものです。