繁体   English   中英

如何使用pandoc过滤器将RawBlock更改为RawInline?

[英]How to use pandoc filter to change a RawBlock to RawInline?

我现在正在使用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中更好)实现此功能?

抱歉,这个答案并非真的,但我还不能发表评论。

Pandoc有一个预定义的环境列表,它可以识别为内联。 所有其他环境默认为块级。 由于LaTeX在涉及块级环境的语法上比较宽松,因此pandoc确实无法知道给定环境是内联还是块级。

如果您确实想使用LaTeX环境,可以,但是编写上下文相关的python过滤器并不是一件容易的事(使用Haskell稍微容易一些,但我认为这不是一种选择)

但是,有一个更简单的选择:使用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"]]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM