pandoc跳过乳胶环境

时间:2017-03-20 14:30:42

标签: docx pandoc tex tikz

我主要在LaTeX写作,但是一些共同作者更喜欢MS Word。为了方便他们的工作,我想将.tex文件(或.pdf)转换为.docx。格式化不需要完美,但所有文本,方程式,数字等都应该是完全可读的。

我目前正在考虑使用.tex文档,替换所有必需的东西,然后让Pandoc做它的魔力。为此,我最好将我的添加内容实现为Pandoc过滤器。例如,我的tikz图片将使用随Pandoc提供的png过滤器转换为tikz.py。我使用这种方法遇到的问题是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}

pandoc -t native MWE.tex

的输出
[Para [Str "(0,0)",Space,Str "\8211",Space,Str "(2,2);"]]

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

1 个答案:

答案 0 :(得分:0)

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

\documentclass{article}
\usepackage{tikz}

\iffalse
    \renewenvironment{tikzpicture}%
        {\par---start tikzpicture---\\}%
        {\\---end tikzpicture---\par}
    \renewcommand{\node}{node:}
\fi

\begin{document}

\begin{tikzpicture}
\node {foo};
\end{tikzpicture}

\end{document}

对于pandoc 2.5,这将导致docx文件包含:

—start tikzpicture—
node:foo;
—end tikzpicture—

这感觉很不对劲,我希望我知道更好的方法。