如何定义自己的 asciidoc 宏

how to define own asciidoc macro

如何在 asciidoc/asciidoctor 中定义宏?

我将在文档的许多部分使用重复模式,因此我想进行参数化替换以避免多次输入相同的内容。

特别是,我有以下 asciidoc 片段:

{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| X >| Y
|===
{set:cellbgcolor!}

我需要将它放在文档的几个部分,用不同的文本替换来代替 X 和 Y。我该如何实现?

在我看来,使用 Asciidoctor 并不能获得在其他文档引擎中获得的所有 flexibility/simplicity:

  • LaTeX 中的命令定义
  • Templates 在 MediaWiki 中。

我认为您可以在 Asciidoctor 中使用 include 宏和变量:

创建一个名为 snippet.adoc 的文件(我的示例基于您的示例):

{set:cellbgcolor:grey}
[grid=none, frame=none]
|===
| {paramX} >| {paramY}
|===
{set:cellbgcolor!}

在你的主文档中这样使用它:

== My document

:paramX: lorem
:paramY: ipsum
include::snippet.adoc[]

Lorem ipsum dolore.

:paramX: aaaa
:paramY: bbbb
include::snippet.adoc[]

Lorem ipsum dolore.

那个 asciidoctor 可以扩展。您也可以创建自己的真实宏(用 Java 或 Ruby 编写),但这需要更多工作。根据您的用例,您可以在线找到几个示例。