ページマスターはページの雛形を設定する。ページシーケンス(3–3 ページシーケンスを参照)は子孫としてテキスト・表・画像などドキュメントの内容を含むFOである。XSL-FOプロセサによる組版では、ページシーケンスの内容をページマスターに流し込んで組版済みのページを生成する。ページマスターにはページマスターには①単純ページマスター(本章で解説する)と②ページシーケンス・マスター(4–3 ページシーケンス・マスターを参照)がある。
fo:simple-page-master(単純ページマスター)はページを規定するFOである。その子供には必須のfo:region-body(本文区画)、オプションとしてregion-before(前方区画)、region-after(後方区画)、region-start(開始区画)、region-end(終了区画)が設定される。
fo:simple-page-masterの重要なプロパティはmaster-name(必須)、page-heightとpage-width、およびマージンの3種類である。他にreference-orientation(5–4 参照方向を参照)、writing-mode(5–5 ライティングモードを参照)を指定できる。
プロパティmaster-nameプロパティには単純ページマスターの名前を設定する。単純ページマスターの名前はぺージシーケンスから参照される。また、後述のfo:single-page-master-reference、fo:repeatable-page-master-reference、fo:conditional-page-master-referenceが単純ページマスターを使用するときにも参照される。
プロパティ値 | 説明 |
---|---|
<name> | (初期値は空)文字列の指定が必須である。単純ページマスターまたはページシーケンス・マスター(4–3 ページシーケンス・マスター)に適用する。名前はすべての単純ページマスターとページシーケンス・マスターを通じてユニークでなければならない。 |
ページの大きさは、ページの高さをプロパティpage-heightプロパティで、ページの幅をプロパティpage-widthプロパティで指定する。単純ページマスターに設定するページの高さとページの幅は仕上がりサイズである。
プロパティ値 | 説明 |
---|---|
auto(初期値) | ユーザーインターフェイスのウィンドウの高さまたは幅から、または媒体から設定される。媒体が不明のときは実装依存である。 |
indefinite | 未定。このときは内容の大きさから設定される。page-heightとpage-widthの両方とも未定義ではいけない。 |
<length> | 高さまたは幅を長さで指定する。 |
ページの中央にはテキストを配置する版面領域を置き、上下左右に空きをとる。それぞれをプロパティmargin-top、プロパティmargin-bottom、プロパティmargin-left、プロパティmargin-rightプロパティで指定する。この四つと次のmarginショートハンドで設定する余白を総称してマージンという。単純ページマスターのマージンにはオブジェクトを配置しないのが基本である。
プロパティ値 | 説明 |
---|---|
auto | CSSとの互換用なので、計算方法はCSSの仕様を参照のこと。 |
<length> | 初期値は0pt。上下左右のマージンを固定の長さで指定する。 |
<percentage> | 外側の領域の大きさに対する割合で示す。 |
プロパティmarginプロパティはショートハンドである。ショートハンドはCSSとの互換性のために用意されたもので指定方法はCSSと同じである。XSL-FOプロセサはマージンのショートハンドを次のように四辺に展開する(6–6 ショートハンド・プロパティを参照)。
fo:region-body(本文区画)は本文を配置する区画である。本文区画は区画の設定のみ行うもので内容はない(空要素である)。単純ページマスターのマージンの内側に配置され、本文区画の高さと幅は単純ページマスターの高さと幅から単純ページマスターのマージンを引いた値である。
さらに本文区画には上下左右にマージンを定義できる。単純ページマスターと本文区画のマージンの関係を図3・2 単純ページマスターと本文区画のマージンに示す。
本文区画の高さと幅から本文区画のマージンをとった内側が本文テキストなどを配置する領域(本文内容領域)である。つまり、ページの端から本文内容領域までの空き(距離)は、単純ページマスターのマージンと本文区画のマージンの合計となる。
本文区画の重要なプロパティには後述のregion-name(区画の名前)がある。その他のプロパティは3–2–4 区画のプロパティに一覧する。なお、XSL-FO V1.1から単純ページマスターに複数の本文区画を設定できるようになった。本書では複数の本文区画については解説しない。
本文区画の上下左右のマージンの中にオプションでfo:region-before(前方区画)、fo:region-after(後方区画)、fo:region-start(開始区画)、fo:region-end(終了区画)の四つの区画を規定できる。本文区画と四つの周囲の区画はfo:simple-page-masterの子供(区画同士は兄弟)であるが、領域の配置上は本文区画のマージン内に周囲の区画が置かれる。各区画の広さをプロパティextentプロパティで指定する。周辺区画は単純ページマスターのマージンに寄せて配置されるので、extentが本文区画のマージンの幅より小さいときは、本文内容領域と周辺区画の間に空きができる。
この図は単純ページマスターが正立で横組の区画配置である。単純ページマスターの参照方向を回転したり、ライティングモードで縦組を設定したりすると区画の配置が変わる。詳細は5–8 単純ページマスターの回転・ライティングモード適用で説明する。
プロパティ値 | 説明 |
---|---|
<length> | 初期値は0.0pt。0以上の値。マイナス値は0とする。 |
<percentage> | 区画の幅。ページの大きさに対する相対値として指定する。 |
プロパティregion-nameプロパティには区画の名前を設定する。region-nameを設定しないときは表3・6 区画名の初期値に示す初期値となる。region-nameを設定するときは名前を空にできない。
プロパティ値 | 説明 |
---|---|
xsl-region-body、xsl-region-start、xsl-region-end、xsl-region-before、xsl-region-after | 表3・6 区画名の初期値による初期値。 |
<name> | 名前の文字列。 |
区画の種類 | region-nameを指定しないときの初期値 |
---|---|
fo:region-body | xsl-region-body |
fo:region-before | xsl-region-before |
fo:region-after | xsl-region-after |
fo:region-start | xsl-region-start |
fo:region-end | xsl-region-end |
前方区画と開始・終了区画が同時に設定されているとき、または後方区画と開始・終了区画が同時に設定されているとき隅が重なる。プロパティprecedenceプロパティでどちらを優先するか設定する。
プロパティ値 | 説明 |
---|---|
trueまたはfalse(初期値) | (region-beforeとregion-after区画のみ)ページのマージン内一杯まで広がる(true)か広がらない(false)か |
本文区画と周辺区画に設定できるプロパティを表にまとめると次の通り。
プロパティ | 本文区画 | 前方区画/後方区画 | 開始区画/終了区画 | 参照箇所 |
---|---|---|---|---|
region-name | 〇 | 〇 | 〇 | |
マージン | 〇 | ― | ― | |
背景 | 〇 | 〇 | 〇 | 第9章 背景 |
extent | ― | 〇 | 〇 | |
precedence | ― | 〇 | ― | |
overflow | 〇 | 〇 | 〇 | 11–4 オーバーフロー |
clip | 〇 | 〇 | 〇 | |
display-align | 〇 | 〇 | 〇 | 5–6 ブロック方向位置合わせ |
reference-orientation | 〇 | 〇 | 〇 | 5–4 参照方向 |
writing-mode | 〇 | 〇 | 〇 | 5–5 ライティングモード |
段組 | 〇 | ― | ― | 4–6 段組 |
この他、ボーダ―(第8章 ボーダー(罫線)とパディング)、パディングは、本文区画、前方区画/後方区画、開始区画/終了区画に設定できる。しかし、XSL-FO V1.1ではこれらの幅はゼロでなければならないとされている(AH Formatter は独自拡張で罫線を評価している。)。
単純ページマスターの設定例を次に示す。次のようなページを設定している。
<fo:simple-page-master page-height="80mm" page-width="160mm" margin-top="10mm" margin-left="20mm" margin-right="20mm" margin-bottom="10mm" master-name="PageMaster1"> <fo:region-body margin-top="20mm" margin-left="20mm" margin-right="20mm" margin-bottom="20mm" background-color="#EEEEEE" display-align="center" /> <fo:region-before background-color="#BBBBBB" extent="15mm" /> <fo:region-after background-color="#BBBBBB" extent="15mm" /> <fo:region-start background-color="#E0E0E0" extent="15mm" /> <fo:region-end background-color="#E0E0E0" extent="15mm"/> </fo:simple-page-master>
組版結果は図3・4 単純ページマスターの区画設定例のようになる。
次に"PageMaster2"というページマスターでfo:region-beforeとfo:region-afterのprecedence="true"を設定する。
<fo:simple-page-master …略… master-name="PageMaster2"> <fo:region-before background-color="#BBBBBB" precedence="true" extent="15mm" /> <fo:region-after background-color="#BBBBBB" precedence="true" extent="15mm" /> …略(PageMasterと同じ)… </fo:simple-page-master> …流し込むテキスト(ページシーケンス)省略しているので注意…
“PageMaster2”では、前方区画と後方区画が優先される。
fo:page-sequence(ページシーケンス)はページマスターに流し込む内容を表す。
ページシーケンスの子供にはfo:flow(3–4 フロー内容)が必須で、オプションでfo:title(3–7 タイトル)、fo:folio-prefixとfo:folio-suffix(14–4 ページ番号への接頭辞と接尾辞)とfo:static-content(3–5 静的内容)を持てる。ページシーケンスの必須プロパティはmaster-referenceである。その他重要なプロパティはinitial-page-number、force-page-count、reference-orientation(参照方向)、writing-mode(ライティングモード)である。参照方向は5–4 参照方向、ライティングモードは5–5 ライティングモードで説明する。
プロパティmaster-reference(マスター参照)プロパティは必須のプロパティであり、ページシーケンスを流し込むページマスターの名前(master-name)を設定する。複数のページシーケンスで同じページマスターを参照できる。
プロパティ値 | 説明 |
---|---|
<name> | (初期値は空)文字列の指定が必須である。XSL-FOドキュメント内に存在するmaster-nameの値のどれかでなければならない。 |
master-referenceプロパティは、fo:single-page-master-reference、fo:repeatable-page-master-reference、fo:conditional-page-master-referenceにも設定する。
プロパティinitial-page-number(開始ページ番号)プロパティはページシーケンスの開始ページ番号を設定する。
プロパティ値 | 説明 |
---|---|
auto(初期値) | 前にページシーケンスがなければ1から。あれば、前の最後のページ番号に1を加えたページ番号から開始する。 |
auto-odd | autoと同じように開始ページ番号を計算し、偶数なら1を加える。 |
auto-even | autoと同じように開始ページ番号を計算し、奇数なら1を加える。 |
<number> | 自然数を指定する。指定したページ番号から開始する。 |
プロパティforce-page-count(ページ数強制)プロパティはページシーケンスのページ数を強制する。例えば、値に“even”を指定したとき、ページ数が奇数になったら最後に1ページを追加する。
プロパティ値 | 説明 |
---|---|
auto(初期値) | 次のページシーケンスの開始ページ番号が偶数ページであれば最後を奇数ページにする。次のページシーケンスの開始ページ番号が奇数ページであれば最後を偶数ページにする。次のページシーケンスの開始ページに制約がなければなにもしない。 |
even | このページシーケンスのページ数を偶数にする。 |
odd | このページシーケンスのページ数を奇数にする。 |
end-on-even | このページシーケンスの最終ページ番号を偶数にする。 |
end-on-odd | このページシーケンスの最終ページ番号を奇数にする。 |
no-force | 制約しない。 |
fo:flow(フロー内容)の内容は本文のブロックレベルのFOである。flow-nameには流し込み先の区画名を指定する。本文区画の名前は初期値ではxsl-region-bodyなので、本文区画の名前を明示的に変更していないときは、flow-name="xsl-region-body"とする。
fo:page-sequenceは次のような構造になる。
<fo:page-sequence master-reference="PageMaster" initial-page-number="1"> <fo:static-content flow-name="xsl-region-before"> …ヘッダーの内容… </fo:static-content> <fo:static-content flow-name="xsl-region-after"> …フッターの内容… </fo:static-content> <fo:flow flow-name="xsl-region-body"> …本文の内容… </fo:flow> </fo:page-sequence>
fo:static-content(静的内容)は、ページの柱やノンブルのような原則として多くのページで繰り返すか、一定の形式となる内容である。柱やノンブルを別々に静的内容にしていくつでも配置できる。静的内容の子供はブロックレベルのFOである。fo:static-contentにはプロパティflow-nameプロパティで流し込み先の区画の名前を指定する。
プロパティ値 | 説明 |
---|---|
<name> | (初期値は空)文字列の指定が必須である。ページシーケンス単位でユニークでなければならない。 |
flow-nameプロパティ値は静的内容またはフロー内容に対し、それを流し込む先を指定する。次の値はXSL-FO仕様で流し込み先が( )内に決まっている:xsl-region-body(本文区画)、xsl-region-before(前方区画)、 xsl-region-after(後方区画)、xsl-region-start(開始区画)、xsl-region-end(終了区画)、xsl-before-float-separator(前方フロート境界)、xsl-footnote-separator(脚注境界)
横組ページで柱をページの上、ノンブルをページの下に置く場合は次のようにする。
ページシーケンスの子供のフロー内容は本文区画に流し込む。静的内容をどの区画に流し込むかの対応付けは、プロパティflow-nameプロパティの値で設定する。
流し込み区画の対応付けはfo:flow-map(フローマップ)で明示的に設定できる。フローマップが明示されていない時は、flow-nameはそれと一致するregion-nameを持つ区画に対応付けられる。多くの場合、flow-nameの値に対応する区画のregion-nameを設定すればフローマップをユーザーが作成する必要はない。但し、複雑な流し込みの制御を行う場合は、フローマップによる対応付けが必要になる。
fo:title(タイトル)は、各ページシーケンスに見出しを付ける機能である。例えば、タイトルウインドウやツールチップにタイトルの内容を表示したりできる。