2

我正在使用 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 中是否可行,如果可以,该怎么做。

谢谢!

4

0 回答 0