笔记:我一个月前在 Stackoverflow 上问过这个问题,但我将其删除并在这里重新发布,因为那里没有答案。
我最近发现了latexdiff
,总体来说还算满意。但是,我在使用IEEEeqnarray
该IEEEtrantools
软件包的环境(我经常使用)时遇到了问题。下面是此问题的一个简单示例。
文件a.tex
:
\documentclass{article}
\usepackage{IEEEtrantools}
\begin{document}
\begin{IEEEeqnarray*}{rCl}
a^2 &=& b
\end{IEEEeqnarray*}
Some text.
More text.
Even more text.
\end{document}
文件b.tex
:
\documentclass{article}
\usepackage{IEEEtrantools}
\begin{document}
Some text.
More text.
Even more text.
\begin{IEEEeqnarray*}{rCl}
a^2 &=& b
\end{IEEEeqnarray*}
\end{document}
输出latexdiff a.tex b.tex
(我就不多说序言了):
\begin{document}
\DIFdelbegin %DIFDELCMD < \begin{IEEEeqnarray*}{rCl}
%DIFDELCMD < %%%
\DIFdel{a^2 }%DIFDELCMD < &%%%
\DIFdel{=}%DIFDELCMD < & %%%
\DIFdel{b
}%DIFDELCMD < \end{IEEEeqnarray*}
%DIFDELCMD <
%DIFDELCMD < %%%
\DIFdelend Some text.
More text.
Even more text.
\DIFaddbegin
\begin{IEEEeqnarray*}{rCl}
\DIFadd{a^2 }&\DIFadd{=}& \DIFadd{b
}\end{IEEEeqnarray*}
\DIFaddend
\end{document}
因此,似乎它latexdiff
没有认识到这IEEEeqnarray
是一个数学环境,因为它正在删除它,从而出现编译错误,例如:
! Missing $ inserted.
<inserted text>
$
l.31 \DIFdel{a^2 }
%DIFDELCMD < &%%%
有没有办法告诉它这IEEEeqnarray
是一个数学环境?如果没有,你会建议什么解决方案?
谢谢!
更新:
我尝试通过添加类似环境列表来修改latexdiff
脚本本身。这使得它可以正确地作为数学环境处理,但它引发了另一个问题: 采用强制对齐参数(在上面的示例中),但不识别它,导致输出以下形式:IEEEeqnarray
eqnarray
latexdiff
IEEEeqnarray
rCl
latexdiff
\DIFaddbegin
\begin{IEEEeqnarray*}{\DIFadd{rCl}}
\DIFadd{a^2 }&\DIFadd{=}& \DIFadd{b
}\end{IEEEeqnarray*}
\DIFaddend
如您所见,参数被IEEEeqnarray
更改为\DIFadd{rCl}
,这会导致编译错误:
! Class IEEEtran Error: Invalid character in column specifications.
See the IEEEtran class documentation for explanation.
Type H <return> for immediate help.
...
l.43 \begin{IEEEeqnarray*}{\DIFadd{rCl}}
有什么想法吗?我对 perl 不太熟悉,因此无法轻松地对脚本进行更多调整。