我想知道在查找差异时,是否可以让 latexdiff 忽略我的文档中的所有列表。我的大多数列表都包含特殊字符。这在列表内运行得很好,但当 latexdiff 尝试比较时,这些列表最终会超出列表范围,因此需要手动转义。有没有办法解决这个问题?
答案1
您可以使用https://tex.stackexchange.com/a/73649/15925告诉latexdiff
忽略lstlisting
环境。放置
PICTUREENV=(?:picture|DIFnomarkup|lstlisting)[\w\d*@]*
正在ld.cfg
运行在latexdiff -c ld.cfg j1.tex j2.tex >diff.tex
哪里j1.tex
\documentclass{article}
\usepackage{listings}
\begin{document}
Text.
\begin{lstlisting}
for $a do
\end{lstlisting}
Text.
\end{document}
并且j2.tex
是
\documentclass{article}
\usepackage{listings}
\begin{document}
Text changed.
\begin{lstlisting}
for $a do y
\end{lstlisting}
Text.
\end{document}
产品diff.tex
含有:
\documentclass{article}
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL j1.tex Wed Oct 16 16:53:10 2013
%DIF ADD j2.tex Wed Oct 16 16:53:33 2013
\usepackage{listings}
%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}
Text \DIFaddbegin \DIFadd{changed}\DIFaddend .
\DIFdelbegin %DIFDELCMD < \begin{lstlisting}
%DIFDELCMD < for $a do
%DIFDELCMD < \end{lstlisting}
%DIFDELCMD < %%%
\DIFdelend \DIFaddbegin \begin{lstlisting}
for $a do y
\end{lstlisting}
\DIFaddend
Text.
\end{document}
并编译得到:
如您所见,文本中的更改被突出显示,而代码只是来自第二个文件。
编辑正如 asmeurer 指出的那样,您可以通过编写命令行来避免使用配置文件
latexdiff --config='PICTUREENV=(?:picture|DIFnomarkup|lstlisting)[\w\d*@]*'
这可能与脚本或 makefile 特别相关。