So schließen Sie den Befehl \ label in latexdiff aus

Dec 20 2020

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 \labeles 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

1 DavidCarlisle Dec 20 2020 at 19:59

Ihre Diff-Datei ist unvollständig und wenn ich sie ausführe, latex diff old.tex new.texerhalte 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.