Q. |
テーブルセル内に fo:inline を作成したところ、テーブルセルがページの右側にはみ出てしまいます。どこに問題があるのですか。
[No.2003011705]
|
A. |
XSL-FOには次のようになっていました。
<fo:table-cell margin-top="10pt" margin-bottom="10pt" font-weight="bold">
<fo:block text-align="justify" keep-together="always">
アーク放電
</fo:block>
<fo:block text-align="justify" keep-together="always">
<fo:inline font-weight="bold">
気体放電の一つ。電流が両極間の気体中を大きな密度で流れ、強い発熱と発光を伴う。
</fo:inline>
</fo:block>
</fo:table-cell>
fo:block に keep-together="always" が指定されています。keep-together は
'within-page'、'within-column'、'within-line' のコンポーネントを持っていますので、keep-together="always" とすると、このみっつに "always" を指定したことになり、keep-together.within-line="always"となります。
そして、この指定は fo:inlineに継承されます。
したがって、fo:inline の文字を1行で表そうとしますので、結果、テーブルセル幅が広がり、ページ幅によってはテーブルセルがはみ出してしまうのです。
このような場合は次のように、keep-together.within-page="always" と指定すればページ幅内に収まるでしょう。
<fo:table-cell margin-top="10pt" margin-bottom="10pt" font-weight="bold">
<fo:block text-align="justify" keep-together.within-page="always">
アーク放電
</fo:block>
<fo:block text-align="justify" keep-together.within-page="always">
<fo:inline font-weight="bold">
気体放電のひとつ。電流が両極間の気体中を大きな密度で流れ、強い発熱と発光を伴う。
</fo:inline>
</fo:block>
</fo:table-cell>
|