如何在pandoc lua filter中获取并判断当前输出文件格式?
实现方法
pandoc Lua 过滤器内置了全局变量FORMAT,可以直接读取到当前任务的输出格式值,该值和执行pandoc命令时传入的-t/--to参数完全对应,比如latex、html、docx等。
你可以直接基于这个变量做分支判断,修改后的代码示例如下:
return { { Str = function (elem) -- 输出格式为LaTeX时走原有逻辑 if FORMAT == 'latex' then if elem.text == "any string" then return pandoc.RawInline("latex", "anything") end -- 输出格式为HTML时的逻辑示例 elseif FORMAT == 'html' then if elem.text == "any string" then return pandoc.RawInline("html", "<span>anything for html</span>") end -- 其他格式的默认逻辑,返回nil表示不修改原元素 else return nil end end, } }
补充说明
FORMAT是全局字符串变量,在过滤器的任意节点处理函数中都可以直接访问,不需要额外引入依赖- 如果不需要为不同非LaTeX格式做差异化处理,直接把
elseif分支去掉,统一写在else分支里即可
内容的提问来源于stack exchange,提问作者brafra
相关产品推荐
相关产品推荐

