fo:footnoteとfo:floatは行外オブジェクトという種類のFOである。本文の流れから外れた位置に配置するのが特徴である。fo:footnoteは脚注を設定する。fo:floatにプロパティfloat="before"を設定すると前方フロートとなる。フロートには本文の脇に配置されるサイドフロートもあるが、これについては第21章 サイドフロートで説明する。
脚注と前方フロートは設定の方法が異なるが配置方法は似ている。ページが生成されたとき、脚注は本文区画(fo:region-body)内の下部に、前方フロートは本文区画内の上部に、それぞれ脚注参照エリアまたは前方フロート参照エリアを生成する。そして、脚注とフロートの内容はその参照エリア内に配置される。そのとき、本文テキストが配置されるエリアの高さはその分だけ小さくなる。
本文テキストの配置エリアと、脚注または前方フロートの参照エリアの間に区切りを挿入できる。この区切りはfo:static-contentを使って設定する。
fo:footnoteは、本文のテキストの中あるいはインラインレベルのFOが許される場所に置くことができる。但し、自分自身やfo:floatの子孫にはできない。
fo:footnoteには、二つの子供を配置しなければならない。一つはfo:inlineで、その内容は脚注の合印である。他の一つはfo:footnote-bodyで、その内容は脚注のテキストである。fo:footnote-bodyにはブロックレベルのFOを介してテキストを置く。fo:footnoteの子孫にfo:float、fo:footnote、fo:marker、絶対配置のfo:block-containerを置いてはいけない。
脚注と本文の区切領域にリーダーを置き、本文のfo:flowに脚注の内容を設定した例を示す。分かりやすくするための本文区画の内容領域を罫線で囲った。
<fo:region-body border-style="solid" border-width="0.2mm" margin-top="37pt" margin-bottom="37pt"/> <fo:page-sequence …略… widows="1" orphans="1"> <fo:static-content flow-name="xsl-footnote-separator"> <fo:block line-height="6.8pt"> <fo:leader leader-pattern="rule" leader-length="130pt" rule-thickness="0.3pt" alignment-baseline="central"/> </fo:block> </fo:static-content> <fo:static-content flow-name="xsl-region-after"> <fo:block text-align="center" font-family="MS ゴシック" font-size="9pt"> ( <fo:page-number /> ) </fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> …略… <fo:block text-indent="1em" text-align="justify"> 冊子の組版をするときは、…略… 柱・ノンブル/ページ番号 <fo:footnote> <fo:inline baseline-shift="super" font-family="serif" font-weight="normal" keep-together.within-line="always" keep-with-previous="always" font-size="6pt"> 1)</fo:inline> <fo:footnote-body> <fo:block start-indent="1em" text-indent="-1em" line-height="1.5" font-size="8pt"> <fo:inline keep-together.within-line="always" space-end="1em"> <fo:inline-container line-height="1" start-indent="0em" text-indent="0em"> <fo:block>1)</fo:block> </fo:inline-container> </fo:inline> ノンブルは各ページのヘッダーまたはフッターに置くページ番号を表示 …略… ページの順番とは一致しないことが多い。 </fo:block> </fo:footnote-body> </fo:footnote>などの多様な組版対象項目がある。 …略… 集者やデザイナーが制作者に指示する項目である。 </fo:block> <fo:block text-indent="1em" text-align="justify"> XSL-FOでは…略…</fo:block> </fo:flow> </fo:page-sequence>
組版結果は図20・2 脚注の組版例のようになる。
fo:floatは本文のテキストの中、ブロックレベルのFOあるいはインラインレベルのFOが許される場所に置くことができる。但し、自分自身やfo:footnoteの子孫にはできない。<fo:float float="before">~</fo:float>の内容はブロックレベルのFOである。但し、絶対位置指定のブロックコンテナを置いてはいけない。
前方フロートの区切りとfo:flowに前方フロートの内容を設定した例を示す。
<fo:page-sequence …> <fo:static-content flow-name="xsl-before-float-separator"> <fo:block border-bottom="solid 0.1pt gray"></fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block text-align="justify" text-indent="1em" > ページシーケンスが切り替わるとページマスターが切り替わり改ページが行われる。それだけではなく、force-page-count=”even”でページ数を偶数にする、initial-page-number=”1”でページ番号の付け方を指定している。こうして組版結果のPDFは次のようになる。表紙のページシーケンスの制約条件として偶数を指定しているので、2ページ目が空白となる。3ページ目から本文が始まり、フッターのページ番号は1となる。 </fo:block> <fo:float float="before"> <fo:block text-align="center"> <fo:external-graphic src="Sample3PDF.PNG" /> </fo:block> <fo:block text-align="center">図 先頭の3ページ</fo:block> </fo:float> <fo:block text-indent="1em" >図に続く文章……</fo:block> … </fo:flow> </fo:page-sequence>
組版結果は図20・3 前方フロートの組版例のようになる。