使用pandoc模板的Rmarkdown,在中间的.tex文件上应用lua筛选器

我试图使用lua筛选器捕获手稿中的图像并在特殊的\section中列出它们的标题。 我正在处理一个使用.tex模板的rmarkdown文档。

我一无所获,所以我运行了一个非常简单的过滤器:

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

我注意到只有markdown中的标题被识别出来了,而不是模板中的。

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

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

但这会删除所有latex格式和结构内容体外的内容,例如\documentclass,\usepackage和其他自定义命令。所以这是不行的。

因此问题是,在编织rmarkdown文档时,是否有一种方法强制应用lua过滤器在整合latex模板之后?

原文链接 https://stackoverflow.com/questions/71289289

点赞
stackoverflow用户2425163
stackoverflow用户2425163

可能有一种方法,但它很可能不能满足您的需求。

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

有两种可能的方法来解决这个问题:一种是后处理输出,这可能很繁琐并容易出错。另一种是找到一种方法来生成所需的输出,例如通过 pandoc 过滤器,在不先将其添加到模板中的情况下生成。

我认为您的其他问题是正确的方法。

2022-02-28 14:26:54