我们正在使用这个XSL-FO来生成目录页的条目。
<fo:block text-align-last="justify">
<xsl:value-of select="@title" />
<fo:leader leader-pattern="dots" />
<fo:page-number-citation ref-id="{@id}" />
</fo:block>
当页面的标题很长时,页码会被移到新的一行。如果页面标题足够长,就会把页码移到新的行上。而不是 足够长的时间来进入一个新的行,页码会被左对齐,而它应该是右对齐的。
据我所知,XML是正确的,这是XSL-FO本身的问题。有什么方法可以让所有的页码都正确对齐,而不需要重新设计布局?
更新了。
感谢Tony Graham的回复,不幸的是,由于某些原因,我似乎并没有这样做。在应该有一个单一的连续领导的行上,我最终会有两组领导点被一个小的间隙分开,我无法摆脱。但它确实启发了这个对我来说足够好用的解决方案。
<fo:block text-align-last="justify">
<xsl:value-of select="@title" />
<fo:leader leader-pattern="dots" />
<fo:page-number-citation keep-with-previous="always" ref-id="{@id}" />
</fo:block>
你基本上已经有了例1,例3,例5的内容了 axf:leader-expansion
文件在 https:/www.antenna.co.jpAHFhelpv70eahf-ext.html#axf.leader-expansion
正如其他人所指出的,你不可能用vanilla XSL-FO处理所有可能的ToC或索引变体,但你可以实现你所展示的样本的结果。
<fo:flow flow-name="xsl-region-body"
leader-alignment="reference-area"
text-align-last="justify">
<fo:block>Page with very short title<fo:leader leader-pattern="dots" keep-with-previous.within-line="always" /><fo:leader leader-pattern="dots" />3</fo:block>
<fo:block>Page with very very very very very very very very long title<fo:leader leader-pattern="dots" keep-with-previous.within-line="always" /><fo:leader leader-pattern="dots" />4</fo:block>
<fo:block>Page with very very very very very very very very very very very very long title<fo:leader leader-pattern="dots" keep-with-previous.within-line="always" /><fo:leader leader-pattern="dots" />5</fo:block>
</fo:flow>
用AH Formatter V7. 0测试。