这种情况: 我将html转换为xsl-fo格式为pdf。 我正在使用表格显示标题文本,如“4.4.1。[标题文本]”,因为它可能发生[标题文本]很长,并且在这种情况下应该换行,如下所示:带上标和垂直对齐的XSL-FO表格单元格
[table-row]
[cell with numbering] [cell with header text]
[/table-row]
有4种不同情况下,报头可以如何组成:
- 标题文本单线
- 标题文本换行到下一行
- 标题文本单线与标
- 标题文本换行到下一行与标
的问题是,标会增加该行的高度和乱用垂直文本对齐方式。这是它会怎样看默认情况下,所有4个情况:
__________________________
|_1.2.3_|_header_text____| <<< OK
__________________________
| 1.2.3 | long long long | <<< OK
|_______|_header_text____|
__________________________
| 1.2.3 | (1) | <<< NOT OK
|_______|_header_text____|
__________________________
| 1.2.3 | long long long | <<< OK
| | (1) |
|_______|_header_text____|
正如你所看到的,在情况三号编号和大部分的标题文字的一个很好的方式不对齐。
我可以通过使用display-align =“after”在表格单元上使用编号来解决第3种情况。但为了不弄乱其他三种情况,我需要确定标题文本的内容是否会包装到下一行。 我用于输出的字体不是等宽字体,这就是为什么计数字符最好是近似值。
我的问题是,如何可以这样做的话3的样子:
__________________________
| | (1) |
|_1.2.3_|_header_text____|
而其他保持不变。
谢谢!
编辑:例如,标记为壳体3
<fo:table font-size="18pt" font-weight="bold" font-style="italic" space-after="2mm" space-before="7mm" keep-with-next.within-page="always">
<fo:table-column column-width="16mm"/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block>1.2.3</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<fo:block text-align="left">
<fo:block>Header Text (<fo:inline baseline-shift="super">1</fo:inline>)
</fo:block>
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
编辑2:我试图扭转标逻辑:
- 不要在文本中使用上标标记该应上标
- 将应为的标题(包括编号)的所有文本部分包裹在
这个“工作”,我测试它的情况下3 + 4和标题文本是符合编号在这两种情况下。
但它有一个缺点,就是在标题顶部有一点额外的间距,我必须扭转才能完全恢复标题中的上标设置。
我想你的建议,但unfortunateIy它看起来像它不在产出方面没有什么不同。 我在原始问题中添加了(原始)标记的示例。 – flitz
通过块级元素上的行堆栈策略,它可以工作。谢谢! 我也对其他案例进行了测试。剩下的唯一小问题是上标文本现在将与其行的区域顶部重叠一点点。但是这不是一个大问题,而且上标文本通常是较小的字体(在问题的示例中未显示)这一事实更不重要。 – flitz