我正在使用 latexdiff 比较两个 tex 文件,它会突出显示最终 PDF 中的任何更改(添加或删除)。有没有办法只突出显示新添加的部分,而不突出显示已删除的部分?
答案1
预定义样式
如果你看看手动的您将看到有一些预定义样式,它们以不同的方式标记事物。这些是、、 、 、 、 、 和UNDERLINE
。 CTRADITIONAL
是 TRADITIONAL
默认 CFONT
设置FONTSTRIKE
。INVISIBLE
要 使用样式,请调用CHANGEBAR
CCHANGEBAR
CULINECHBAR
CFONTCBHBAR
UNDERLINE
TRADITIONAL
latexdiff
latexdiff --type=TRADITIONAL old.tex new.tex > diff.tex
其中一个可能更符合您的喜好。如果不是,您可以选择使用自定义前言。
更新:在 1.1.0 版本中,latexdiff
有一种新样式,称为 ,BOLD
这可能正是您想要的。新文本以粗体排版,删除的文本则直接删除。(我安装的是 1.0.4 版本,没有这种样式。感谢frederik 提到了这一点。
自定义序言
如果你打开.tex
由 生成的文件latexdiff
,你会看到序言中有一个类似这样的部分:
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL old.tex Sat Jun 20 10:36:29 2015
%DIF ADD new.tex Sat Jun 20 10:36:36 2015
%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
此代码块定义了如何标记差异。具体来说,该\DIFdel
命令定义了已删除文本的标记:
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}}
您会看到,它被定义为红色,并被删除。
使用自定义前言
latexdiff
将前言部分复制到新文件,并将其另存为diffpreamble.tex
。然后根据自己的喜好修改上述命令。如果希望删除的部分被简单地删除,请将命令修改\DIFdel
为
\providecommand{\DIFdel}[1]{}
最后,在调用时latexdiff
,告诉它使用这个前言文件
latexdiff --preamble=diffpreamble.tex old.tex new.tex > diff.tex
例子
随着old.tex
\documentclass{article}
\begin{document}
This is some text.
\end{document}
并new.tex
作为
\documentclass{article}
\begin{document}
This is some stuff.
And more.
\end{document}
latexdiff --preamble=diffpreamble.tex old.tex new.tex > diff.tex
按照上述建议的修改,将得到以下输出:
答案2
对我来说这个在Linux上有效:
首先通过以下方式创建一个 tex 文件 '\providecommand{\DIFdel}[1]{}':
echo \\providecommand{\\DIFdel}[1]{} > diff.tex
然后通过以下方式将 latexdiff 的结果添加到该文件:
latexdiff old.tex new.tex >> diff.tex