Bagaimana cara mengecualikan perintah \ label di latexdiff
Dalam beberapa kasus, file yang dihasilkan oleh latexdiff akan berisi label yang ditentukan banyak, yang dapat menyebabkan kesalahan kompilasi. Berikut ini contohnya:
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}
Seperti yang Anda lihat, masalahnya adalah yang \label
termasuk dalam cakupan \DIFdel
. Saya mencoba menambahkan opsi --exclude-safecmd=label
seperti yang disarankan di sini , tetapi tidak membantu. Bagaimana saya bisa menghindari masalah ini?
Memperbarui
Saya menggunakan perintah
latexdiff old.tex new.tex > diff.tex
dengan LATEXDIFF 1.3.1.1 (Algoritma :: Diff 1.15 jadi, Perl v5.30.1).
Jawaban
File diff Anda tidak lengkap dan jika saya menjalankan latex diff old.tex new.tex
saya mendapatkan format berbeda yang tidak error, sangat sulit untuk diuji tetapi saya berasumsi bahwa jika preampbe Anda memiliki
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}} %DIF PREAMBLE
Anda bisa mengubahnya menjadi
\providecommand{\DIFdel}[1]{{\def\label##1{}\protect\color{red}\sout{#1}}} %DIF PREAMBLE
untuk menonaktifkan label di wilayah yang dihapus.