簡體   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