So schließen Sie den Befehl \ label in latexdiff aus
In einigen Fällen enthält die von latexdiff erstellte Datei mehrfach definierte Beschriftungen, die zu Kompilierungsfehlern führen können. Unten ist ein Beispiel:
old.tex
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Two remarks on the marvelous formula.
\begin{equation}\label{eq:mass_energy}
E = mc^2
\end{equation}
\end{document}
new.tex
\documentclass{article}
\usepackage{amsmath}
\usepackage{theorem}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}\label{thm:mass}
We have
\begin{equation}\label{eq:mass_energy}
E = mc^2
\end{equation}
\end{theorem}
Two remarks on the marvelous formula.
\end{document}
diff.tex
\documentclass{article}
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL old.tex Sun Dec 20 16:19:03 2020
%DIF ADD new.tex Sun Dec 20 16:21:10 2020
\usepackage{amsmath}
\usepackage{theorem} %DIF >
\newtheorem{theorem}{Theorem} %DIF >
%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
\providecommand{\DIFmodbegin}{} %DIF PREAMBLE
\providecommand{\DIFmodend}{} %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 LISTINGS PREAMBLE %DIF PREAMBLE
\RequirePackage{listings} %DIF PREAMBLE
\RequirePackage{color} %DIF PREAMBLE
\lstdefinelanguage{DIFcode}{ %DIF PREAMBLE
%DIF DIFCODE_UNDERLINE %DIF PREAMBLE
moredelim=[il][\color{red}\sout]{\%DIF\ <\ }, %DIF PREAMBLE
moredelim=[il][\color{blue}\uwave]{\%DIF\ >\ } %DIF PREAMBLE
} %DIF PREAMBLE
\lstdefinestyle{DIFverbatimstyle}{ %DIF PREAMBLE
language=DIFcode, %DIF PREAMBLE
basicstyle=\ttfamily, %DIF PREAMBLE
columns=fullflexible, %DIF PREAMBLE
keepspaces=true %DIF PREAMBLE
} %DIF PREAMBLE
\lstnewenvironment{DIFverbatim}{\lstset{style=DIFverbatimstyle}}{} %DIF PREAMBLE
\lstnewenvironment{DIFverbatim*}{\lstset{style=DIFverbatimstyle,showspaces=true}}{} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF
\begin{document}
\DIFaddbegin
\begin{theorem}\label{thm:mass}
\DIFadd{We have
}\begin{equation}\DIFadd{\label{eq:mass_energy}
E = mc^2
}\end{equation}
\end{theorem}
\DIFaddend Two remarks on the marvelous formula.
\DIFdelbegin %DIFDELCMD <
%DIFDELCMD < %%%
\begin{displaymath}\DIFdel{\label{eq:mass_energy}
E = mc^2
}\end{displaymath}%DIFAUXCMD
%DIFDELCMD < %%%
\DIFdelend\end{document}
Wie Sie sehen können, besteht das Problem darin, dass \label
es im Umfang von enthalten ist \DIFdel
. Ich habe versucht, die hier--exclude-safecmd=label
vorgeschlagene Option hinzuzufügen , aber es hilft nicht. Wie kann ich dieses Problem vermeiden?
Aktualisieren
Ich benutze den Befehl
latexdiff old.tex new.tex > diff.tex
mit LATEXDIFF 1.3.1.1 (Algorithmus :: Diff 1.15, also Perl v5.30.1).
Antworten
Ihre Diff-Datei ist unvollständig und wenn ich sie ausführe, latex diff old.tex new.tex
erhalte ich ein anderes Format, das keinen Fehler aufweist. Es ist so schwer zu testen, aber ich gehe davon aus, dass Ihr Vorverstärker dies tut
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}} %DIF PREAMBLE
Sie könnten das in ändern
\providecommand{\DIFdel}[1]{{\def\label##1{}\protect\color{red}\sout{#1}}} %DIF PREAMBLE
um Etiketten in gelöschten Regionen zu deaktivieren.