我一直在努力尝试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
它们识别为单独的内容。
当然,如果它卡在别的东西上,请再问一次!