我需要在页眉(xsl-region-before)中设置所有内容的左边距和右边距。我试图将该属性添加到 <fo:block> 中,该属性又包含所有标题内容。然而,边距被子块继承,这不是我想要的。
有没有办法在不被继承的情况下设置边距?
我需要在页眉(xsl-region-before)中设置所有内容的左边距和右边距。我试图将该属性添加到 <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. 如果你想要外部块的边距(我最喜欢的)。谢谢约伯特。
<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">
所有这些方法都经过测试。
您可以在表格主体元素上使用以下属性:
开始缩进=“0pt” 结束缩进=“0pt”
DMA
我能够使用两个嵌套<fo:block-container>
元素来解决这个问题。
<fo:block-container margin-left="1in">
<fo:block-container margin-left="0in">
...stuff...
</fo:block-container>
</fo:block-container>
它之所以有效,是因为内部块容器现在以 0 的边距传递给它的孩子。
我还没有尝试过,<fo:block>
但我敢打赌它也可以在那里工作。 <fo:block-container>
可能是你想要的。