第20章 脚注と前方フロート

fo:footnoteとfo:floatは行外オブジェクトという種類のFOである。本文の流れから外れた位置に配置するのが特徴である。fo:footnoteは脚注を設定する。fo:floatにプロパティfloat="before"を設定すると前方フロートとなる。フロートには本文の脇に配置されるサイドフロートもあるが、これについては第21章 サイドフロートで説明する。

脚注と前方フロートは設定の方法が異なるが配置方法は似ている。ページが生成されたとき、脚注は本文区画(fo:region-body)内の下部に、前方フロートは本文区画内の上部に、それぞれ脚注参照エリアまたは前方フロート参照エリアを生成する。そして、脚注とフロートの内容はその参照エリア内に配置される。そのとき、本文テキストが配置されるエリアの高さはその分だけ小さくなる。

本文テキストの配置エリアと、脚注または前方フロートの参照エリアの間に区切りを挿入できる。この区切りはfo:static-contentを使って設定する。

脚注と前方フロートの領域

図20・1 脚注と前方フロートの領域

20–1 脚注

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 脚注の組版例のようになる。

i01-image44.png

図20・2 脚注の組版例

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 前方フロートの組版例のようになる。

i01-image45.png

図20・3 前方フロートの組版例