我正在使用 asciidoc 将课程资料生成为 PDF。打印材料时,我不希望代码示例被突出显示,因为它们打印不好。当使用 PDF 阅读器阅读材料时,我确实想要突出显示。
我已经定义了一个变量highlight,我可以执行以下操作,效果很好:
ifdef::highlight[]
[source, {language}]
endif::highlight[]
----
code
----
我在几十章中有几十个代码示例,所以我想使用一个可以检查高亮变量状态并有条件地包含源宏的宏。然后我可以默认生成打印友好的版本,但是当我需要查看友好的版本时,在命令行上定义高亮版本。
我写了这样一个宏(在我的 asciidoc 配置文件中):
[macros]
(?u)^(?P<name>hlsource)::(?P<target>\S*?)(\[(?P<attrlist>.*?)\])$=#
[hlsource-blockmacro]
ifdef::highlight[]
[source, {language}]
endif::highlight[]
问题是它在我生成的 PDF 文件中确实包含文本“[source, python]”,而不是被解释为 asciidoc 指令。
注意:语言是配置文件中设置的变量。
任何人都可以确认这样的嵌套宏在 asciidoc 中是否可行,如果可以,该怎么做。
谢谢!