Pandoc跳过乳胶环境

Oct*_*our 5 docx tex tikz pandoc

我主要用LaTeX写作,但是一些合著者更喜欢MS Word。为了方便他们的工作,我想将.tex文件(或.pdf)转换为.docx。格式不一定是完美的,但是所有文本,等式,图形等都应完全可读。

我目前正在考虑将.tex文档取下来,替换所有必要的内容,然后让Pandoc发挥作用。为此,我最好将添加的内容实现为Pandoc过滤器。例如,我的tikz图片将被转换为png使用tikz.pyPandoc随附的滤镜。我用这种方法面临的问题是Pandoc试图在将tikz环境转换tex成内部语言时解释该环境,而过滤器将此内部语言作为输入。结果是tikz代码丢失。有没有办法告诉Pandoc离开任何tikzpicture环境?

编辑:请参阅下面的MWE:

MWE.tex的内容:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \draw (0,0) -- (2,2);
\end{tikzpicture}
\end{document}
Run Code Online (Sandbox Code Playgroud)

输出 pandoc -t native MWE.tex

[Para [Str "(0,0)",Space,Str "\8211",Space,Str "(2,2);"]]
Run Code Online (Sandbox Code Playgroud)

\draw如您所见,该命令已完全消失。

Roe*_*oel 1

我发现 pandoc 不会跳过封装在\\iffalse...中的代码\\fi中的代码,因此您可以重新定义 tikpicture 环境(或以您可能喜欢的任何其他方式):

\n
\\documentclass{article}\n\\usepackage{tikz}\n\n\\iffalse\n    \\renewenvironment{tikzpicture}%\n        {\\par---start tikzpicture---\\\\}%\n        {\\\\---end tikzpicture---\\par}\n    \\renewcommand{\\node}{node:}\n\\fi\n\n\\begin{document}\n\n\\begin{tikzpicture}\n\\node {foo};\n\\end{tikzpicture}\n\n\\end{document}\n
Run Code Online (Sandbox Code Playgroud)\n

对于 pandoc 2.5,这会生成一个 docx 文件,其中包含:

\n
\xe2\x80\x94start tikzpicture\xe2\x80\x94\nnode:foo;\n\xe2\x80\x94end tikzpicture\xe2\x80\x94\n
Run Code Online (Sandbox Code Playgroud)\n

这感觉非常错误,我希望我知道更好的方法。

\n