asciidoc 在文档中重用 table 行

asciidoc reuse table row across document

我有一个包含许多相似 table 的文档。我认为可以将此 table 列和 header 设置为属性

:table-params: width="100%",cols="12%,21%,67%",options="header"
:table-header: |this |is |header

.table
[{table-params}]
|====
{table-header}

但出现错误:table missing leading separator。看起来 asciidoc 不能 post-render 属性值。 pass 宏也没有帮助

我用 include 宏和 tag

找到了解决方案
.table-1
|====
// tag::table-header[]
|this |is |header
// end::table-header[]

.table-2
|====
include::example.adoc[tag=table-header]

也许我错过了什么。跨文档重用 marked-up 部分的最优雅方法是什么?

属性有效地定义了整个文档内容中可以是 re-used 的字符串值。但是,table 的属性定义需要参数列表,而不是看起来像参数列表的字符串。

最优雅的 re-use 标记是 include:: 宏,它的操作就像在 include:: 宏的位置注入指定内容。

有关详细信息,请参阅文档:https://docs.asciidoctor.org/asciidoc/latest/directives/include/

为了避免重复,我会使用 Jamal 预处理器。

https://github.com/verhas/jamal/

Jamal 是我在过去几年中编写的一款免费的 Apache v2.0 许可工具,用于精确解决像您这样的问题类型。

使用 Jamal,您可以定义宏并在之后的代码中使用它们,例如:

{%@define tableParams= width="100%",cols="12%,21%,67%",options="header"%}
{%@define tableHeader=|this |is |header%}

.table
[{%tableParams%}]
|====
{%tableHeader%}

在 IntelliJ 中看起来像下面这样: