带有 pandoc 模板的 Rmarkdown,在中间 .tex 上应用 lua 过滤器

Rmarkdown with pandoc templates, apply lua filter on intermediate .tex

我正在尝试使用 lua 滤镜来捕获手稿中的图像,并在其末尾的特殊 \section 中列出它们的标题。 我正在处理本身使用 .tex 模板的 rmarkdown 文档。

我无法到达任何地方,所以我 运行 一个非常简单的过滤器:

function Header (head) print(pandoc.utils.stringify(head)) end

并注意到只有降价中的 headers 被识别,而不是模板中的那些。

我发现让 lua 过滤器识别模板中元素的唯一方法是用 pandoc 重新运行 生成的 .tex 文件:

pandoc -f latex -t latex -o test2.tex --lua-filter=my_filters.lua test.tex

但是删除了 body 之外的所有乳胶格式和结构内容,例如 \documentclass、\usepackage 和其他自定义命令。所以这是不行的。

那么问题来了,在编写rmarkdown文档时,有没有办法强制在集成latex模板后应用lua过滤器?

可能有办法,但很可能无法满足您的需求。

当 pandoc 读取文档时,它会对其进行解析并将其转换为内部数据结构。然后可以使用过滤器修改该内部结构。 LaTeX 是一种非常具有表现力和复杂的文档格式,从 LaTeX 到 pandoc 内部格式的任何转换都会导致(布局)信息丢失。在大多数情况下这已经足够了,但在您的情况下会是个问题。

有两种可能的方法可以做到这一点:一种是post-process输出,这可能很乏味error-prone。另一种是找到一种方法来生成所需的输出,例如通过 pandoc 过滤器,无需先将其添加到模板。

我相信您的 是正确的方法。