【问题标题】:pandoc skip latex environmentpandoc跳过乳胶环境
【发布时间】:2017-08-11 21:18:23
【问题描述】:

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

我目前正在考虑使用.tex 文档,替换所有必要的东西,然后让 Pandoc 来做这件事。为此,我最好将我的添加实现为 Pandoc 过滤器。例如,我的 tikz 图片将使用 Pandoc 提供的 tikz.py 过滤器转换为 png。我在使用这种方法时面临的问题是,Pandoc 在从 tex 转换为其内部语言时尝试将 tikz 环境解释为它的内部语言,并且过滤器将此内部语言作为输入。结果是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 命令已完全消失。

【问题讨论】:

    标签: docx pandoc tex tikz


    【解决方案1】:

    我发现 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—
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多