![latexdiff 在描述环境中失败](https://linux22.com/image/246793/latexdiff%20%E5%9C%A8%E6%8F%8F%E8%BF%B0%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%A4%B1%E8%B4%A5.png)
此示例无法生成有效的.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
。
它知道应该将其视为一个整体块,并且不会尝试在块内插入自己的代码。