
AH Formatter /
XSL Formatter
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>
|