0

在 XSL-FO 中,将纯文本与文档右侧对齐很容易。但是,事实证明,将整个表格与文档的右侧对齐是相当困难的。

我想做的是这样的:

fo:table align=left

{Table content}

/fo:table

而且我知道有一个<fo:float>对象,但它似乎没有按我想要的方式工作,或者如果确实如此,那么在我能够找到的每个实例中,对它如何工作的解释都措辞不佳.

简而言之:如何使表格在 XSL-FO 中向左浮动?

编辑:我已经弄清楚为什么 Float 不起作用。显然,我们的 Apache FOP 版本不支持它。任何已知的替代方案?

4

2 回答 2

3

术语“浮动”在 XSL-FO 中具有特定含义。如果您的意思是将表格从垂直流中取出,将其放在页面的开头,并让其余的流程继续在表格的结尾,那么<float float="start"><table>...</table></float>就是在 XSL 中执行此操作的方法-FO。

您的问题的标题和文字谈到浮动到“右侧”,所以我假设您的意思是浮动到页面的末端。那当然是<float float="end">

如果您不打算将表格从流中取出,而是希望简单地使表格流动并在页面的末端对齐表格,这在 XSL-FO 中通过使用<table-and-caption text-align="end">然后不使用标题。但并非所有商业 XSL-FO 引擎都支持这方面的规范。

我无法就 FOP 向您提供建议,因为它不是我为任何客户使用过的工具。

于 2013-07-29T15:34:26.153 回答
0

经过一些实验,我想出了一个解决方案。至少可以说,这很不优雅,但它确实有效。这将生成一个右调整 7cm 的表格,其中包含 3cm 列和 5cm 列,尽管它会阻止用户在表格左侧写入任何内容,除非非常仔细地格式化为空白的 7cm 列。

fo:table width="15cm"
fo:table-column column-width="7cm"/
fo:table-column column-width="3cm"/
fo:table-column column-width="5cm"/
fo:table-row
fo:table-cell border="none"
[Intentionally left blank]
/fo:table-cell
fo:table-cell border="solid"
[Content of 3cm column]
/fo:table-cell
fo:table-cell border="solid"
[Content of 5cm column]
/fo:table-cell
/fo:table-row
/fo:table

请注意,这有一些缺陷(无法在不为每一行明确格式化的情况下写入表的左侧,非常不优雅),但它可以作为 Apache FOP 中的解决方案。

于 2013-07-29T16:16:52.673 回答