如何在 LaTex 中自动用黄色突出显示两个 tex 文档的差异

如何在 LaTex 中自动用黄色突出显示两个 tex 文档的差异

我想比较两个不同的 tex 文件,比如 old.tex 和 new.tex,只需自动用黄色突出显示 new.tex 中的不同位置即可。

我尝试了两种方法但不是我想要的。

  1. 使用 new.tex 中的包soul和命令\hl。这可以,但这是一个手动过程,非常耗时。
  2. 在 PowerShell 中运行latexdiff old.tex new.tex > diff.tex,然后在 LaTex 中编译 diff.tex。这是自动的,但会突出显示 old.tex 和 new.tex 中的不同之处(包含删除和添加的符号)。此外,它不是黄色突出显示。

真希望有人能帮助我,提前非常感谢。

答案1

假设您有这两个文件,分别是old.texnew.tex

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
    This is the old document.

    This an old line.

    We will remove this line.
\end{document}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
    This is the new document.

    Esta es una nueva línea.
\end{document}

如果你运行,latexdiff old.tex new.tex > differences.tex你将会得到一个文件,编译后会给你:

在此处输入图片描述

好的,现在打开新文件。在它的开头,你会发现:

 %DIF PREAMBLE
\providecommand{\DIFadd}[1]{{\protect\color{blue}\uwave{#1}}} %DIF PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}}                      %DIF PREAMBLE

标记“新”文本和“已删除”文本的两个命令是\DIFadd\DIFdel。将它们更改为:

\usepackage{soulutf8}
\providecommand{\DIFadd}[1]{{\protect\hl{#1}}} %highlight
\providecommand{\DIFdel}[1]{}                  %do not show deleted

然后编译它,你将得到:

在此处输入图片描述

请注意以下几点:

  1. soulutf8之所以使用是因为:来自 soul 包的 \hl 中的法语重音符号
  2. latexdiff要完成的任务非常复杂,而且它不是 100% 可靠或易于使用;但在简单的事情上它工作得很好。
  3. 我不知道如何\hl处理大段文本、图形或段落......

相关内容