在 IEEEeqnarray 环境中使用 latexdiff

在 IEEEeqnarray 环境中使用 latexdiff

笔记:我一个月前在 Stackoverflow 上问过这个问题,但我将其删除并在这里重新发布,因为那里没有答案。


我最近发现了latexdiff,总体来说还算满意。但是,我在使用IEEEeqnarrayIEEEtrantools软件包的环境(我经常使用)时遇到了问题。下面是此问题的一个简单示例。

文件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脚本本身。这使得它可以正确地作为数学环境处理,但它引发了另一个问题: 采用强制对齐参数(在上面的示例中),但不识别它,导致输出以下形式:IEEEeqnarrayeqnarraylatexdiffIEEEeqnarrayrCllatexdiff

\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 不太熟悉,因此无法轻松地对脚本进行更多调整。

相关内容