XSL-FO目录页码在页面标题过长时左对齐。

问题描述 投票:0回答:1

我们正在使用这个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本身的问题。有什么方法可以让所有的页码都正确对齐,而不需要重新设计布局?

image of table of contents where the page titles have different lengths and the middle length has a left-aligned page number

更新了。

感谢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>
xsl-fo page-numbering
1个回答
2
投票

你基本上已经有了例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>

Formatted ToC

用AH Formatter V7. 0测试。

© www.soinside.com 2019 - 2024. All rights reserved.