AH Formatter / XSL Formatter
Q&A



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

テーブル

トップ
基本・一般
AH Formatter について
XSL Formatter について
操作方法
プログラミング
XSLT/XSL-FO/SVG/MathML 仕様について
XSLT/XSL-FO/MathML テクニック
索引
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>

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