Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt XSL-FO:如何不在最后一行开始一章_Xslt_Xsl Fo_Apache Fop - Fatal编程技术网

Xslt XSL-FO:如何不在最后一行开始一章

Xslt XSL-FO:如何不在最后一行开始一章,xslt,xsl-fo,apache-fop,Xslt,Xsl Fo,Apache Fop,我有一个包含章节和子章节的xml文档 我创建了一个XSL-FO,用ApacheFop将文档转换为PDF。在PDF中,章节总是在新页面中使用“之前打断”开始 我希望只有在至少有5-10行空闲的情况下,子章节才从一页开始:子章节不需要从新页开始,但在最后一行有标题,在下一页有第一段是很难看的 你知道怎么做吗 非常简单的XML文件示例: <document> <chapter title="Intro"> <sub-chapter title="

我有一个包含章节和子章节的xml文档

我创建了一个XSL-FO,用ApacheFop将文档转换为PDF。在PDF中,章节总是在新页面中使用“之前打断”开始

我希望只有在至少有5-10行空闲的情况下,子章节才从一页开始:子章节不需要从新页开始,但在最后一行有标题,在下一页有第一段是很难看的

你知道怎么做吗

非常简单的XML文件示例:

<document>
    <chapter title="Intro">
        <sub-chapter title="any-sub-title">
            Any text here
        </sub-chapter>
    </chapter>
</document>

这里有文本吗
XSL-FO部分:

...
<xsl:for-each select="chapter">
    <fo:block font-weight="bold" break-before="odd-page">
        <xsl:value-of select="@title"/>
    </fo:block>
    <xsl:apply-templates/>
</xsl:for-each>
...
<xsl:template match="sub-chapter">
    <fo:block font-weight="bold">
        <xsl:value-of select="@title"/>
    </fo:block>
    <xsl:apply-templates/>
</xsl:template>
。。。
...

我想你要找的是。对于孤行和孤行,可以指定块中不能单独留在一页上的行数

<fo:block widows="4" orphans="4">
   your content here.
</fo:block>

你的内容在这里。

使用
keep-together
keep-with-next
属性可能会得到类似的行为。有关快速操作方法,请参见链接。

这个问题可以理解吗?根据描述,您可能需要两者。在标题栏中将keep-with-next.in-page设置为“始终”,并在第一段栏中将寡妇/孤儿设置为合理的数字。这将把标题粘到段落上,并将段落的“X”行粘在一起。