我想将某些元素放在一起。据我所知,最好的方法是
keep-with-next="always"
在桌面上。
它似乎没有像我想象的那样工作。我建立了一个非常基本的测试:
<fo:table-row>
<fo:table-cell>
<fo:block>70</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>71</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>72</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>73</fo:block>
</fo:table-cell>
</fo:table-row>
导致以下分页符:
现在我想将第71和72行保持在一起。
我试图把
keep-with-next="always"
第71行。我希望第71行被推到下一页。实际发生的是,第70行也被推倒了。这是不需要的,只是以不同的方式将布局分开(另一个应该保持在一起的块是分开的。)
如何将71号线和72号线保持在一起,而单独留下70号线?
答案 0 :(得分:0)
您获得的结果不一定是错误,因为格式化程序可以根据需要自由选择分页符,只要它们尊重输入中表示的约束:在您的示例中,行# 71和#72确实按要求保持在一起。
但是,您可以使用 中断属性 强制在第70行和第71行之间分页:
<fo:table-row break-after="page">
<fo:table-cell>
<fo:block>70</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>71</fo:block>
</fo:table-cell>
</fo:table-row>
(或在下一行使用break-before="page"
)
格式化程序必须尊重所有中断属性 和尽可能多的保留属性 ({{3}部分在XSL-FO建议书中),这应该产生所需的输出;如果没有,格式化器肯定有一个错误。
关于你写的东西的另一个观察:
这是不需要的,只是以不同的方式将布局分开(另一个应该保持在一起的块是分开的。)
如果确实应该将某些内容保持在一起,我认为最好使用保持属性从开头在输入中显式设置该约束,而不是迭代地添加越来越多的属性,直到你得到了理想的结果。