AH Formatter / XSL Formatter
Q&A



XSLT/XSL-FO/MathML テクニック

フロート

トップ
基本・一般
AH Formatter について
XSL Formatter について
操作方法
プログラミング
XSLT/XSL-FO/SVG/MathML 仕様について
XSLT/XSL-FO/MathML テクニック
索引
Q.  本文エリアのテキストとfloat内のテキストの間をあけたいのですが、どうすればよいですか。 [No.2002101803]
A. 

例を挙げてみます。次のようなFOを記述した場合、本文エリアのテキストとfloat内のテキストが、隣同士になってしまいます。

<fo:float float="start">
  <fo:block-container>
    <fo:block border-style="solid" border-color="black" border-width="1pt">
      <fo:block  start-indent="1em" text-align="justify">
        フロートその1です。フロートその1です。フロートその1です。
      </fo:block>
    </fo:block>
  </fo:block-container>
</fo:float>

そこで、下記のようにfloatの子要素のblockにインデントを指定することで、間をあけることができます。

例では「fo:float float="start"」ですので、子要素のblock-containerに「end-indent」を指定します。

<fo:float float="start">
  <fo:block-container end-indent="1em">
    <fo:block border-style="solid" border-color="black" border-width="1pt">
      <fo:block  start-indent="1em" text-align="justify">
         フロートその1です。フロートその1です。フロートその1です。
      </fo:block>
    </fo:block>
  </fo:block-container>
</fo:float>

下記は「fo:float float="end"」に、「start-indent」を指定しています。注意する点ですが、block-containerにstart-indentを指定していますが、その子要素のblockで再度start-indentによって文字揃えを行っています。このままですと、block-containerで指定したstart-indentの継承が切れてしまいますので、inheritを使用して以前のインデント値を加えています。

<fo:float float="end">
  <fo:block-container start-indent="1em">
    <fo:block border-style="solid" border-color="black" border-width="1pt">
      <fo:block start-indent="1em+inherit" text-align="justify">
        フロートその2です。フロートその2です。フロートその2です。
      </fo:block>
    </fo:block>
  </fo:block-container>
</fo:float>

Copyright © 1999-2011 Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.