我使用asciidoc生成PDF格式的课程资料。打印材料时,我不希望突出显示代码示例,因为它们打印效果不佳。使用PDF阅读器阅读材料时,我 想要突出显示。
我已定义变量突出显示,我可以执行以下操作,效果很好:
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中是否可以使用这样的嵌套宏,如果是这样,如何做到这一点。
谢谢!