' break-after'的确切含义是什么?在XSL-FO文档中?

时间:2016-06-22 14:24:36

标签: xml xsl-fo

我试图最好地描述属性break-after对具有多个段落的双列页面布局的影响:

<fo:block text-align="justify" font-size="14pt" break-after="column">
    <fo:block space-after="0.1in">In 294 BC, the people...</fo:block>
    <fo:block space-after="0.1in">The Colossus was built...</fo:block>
    <fo:block space-after="0.1in">The statue was toppled....</fo:block>
    <fo:block space-after="0.1in">The statue remained on....</fo:block>
</fo:block>

如果我只看过这段代码生成的页面(而不是代码本身),并且被要求描述布局算法我只是说它用尽可能多的文本填充第一列在将剩余文本放在第二列之前,尽可能。

enter image description here

在我看来,这几乎描述了正在发生的事情,但我无法将此描述与break-after="column"的含义相协调。例如,break-after向我建议,列断点应仅在段落之后发生,但这显然不会发生什么 - 在这个小文档中,它们经常出现在段落的中间。

任何人都可以更准确地描述这种布局算法,并参考break-after="column"的确切含义吗?

  

以下是我使用的documents(。fo文件及其生成的pdf)。请注意,这些材料来自Kevin Howard Goldberg的 XML:QuickStart Guide 一书

2 个答案:

答案 0 :(得分:2)

具体针对您的样本,您的问题以及您提出的问题......&#34;阻止&#34;那些具有break-after =&#34;列&#34; applied是一个块,里面包含四个额外的块。

添加break-after =&#34;列&#34;在这个容器块上意味着字面意思,&#34;在这个块的末尾打破下一列。&#34;所以在你的情况下,你有四个块流动(无论这四个内容块是否导致它们自己的列断裂都没关系)。它们正在流入两列布局,因为(显然)您的页面有两个为流区域指定的列。

当格​​式化程序完成那些面粉块的内容时,最后一个以&#34开头;雕像仍在......&#34;它完成了你指定break-after =&#34; column&#34;的包含块的内容。

因此,格式化程序为其他内容注入了一个列分隔符。在这种情况下,您处于两列布局的第二列,因此打破下一列意味着转到下一页。因此,该块后面的内容开始在下一列的顶部。

属性break-after =&#34;列&#34;与此处或那里或任何东西无关,它只是指示格式化程序在我指定的元素的末尾,跳转到下一列并放下更多的东西。它不是遗传的,也不会以任何方式改变孩子们的行为。

如果你想将它简化到第n度......这真的意味着当你遇到&lt; / block&gt;在我指定的位置,跳转到下一列并从更多内容开始。

答案 1 :(得分:-2)

&#34; 在将剩余文本放入第二列之前,它会用尽可能多的文本填充第一列。&#34;几乎是发生了什么。将字符转换为字形,将字形组合成行,将行拟合到块区域以及跨页面打破块区域的工作由XSL格式化程序决定。属性在您的FO中的作用是指定XSL Formatter必须遵循的约束。例如,page-widthpage-heights是对页面大小的限制(并且它们已包含在https://www.w3.org/TR/xsl11/#fo_simple-page-master的&#39;约束&#39;部分中)。

keep- *和break- *属性也是XSL Formatter必须遵循的约束。有关它们如何应用和交互的详细信息,请参见XSL 1.1(https://www.w3.org/TR/xsl11/#keepbreak)的第4.8节“保持和中断”。如果您没有指定中断,则不会强制中断,并且XSL Formatter将根据其他适用的约束进行最佳操作。也就是说,break-beforebreak-after的默认值均为auto,而autohttps://www.w3.org/TR/xsl11/#break-before)的break-before定义为& #34;不得强行休息&#34;。该定义也有这样的说明:

  

分页符可能由格式化程序的处理决定,因为&#34; widow&#34;,&#34; orphan&#34;,&#34; keep-with-next&#34 ;,&#34;保持与先前的&#34;,&#34;保持在一起&#34;属性。