是否可以阻止文档新页面顶部的文本缩进变量?
代码:
<xsl:template match="paragraph">
<fo:block text-indent="10pt">
<xsl:value-of select="."/>
</fo:block>
</xsl:template>
新页面:
XXXXXXX
而不是:
text-indent xxxxxxx
为了避免在章节的第一段中使用文本缩进,我使用了下面的代码,但这对我在新页面上的文本缩进没有帮助:
<xsl:template match="paragraph">
<xsl:choose>
<xsl:when test="fn:position() = 1">
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block text-indent="10pt">
<xsl:value-of select="."/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
谢谢!
答案 0 :(得分:2)
据我所知,在实际的FO处理发生之前,无法确定分页符的存在和位置。 1
原因如下。在XSL-FO中,您不是在建模页面。而是定义流和区域,其中允许文本“流动”。由FO处理器决定如何将内容分成页面。
这样做的结果是事先无法获得某些类型的信息,例如您要查找的Is there going to be a page-break?
信息,或者突出显示number of pages。
另一方面,您可以轻松控制何时应始终插入分页符。如果您在fo:block
元素上指定page-break-after或page-break-before,则至少可以确保每章的第一段开始于新页面。
<fo:block page-break-before="always">Chapter title</fo:block>
这样,作为一个小小的安慰,如果它与新章节重合,则会忽略新页面上第一段的缩进。
1 请注意,我们讨论的是FOP
在没有用户干预的情况下自动引入的分页符。