【问题标题】:asciidoc macrosasciidoc 宏
【发布时间】:2012-01-28 13:20:57
【问题描述】:

我使用 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;可能进入了部分[宏]。

补充问题:

模式匹配是否有问题,如果 FOO 应该替换为 'bar'FOOX 替换为 'barbar'?

【问题讨论】:

    标签: asciidoc


    【解决方案1】:

    对于将 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] 类型。它们记录在here 用于 Python AsciiDoc 项目,最终here 用于基于 ruby​​ 的 AsciiDoctor 项目,但我从未真正使用过它们,我更喜欢替换和条件块。

    【讨论】:

    • 您提供了替代解决方案,但您实际上并未回答问题。
    【解决方案2】:

    有一个单独的项目,我与之相关联

    http://github.com/verhas/jamal

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

    我认为 Jamal 完全符合您的要求。它具有取代 Asciidoc 的复杂宏处理能力,并且还有很多内置宏,一些替换,一些扩展 Asciidoc 格式化和宏功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2022-11-19
      • 2016-04-09
      • 1970-01-01
      相关资源
      最近更新 更多