AH Formatter / XSL Formatter
Q&A



XSLT/XSL-FO/SVG/MathML 仕様について

XSL-FO

トップ
基本・一般
AH Formatter について
XSL Formatter について
操作方法
プログラミング
XSLT/XSL-FO/SVG/MathML 仕様について
XSLT/XSL-FO/MathML テクニック
索引
Q.  次のコードのように、fo:flowstart-indent="5cm" を指定して、fo:float 内の fo:blockstart-indent="0cm" margin-left="1cm" を指定しました。私はこの指定によって、fo:flowstart-indent が "0cm" になり、それに margin-left="1cm" が加わって、結果として "1cm" のインデントが表示されるものと考えましたが、XSL Formatter の組版結果では、"6cm" のインデントとなっています。どのように計算するのでしょうか。
<fo:flow flow-name="xsl-region-body" start-indent="5cm" ...>
  <fo:float float="start">
    <fo:block start-indent="0cm" margin-left="1cm">
      <fo:block>XSL Formatter</fo:block>
    </fo:block>
  </fo:float>
[No.2005031801]
A. 

まず、margin-leftstart-indent が同時に指定されているとき、start-indent の指定は無視されます(関連資料: [No.2005021801] )。そして、start-indentW3Cの勧告5.3.2 Margin, Space, and Indent Properties にある次の式("the formatting object does not generate a reference area" の条件のもの)で計算されます。

start-indent = inherited_value_of(start-indent) + margin-corresponding + padding-corresponding + border-corresponding-width

ご質問のコード の場合、inherited_value_of(start-indent) には fo:flow に指定されている start-indent="5cm"margin-correspondingfo:block に指定されている margin-left="1cm" が該当します。padding も border も無いので、インデントは "6cm" となります。


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