latexdiff 在描述环境中失败

latexdiff 在描述环境中失败

此示例无法生成有效的.tex

test.tex

\documentclass[a4paper]{report}
\begin{document}
\begin{description}
    \item[thing] explanation of thing
\end{description}
\end{document}

test_modified.tex

\documentclass[a4paper]{report}
\begin{document}
\begin{description}
    \item[A first thing] an explanation of first thing
\end{description}
\end{document}

执行

latexdiff test.tex test_modified.tex > test_diff.tex  
pdflatex 测试_diff.tex

产量

! LaTeX Error: Something's wrong--perhaps a missing \item.                                            
l.25 ...

以下是生成的感兴趣的块.tex

\begin{document}
\begin{description}
    \DIFdelbegin %DIFDELCMD < \item[thing] %%%
\DIFdel{explanation of }\DIFdelend \DIFaddbegin \item[A first thing] \DIFadd{an explanation of first }\DIFaddend thing
\end{description}
\end{document}

所以latexdiff已插入代码,并且\item编译器不喜欢它。

现在手册页latexdiff有排除命令的选项。我试图添加

--exclude-safecmd="\\\item"

在命令行调用latexdiff,但没有成功。

是否有人曾经调整过选项latexdiff并能说出如何规避该错误(例如告诉latexdiff跳过这种环境)?

答案1

好吧,我花了更多时间寻找解决这个问题的方法,解决方案是定义一个不执行任何操作的虚拟命令:

\newcommand{\diffblock}[1]{#1}

只需将整个描述放在这个块中:

\diffblock{
\begin{description}
    \item[A first thing] an explanation of first thing
\end{description}
}

并添加--append-safecmd="diffblock"选项latexdiff

它知道应该将其视为一个整体块,并且不会尝试在块内插入自己的代码。

相关内容