如何在表中的单个单元格内将某些文本居中对齐,将某些文本右对齐,仅在XSL-FO中。
将每个文本块放在一个单独的fo:block
中。对第一个fo:block
使用text-align="center"
,对第二个使用text-align="right"
。看见https://www.w3.org/TR/xsl11/#text-对齐。
如果您确实需要在同一个fo:table-cell
中同时使用居中文本和右对齐文本,则可以在两个fo:block
元素之间使用负空格将它们明显地放在同一行:
<fo:table-cell>
<fo:block text-align="center" space-after="-14.4pt">in the center</fo:block>
<fo:block text-align="right">to the right</fo:block>
</fo:table-cell>
这应该有效(我用FOP测试了它),但它可能被认为有点肮脏;space-after
的确切值取决于第一个块的行高,默认为1.2*字体大小(本身默认为12pt),因此您可能需要根据您的具体情况计算正确的值。
然而,我认为在许多情况下,你可以只是
- 使用三列表,第一列和第三列的宽度相等
- 将居中的文本放在第二个单元格中
- 将右对齐的文本放在第三个单元格中
- 只在表行外定义一个边框,这样三个单元格在输出中显示为一个单元格
(正如Tony Graham已经评论的那样,对所需输出进行更精确的描述,或者更好的图像显示,将有助于为您的情况提出正确的答案)
使用fo:leader
(请参阅https://www.w3.org/TR/xsl11/#fo_leader)。
当在CCD_ 11上存在CCD_ 10时仅使用CCD_。
如果没有给出正确的结果,可能是因为leader-length
属性的默认.soptimal值(请参阅https://www.w3.org/TR/xsl11/#leader-长度)为12pt。在这种情况下,你可能想要这样的东西:
<fo:leader leader-length.optimum="100%" />
如果使用AH格式化程序,则可以使用axf:leader-expansion="force"
(请参阅https://www.antenna.co.jp/AHF/help/en/ahf-ext.html#axf.leader-扩张)以迫使领导者尽可能地扩张。