latexdiff 可以用于数学文档吗?

latexdiff 可以用于数学文档吗?

我一直在努力尝试latexdiff处理数学文档。如果其中一个文件是这样的,它会产生 latex 无法编译的输出:

\documentclass{amsart}
\begin{document}
    \begin{equation} \label{eq:Psi-action}
        2=1+1
    \end{equation}
\end{document}

另一个是这样的:

\documentclass{amsart}
\begin{document}
    yo
\end{document}

但我认为它在其他方面也存在问题。我做错了什么吗?有人能够使用 latexdiff 处理超过几行的数学文档吗?如果有人能够通过对其 LaTeX 代码进行一些简单的更改来使用它,那么是否有关于应避免使用哪种 LaTeX 代码的一般准则?

更新 1:看来latexdiff不喜欢这样的东西。您可以通过将every\big(更改为 来解决这个问题。\big(\left(

更新 2:这是另一对破坏它的文件:

\documentclass{amsart}
\begin{document}
    \begin{equation*}
        X_{[1],n} 
    \end{equation*}
\end{document}

\documentclass{amsart}
\begin{document}
    \begin{equation*}
        [1]X_{n}
    \end{equation*}
\end{document}

我只有几个这样的例子,并且能够通过注释掉有问题的代码来解决它们,但如果有任何经验法则可以避免首先担心它,那就太好了,就像 Andrew 关于 Perl 和换行符的有益评论一样。

答案1

\label{eq:Psi-action}我可以通过将on 移动到一行来编译您提供的示例:

\documentclass{amsart}
\begin{document}
    \begin{equation}
     \label{eq:Psi-action}
        2=1+1
    \end{equation}
\end{document}

如果没有这个,似乎会发生这样的情况:它将 识别为\end{equation}一个文件中的数学环境的结尾,但另一个文件中没有,因此它将其标记为\end{MATHMODE}。但由于某种原因,它没有发现该环境的开头,因此没有相应的\begin{MATHMODE}。将 放在\label新行上似乎足以让它\begin{equation}再次识别 。

虽然它做得还不错,但latexdiff它对 TeX 文档的解释方式与 TeX 不同。特别是,由于它latexdiff是一个 perl 程序,我认为它是逐行工作的,因此换行符latexdiff对 TeX 比对 TeX 更重要。因此,如果还有其他原因导致它抱怨,请尝试添加更多换行符来分隔内容,以便将latexdiff它们识别为单独的内容。

当然,如果它卡在别的东西上,请再问一次!

相关内容