ページヘッダー(xsl-region-before)内のすべてのコンテンツのmargin-leftとmargin-rightを設定する必要があります。すべてのヘッダーコンテンツを保持する<fo:block>に属性を追加しようとしました。ただし、マージンは子ブロックに継承されますが、これは私が望んでいることではありません。
継承せずに証拠金を設定する方法はありますか?
ページヘッダー(xsl-region-before)内のすべてのコンテンツのmargin-leftとmargin-rightを設定する必要があります。すべてのヘッダーコンテンツを保持する<fo:block>に属性を追加しようとしました。ただし、マージンは子ブロックに継承されますが、これは私が望んでいることではありません。
継承せずに証拠金を設定する方法はありますか?
回避策を見つけました:内側のブロックでマージンを負の数に設定します:
<fo:block margin-left="10mm" margin-right="10mm">
<fo:table>
<fo:table-column column-width="100%" />
<fo:table-body>
<fo:table-row>
<fo:table-cell text-align="left">
<fo:block margin-left="-10mm" margin-right="-10mm">
Some text
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
それは私の痛みです。XSL-FO を使い始める季節ごとに、この問題が発生します。
ソリューション。ずっと。
1. 外部ブロックにマージンが必要な場合(私のお気に入り)。Yobertさん、ありがとうございます。
<fo:block-container
margin-left="3pt"
margin-right="3pt"
>
<fo:block-container margin="0">
2. テーブルにマージンを設定する場合 (私はこれを行うのは好きではありませんが、チームが覚えておく必要があります)。ありがとうデビッド・マンゴン。
<fo:table
margin-left="3pt"
margin-right="3pt"
>
<fo:table-body
start-indent="0"
end-indent="0"
>
3. テーブル内の単一の具体的なセルがインデントをオーバーライドするためだけに ()。ありがとうございます。
<fo:table
margin-left="3pt"
margin-right="3pt"
>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block-container margin="0">
... content ...
4 . また、Arne Evertsson の負のマージン (彼の回答を見てください)。
5. いくつかの奇妙なケースで。パディングを使用する場合は、margin="0" を追加することを忘れないでください
<fo:block-container padding="0 3pt" margin="0">
<fo:block>
6 . 問題が発生した場合は、経験則を使用することを検討してください。親要素ではパディングを使用せず、子要素ではマージンを使用してください。あなたのレイアウトマスタリングで。
<!-- Set borders. -->
<fo:block-container xsl:use-attribute-sets="borderDefault">
<!-- It's like a padding on a parent. -->
<fo:table-and-caption margin="2pt">
このすべてのアプローチがテストされました。