如何定义自己的AsciiDoc宏

11

如何在asciidoc/asciidoctor中定义宏?

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

具体来说,我有以下asciidoc片段:

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

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

1个回答

10

在我看来,使用Asciidoctor无法获得其他文档引擎中所具备的灵活性和简洁性:


我认为您可以使用Asciidoctor中的包含宏和变量进行操作:

创建一个名为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编写),但这需要更多的工作。根据您的使用情况,您可以在网上找到几个示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接