我现在使用pandoc将markdown转换为HTML。我想将一些内联LaTeX环境转换为例如SVG。我可以通过使用Pandoc过滤器将RawBlock
转换为Para [Image]
来为RawBlocks执行此操作。但我有一个问题:
➜ pandoc -R -t native
A command \foo{bar}. An environment \begin{test} test \end \end{test} appears here.
\begin{rawblock}
test
\end{rawblock}
[Plain [Str "A",Space,Str "command",Space,RawInline (Format "tex") "\\foo{bar}",Str ".",Space,Str "An",Space,Str "environment"]
,RawBlock (Format "latex") "\\begin{test} test \\en \\end{test}"
,Para [Str "appears",Space,Str "here."]
,RawBlock (Format "latex") "\\begin{rawblock}\ntest\n\\end{rawblock}"]
如上所示,内联环境也将被解析为RawBlock
而不是RawInline
,因此内联环境之后的文本将成为新段落。
所以我的问题是:
将内联LaTeX环境带到RawInline
是否可行,就像Pandoc如何处理内联命令一样。
如何使用Pandoc过滤器实现这一点(在python中更好)?
答案 0 :(得分:1)
很抱歉这不是真的答案,但我还不能发表评论。
Pandoc具有预定义的环境列表,可识别为内联。所有其他环境默认为块级。由于LaTeX在块级环境方面的语法相当宽松,因此pandoc无法知道给定环境是内联还是块级。
如果真的想要使用LaTeX环境,你可以,但编写上下文相关的python过滤器并不容易(使用Haskell会更容易一些,但我认为&#39 ; s不是一个选项)
但是,有一个更简单的选择:使用span
而不是内联LaTeX环境和div
而不是块级别的环境。语法更加笨拙,但是使用任何支持的语言编写一个适用于具有给定类的跨度的过滤器相对简单。
pandoc -t native <<< "Replace inline environments with spans: <span class='span-class'>like this</span>"
[Para [Str "Replace",Space,Str "inline",Space,Str "environments",Space,Str "with",Space,Str "spans:",Space,Span ("",["span-class"],[]) [Str "like",Space,Str "this"]]]