我需要设置页眉中所有内容的 margin-left 和 margin-right (xsl-region-before)。我试图将属性添加到< fo:block>这反过来包含所有标题内容。然而,边际由子块继承,这不是我想要的。
有没有办法在没有继承的情况下设置保证金?
答案 0 :(得分:3)
我找到了一种解决方法:在内部块中将边距设置为负数:
<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>
答案 1 :(得分:2)
您可以在表体元素上使用以下属性:
start-indent =“0pt”end-indent =“0pt
DMA
答案 2 :(得分:2)
这是我的痛苦。 每个季节,当我开始使用XSL-FO时,我都会遇到麻烦。
解决方案。现在和永远。
1。如果你想要一个外部块(我最喜欢的)边距。谢谢Yobert。
<fo:block-container
margin-left="3pt"
margin-right="3pt"
>
<fo:block-container margin="0">
2。如果你在桌子上设置边距(我不喜欢这样做,但我应该让我的团队记住)。谢谢David Mangon。
<fo:table
margin-left="3pt"
margin-right="3pt"
>
<fo:table-body
start-indent="0"
end-indent="0"
>
3。只是为了表中的一个具体单元格来覆盖indents()。谢谢你。
<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 =&#34; 0&#34;
<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">
所有这些方法都经过了测试。
答案 3 :(得分:1)
我能够使用两个嵌套的<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>
可能就是你想要的。