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 环境转换为 Div
s 等。
但是,当我将标准 LaTeX 嵌套在 内部 自定义环境中时,过滤器输出保持原样,未转换。例如.
\begin{custom_environment}
\begin{itemize}
\item foo
\item bar
\end{itemize}
\end{custom_environment}
我的过滤器可以很好地处理自定义环境,但内部 itemize
或 tabular
或类似环境未处理,如您所料。
有没有什么方法可以使用标准 latex
扩展(即过滤器)来处理自定义环境的 内容?我假设这将是来自 Lua 过滤器的调用。
我试图避免的一个想法是将内容写入一个临时文件,然后 运行在该文件上再 pandoc
。这似乎是一种无处不在的情况,我希望有更好的方法。谢谢!
我找到的最佳解决方案是 pandoc.read
:
https://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_block
和 walk_inline
,但无法让它们像这样工作。我会欢迎这样做的答案。
我一直在写一个自定义的 LaTeX reader Lua 过滤器来将一堆 LaTeX 源转换成 Pandoc Markdown,这将是我几个文档的新源。
我 运行 像下面这样的常用过滤器。
pandoc file.tex \
-f latex+raw_tex \
-t markdown \
-o file.md \
--lua-filter myfilter.lua
效果很好。我已经能够将几个自定义 LaTeX 环境转换为 Div
s 等。
但是,当我将标准 LaTeX 嵌套在 内部 自定义环境中时,过滤器输出保持原样,未转换。例如.
\begin{custom_environment}
\begin{itemize}
\item foo
\item bar
\end{itemize}
\end{custom_environment}
我的过滤器可以很好地处理自定义环境,但内部 itemize
或 tabular
或类似环境未处理,如您所料。
有没有什么方法可以使用标准 latex
扩展(即过滤器)来处理自定义环境的 内容?我假设这将是来自 Lua 过滤器的调用。
我试图避免的一个想法是将内容写入一个临时文件,然后 运行在该文件上再 pandoc
。这似乎是一种无处不在的情况,我希望有更好的方法。谢谢!
我找到的最佳解决方案是 pandoc.read
:
https://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_block
和 walk_inline
,但无法让它们像这样工作。我会欢迎这样做的答案。