我必须修改xsl-fo模板,我对此非常陌生,希望任何人都能在这一步上帮助我。一个请求是关于孤立元素,取决于段落的行数。有类似于此的列表项
Topic Text
1. List entry (first)
...
x. List entry (penultimate)
y. List entry (last)
请求如下:如果x
和y
之间存在分页符,则如果列表条目在pdf输出中至少有3行,则最后一个列表条目必须仅在下一页上。若x
的行数少于3行,则y
也必须在下一页上。像这样:
widow = 2 if last list entry < 3 lines else widow = 1
xsl-fo使用Antenna House格式化程序,这可能吗?你能告诉我在哪里可以找到更多的信息吗?提前感谢
基督徒编辑:我到处玩,但我没能找到一个解决方案来计算最后一个节点的行数。所以我找不到检查最后一个节点的方法。
代码片段:
<xsl:otherwise>
<fo:block background-color="{$color}">
<xsl:if test="$myId != ''"><xsl:attribute name="id"><xsl:value-of select="$myId"/></xsl:attribute></xsl:if>
<!-- full width for AnnexTemplate -->
<xsl:if test="($parent = $AnnexTemplate)"><xsl:attribute name="start-indent">-<xsl:value-of select="$leftIndent"/>mm</xsl:attribute></xsl:if>
<xsl:call-template name="insertParaAttributes"><xsl:with-param name="stylename" select="$style"/></xsl:call-template>
<!-- text before table -->
<xsl:if test="following-sibling::table"><xsl:attribute name="keep-with-next">10</xsl:attribute></xsl:if>
<xsl:call-template name="dummy"/>
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
以及附加的输出。输出希望这有助于更好地应对。
在我理解描述的范围内,选项包括:
- 倒数第二个列表条目上的
orphans="3"
(http://www.w3.org/TR/xsl11/#orphans) - 倒数第二个列表条目上的
keep-with-next.within-page="always"
(http://www.w3.org/TR/xsl11/#keep-下一个) - 倒数第二个列表条目上的
keep-with-next.within-page
的整数值和包含fo:list-block
的较低keep-together.within-page
的值,不过您必须进行实验才能确定它是否有效