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[]
問題は、asciidoc ディレクティブとして解釈されるのではなく、生成された PDF ファイルに "[source, python]" というテキストが文字通り含まれていることです。
注: languageは構成ファイルで設定される変数です。
そのようなネストされたマクロがasciidocで可能かどうか、また可能であればその方法を誰でも確認できますか?
ありがとう!