如何在表格中的单个单元格内将某些文本居中对齐而将某些文本居中对齐

时间:2019-01-08 13:06:51

标签: xsl-fo

如何在表格的单个单元格内的同一行中将某些文本居中对齐,而将某些文本向右对齐仅在XSL-FO中。

3 个答案:

答案 0 :(得分:0)

将每个文本块放在单独的fo:block中。在第一个text-align="center"上使用fo:block,在第二个text-align="right"上使用。参见https://www.w3.org/TR/xsl11/#text-align

答案 1 :(得分:0)

使用fo:leader(请参阅https://www.w3.org/TR/xsl11/#fo_leader)。

<fo:leader />上有text-align="justify"时仅使用fo:block即可。

如果未给出正确的结果,则可能是因为leader-length属性(请参见https://www.w3.org/TR/xsl11/#leader-length)的默认.optimum值为12pt。在这种情况下,您可能想要类似的东西:

<fo:leader leader-length.optimum="100%" />

如果您使用的是AH Formatter,则可以使用axf:leader-expansion="force"(请参阅https://www.antennahouse.com/product/ahf66/ahf-ext.html#axf.leader-expansion)来强制领导者尽可能地扩展。

答案 2 :(得分:0)

如果您确实需要在同一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 * font-size(其自身默认为12pt),因此您可能必须针对特定情况计算正确的值。

但是,我认为在许多情况下您可以

  1. 使用3列表格,其中第一个和第三个表格的宽度相同
  2. 将居中文本放在第二个单元格中
  3. 将右对齐的文本放在第三个单元格中
  4. 仅在表格行的外部定义边框,因此三个单元格在输出中显示为单个。

(正如Tony Graham所说的那样,对所需输出的更精确描述,或者甚至更好地显示它的图像,将有助于为您的情况提供正确的答案)