XSL-FOでは、fo:list-block(リストブロック)で箇条書きのブロック全体をグループ化する。fo:list-blockの子供として、fo:list-item(箇条項目)を項目数分繰り返し、各fo:list-itemの中にfo:list-item-label(リストのラベルを表示する部分)とfo:list-item-body(リストの本体を表示する部分)をペアで配置する。
注意すべき点が二つある。
プロパティprovisional-distance-between-startsは、リストのラベルの開始位置と本体の開始位置の間隔を設定する。プロパティprovisional-label-separationは、ラベルの終了位置と本体開始位置の間の空きを設定する。この二つの設定値は後述のbody-start()、label-end()という二つの関数のためのパラメータとして使われる。
プロパティ値 | 説明 |
---|---|
<length> | リストのラベル開始位置と本体開始位置の間の間隔。初期値は24.0pt。 |
<percentage> | 直近の先祖であるブロックエリア(ラインエリアを除く)の幅に対する割合。 |
プロパティ値 | 説明 |
---|---|
<length> | リストのラベル終了位置と本体の終了位置の間の間隔。初期値は6.0pt。 |
<percentage> | 直近の先祖であるブロックエリア(ラインエリアを除く)の幅に対する割合。 |
リストラベルの開始位置と終了位置はfo:list-item-labelのstart-indentとend-indentで指定する(XSL V1.1仕様書では、6.8.4 fo:list-item-body、6.8.5 fo:list-item-labelではインデントが適用対象にリストされていない。しかし、仕様書のサンプルではfo:list-item-labelとfo:list-item-bodyに指定している。)。開始位置はリストブロックを含む参照エリアの開始辺を基準に直接指定する。終了位置はend-indent="label-end()"としてXSL-FOプロセサに計算させる。
リスト本体の開始位置と終了位置はfo:list-item-bodyのstart-indentとend-indentで指定する。start-indent="body-start()"としてXSL-FOプロセサに計算させる。終了位置はリストブロックを含む参照エリアの終了辺を基準に直接指定する。
<fo:list-block provisional-distance-between-starts="15mm" provisional-label-separation="5mm"> <fo:list-item> <fo:list-item-label start-indent="4mm" end-indent="label-end()"> <fo:block>•</fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()" end-indent="50mm"> <fo:block>※※※※※※※※※※※</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label start-indent="4mm" end-indent="label-end()"> <fo:block>•</fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()" end-indent="50mm"> <fo:block>********************************************</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>
組版結果は次のようになる。
箇条書きの項目にはプロパティrelative-alignプロパティを適用できる。
プロパティ値 | 説明 |
---|---|
before | fo:list-item-labelによって生成される最初のエリアの前方辺と、fo:list-itemによって生成されるエリアの前方辺が一致する。また、fo:list-item-bodyによって生成される最初のエリアの前方辺と、fo:list-itemによって生成されるエリアの前方辺が一致する。 |
baseline | fo:list-item-labelによって生成される最初の行エリアのベースラインとの距離と、fo:list-item-bodyによって生成される最初の行エリアのベースラインとの距離が一致する。加えて、最初のエリアのうち一つの配置矩形の前方辺はfo:list-itemの内容領域の前方辺に一致しなければならない。 |