1

我想用 asciidoc 动态生成一个表,它看起来像这样:

--------------------------------------
|Text  | Parameter | Value1 | Value2 |
--------------------------------------
|foo   | param1    | val1   | val2   |
--------------------------------------
|bar   | param2    | val3   | val4   |
|      | param3    | value_ | val6   |
|      |           | multi_ |        |
|      |           | 5      |        |
|      | param4    | val7   | val8   |
--------------------------------------
| baz  | param5    | val9   | val10  |
--------------------------------------

也就是说,一个文本可能有多个参数,它们的值可能跨越多行。我正在寻找一种自动对齐这些的方法。我有一个程序可以收集发生变化的数据,所以我无法手动修复。

我目前所做的:我在 Parameter、Value1 和 Value2 列中有框架和无网格嵌套表。这样做的问题是它们仅在每个值不跨越多行时才对齐。

我还尝试将 Parameter、Value1 和 Value2 一起制作为嵌套表,有网格但没有框架。

它在对齐方面起作用,但看起来不太好,因为网格线不接触外部表格的网格线。添加框架也看起来很枯燥,因为它强调多参数条目。

如果有额外的参数,我真正想要做的是在外部表中添加一条额外的线(没有表嵌套),中间没有水平线。

我看不到如何用 AsciiDoc 做到这一点。这有可能吗?关于如何解决这个问题的任何其他建议?

4

2 回答 2

1

事实证明,使用spans 相当容易(参见第 23.5 章)

.Multiline values alined with spans
[cols=",,,",width="60%", options="header"]
|================
|Text  | Parameter | Value1 | Value2
|foo   | param1    | val1   | val2
.3+<.<|foo .3+<.<|bar | val3 | val4
| razzle bla fasel foo bar | dazzle
|bli | bla
|foo2   | param3    | val5   | val6
|================

现在我需要做的就是告诉我的模板系统(jinja2)我需要跨越多少行,但这是一项相当勤奋但常规的工作。

于 2014-11-19T07:40:01.893 回答
0

如果您使用的是asciidoctor,则表还有许多其他选项,包括将列放在新行上并使用表的元数据来指定表包含的列数。这是在 Asciidoctor 中做表格的推荐方式。您可以在用户指南中查看此示例和许多其他示例。在这里举一个例子:

[cols="2*"]
|===

|Cell in column 1, row 1
|Cell in column 2, row 1

|Cell in column 1, row 2
|Cell in column 2, row 2

|===

Asciidoctor 可以替代 asciidoc 命令,但您需要查看两者之间的差异

于 2014-11-18T17:57:57.487 回答