2015-04-25 1 views
0

Теперь я использую pandoc для преобразования уценки в HTML. Я хотел бы преобразовать некоторую встроенную среду LaTeX, например, в SVG. Я мог бы сделать это для RawBlocks, используя фильтр Pandoc для преобразования RawBlock в Para [Image]. Но у меня есть проблема:Как использовать фильтр padoc для изменения RawBlock в RawInline?

➜ 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)?

ответ

1

Жаль об этом не очень-то-ответ, но я не могу комментировать.

Pandoc имеет предопределенный список сред, которые он распознает как встроенный. Все остальные среды по умолчанию являются блочными. Поскольку LaTeX довольно слаб с его синтаксисом в отношении уровней на уровне блоков, pandoc действительно не имеет способа узнать, является ли данная среда встроенной или блочной.

Если вы действительно хотите использовать LaTeX среды, вы можете, но писать контекстную питона фильтр не совсем легко (это несколько проще с Haskell, но я предполагаю, что это не вариант)

Eсть , однако, более простой вариант: используйте span s вместо встроенных сред LaTeX и div s вместо блоков. Синтаксис является немного более неуклюжим, но писать фильтр, который будет работать с пролетами с заданным классом, относительно просто с любым поддерживаемым языком.

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"]]]