AsciiDoc宏

11

我使用 Asciidoc 渲染文本。

我对宏的理解存在困难。 我的目标是拥有一个简单的宏处理(像 LaTeX 中那样)。 我想写两个宏:

  1. FOO 应该被替换为 "bar"
  2. MYTEXT(xyz) 应该被替换为:"This is my text xyz!"
    (也许可以使用不同的方式来传递参数 'xyz')

示例文件 abc.txt:

text text text
FOO text FOO
text text text
MYTEXT(jajaja)

这应该导致

text text text
bar text bar
text text text
This is my text jajaja!
我认为定义 FOOMYTEXT 的部分需要放到文件 abc.conf 中,可能是在 [macro] 部分中。
另外一个问题:
如果将FOO替换为'bar',将FOOX替换为'barbar',是否会出现模式匹配方面的问题?
2个回答

6

对于将FOO替换为bar,以及将FOOX替换为barbar的任务,我会使用以下替换语法:

= AsciiDoc title
:FOO: bar
:FOOX: barbar

Regular text here using substitutions: {FOO} is bar and {FOOX} is barbar.

如您所见,您可以将替换声明为 :VARIABLE:,并将其用作 {VARIABLE}

关于实际创建新宏,宏通常是 macroname:content[Text input] 类型的。 它们在 Python AsciiDoc 项目中记录在这里,最终在基于 Ruby 的 AsciiDoctor 项目中记录在这里,但我从未真正使用过它们,我更喜欢替换和条件块。


1
你提供了一个替代方案,但实际上并没有回答问题。 - lscoughlin

0

我参与的有一个独立的项目

http://github.com/verhas/jamal

这是一个宏处理器,可作为Asciidoctor预处理器使用。请注意,这不是Asciidoc格式,而是转换器Asciidoctor的实现。

我认为Jamal正好符合您的要求。它具有复杂的宏处理能力,超越了Asciidoc的能力,并且还有许多内置的宏,一些替换,一些扩展了Asciidoc的格式和宏功能。


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