如何使一页上的两栏段落保持在一起



我在使用XSL-FO生成PDF时遇到了一个问题。

我有一个有两列的文档,我想把一段(如果有空间,可以从页面底部开始)放在一页上,没有任何分页符主要目的是将段落移到下一页我不能在段落之前使用声明的分页符,因为前面的内容是动态的。文本本身有一个必须保留的换行符(空白折叠=false),后面有一个跨行,使其显示在页面顶部的两列中。我已经尝试过的东西:

  • 保持一致
  • 始终在段落上,所有内容都显示在一行中。设置在行=0内保持在一起,在列=0内保持一起,所有内容(8行文本)都进入第二页的右列,但上一页的左侧有两行o_0
  • 内部分页符=在段落上避免,也会终止分栏符

必须修改以保留在一页上的段落的基本xsl-fo代码:

<fo:block font-family="Font name" font-size="8.5pt" font-weight="normal" keep-with-next.within-column="always" line-height="10.5pt" orphans="5" text-align="left" widows="5">
<fo:block white-space-collapse="false">TEXT IN TWO COLUMNS</fo:block>

我可以更改每个块的属性,但只更改第一个块将是最佳解决方案。

提前感谢:]

keep-together.within-column="always"应该在不留下孤立行的情况下为您提供所需的内容,并且它是继承的属性,因此如果在祖先块上指定,则不需要在每个块上指定它。但是,在您的代码片段中,您指定了未继承的keep-with-next=

只有部分属性被继承,而不是全部。查看我的XSL-FO书的第440/441页,在http://www.CraneSoftwrights.com/training/#pfux(请注意,页码为A4版本;请参阅美国信函版本的第438/439页)。

你试过吗

keep-with-previous.within-column="always"

它将首先检查前一列,然后根据该列进行排列。

最新更新