Pandoc re-运行 在 latex+raw_tex 和 lua 过滤器之后对元素进行 latex 过滤器

Pandoc re-run latex filter on element after latex+raw_tex and lua filter

我一直在写一个自定义的 LaTeX reader Lua 过滤器来将一堆 LaTeX 源转换成 Pandoc Markdown,这将是我几个文档的新源。

我 运行 像下面这样的常用过滤器。

pandoc file.tex \ 
  -f latex+raw_tex \
  -t markdown \
  -o file.md \
  --lua-filter myfilter.lua

效果很好。我已经能够将几个自定义 LaTeX 环境转换为 Divs 等。

但是,当我将标准 LaTeX 嵌套在 内部 自定义环境中时,过滤器输出保持原样,未转换。例如.

\begin{custom_environment}
\begin{itemize}
\item foo
\item bar
\end{itemize}
\end{custom_environment}

我的过滤器可以很好地处理自定义环境,但内部 itemizetabular 或类似环境未处理,如您所料。

有没有什么方法可以使用标准 latex 扩展(即过滤器)来处理自定义环境的 内容?我假设这将是来自 Lua 过滤器的调用。

我试图避免的一个想法是将内容写入一个临时文件,然后 运行在该文件上再 pandoc。这似乎是一种无处不在的情况,我希望有更好的方法。谢谢!

我找到的最佳解决方案是 pandoc.readhttps://pandoc.org/lua-filters.html#helper-functions

我是这样使用的

internal_div = pandoc.Div(
    pandoc.read(
        contents_of_custom_environment,
        'latex'
    ).blocks,
    'div_label'
)

现在 internal_div 包含自定义环境的 latex 处理内容。请注意 contents_of_custom_environment 只是一个字符串。

我尝试使用 walk_blockwalk_inline,但无法让它们像这样工作。我会欢迎这样做的答案。