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> |