latexdiff 与半括号不兼容

latexdiff 与半括号不兼容

我最近在使用latexdifftex 文件时遇到了一些问题,例如\left(\.\.\right)。例如,我有两个文件,一个是test-old.tex

\documentclass{article}
\begin{document}
this is the old one, with

\begin{equation}
  \label{eq:1}
  \left(
    full~bracket
  \right)
\end{equation}
\end{document}

另一个是test-new.tex

\documentclass{article}
\begin{document}
this is the new one, with
\begin{equation}
  \label{eq:1}
  \left(
    half~bracket
  \right.
\end{equation}
\end{document}

我使用以下命令latexdiff test-old.tex test-new.tex > test-diff.tex生成比较文件,test-diff.tex

\documentclass{article}
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL test-old.tex   Wed Feb  3 21:05:52 2016
%DIF ADD test-new.tex   Wed Feb  3 21:05:58 2016
%DIF PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF UNDERLINE PREAMBLE %DIF PREAMBLE
\RequirePackage[normalem]{ulem} %DIF PREAMBLE
\RequirePackage{color}\definecolor{RED}{rgb}{1,0,0}\definecolor{BLUE}{rgb}{0,0,1} %DIF PREAMBLE
\providecommand{\DIFadd}[1]{{\protect\color{blue}\uwave{#1}}} %DIF PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}}                      %DIF PREAMBLE
%DIF SAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddbegin}{} %DIF PREAMBLE
\providecommand{\DIFaddend}{} %DIF PREAMBLE
\providecommand{\DIFdelbegin}{} %DIF PREAMBLE
\providecommand{\DIFdelend}{} %DIF PREAMBLE
%DIF FLOATSAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddFL}[1]{\DIFadd{#1}} %DIF PREAMBLE
\providecommand{\DIFdelFL}[1]{\DIFdel{#1}} %DIF PREAMBLE
\providecommand{\DIFaddbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFaddendFL}{} %DIF PREAMBLE
\providecommand{\DIFdelbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFdelendFL}{} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF

\begin{document}
this is the \DIFdelbegin \DIFdel{old }\DIFdelend \DIFaddbegin \DIFadd{new }\DIFaddend one, with
\DIFdelbegin %DIFDELCMD < 

%DIFDELCMD < %%%
\DIFdelend \begin{equation}
  \label{eq:1}
  \left(
    \DIFdelbegin \DIFdel{full}\DIFdelend \DIFaddbegin \DIFadd{half}\DIFaddend ~bracket
  \DIFdelbegin %DIFDELCMD < \right)
%DIFDELCMD < %%%
\DIFdelend \DIFaddbegin \right\DIFadd{.
}\DIFaddend \end{equation}
\end{document}

该文件无法编译为 pdf,主要是因为倒数第三行

\DIFdelend \DIFaddbegin \right\DIFadd{.

其中\right与 分离.,因此匹配被破坏。

这是怎么发生的?有没有合适的方法可以避免这种情况?谢谢!

附言

我的latexdiff --version产品

This is LATEXDIFF 1.0.2  (Algorithm::Diff 1.15 so, Perl v5.18.2)

我知道这不是最新的,但我没有找到有关这个(可能的)错误的任何相关信息。


目前为止,我尝试了两种方法,至少可以test-diff.tex编译通过。一种方法是修改文件,在生成的文件中删除相关部分(或者在 后面手动添加一个点\right);但这不仅增加了调试工作量,每次比较后我都必须这样做。另一种方法是为半括号(或圆括号)定义一个新的宏,并在要比较的文件中改用新的宏。

答案1

这是脚本中的一个简单错误,忘记添加.可能的括号。您可以通过替换my $cmdleftright=

  my $cmdleftright='\\\\(?:left|right|[Bb]igg?[lrm]?|middle)\s*(?:[<>()\[\]|\.]|\\\\(?:[|{}]|\w+))';

变化在于添加\.到组中[<>...]

您应该将此作为一个错误报告给维护人员。

相关内容