我想比较两个不同的 tex 文件,比如 old.tex 和 new.tex,只需自动用黄色突出显示 new.tex 中的不同位置即可。
我尝试了两种方法但不是我想要的。
- 使用 new.tex 中的包
soul
和命令\hl
。这可以,但这是一个手动过程,非常耗时。 - 在 PowerShell 中运行
latexdiff old.tex new.tex > diff.tex
,然后在 LaTex 中编译 diff.tex。这是自动的,但会突出显示 old.tex 和 new.tex 中的不同之处(包含删除和添加的符号)。此外,它不是黄色突出显示。
真希望有人能帮助我,提前非常感谢。
答案1
假设您有这两个文件,分别是old.tex
和new.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
然后编译它,你将得到:
请注意以下几点:
- 我
soulutf8
之所以使用是因为:来自 soul 包的 \hl 中的法语重音符号 latexdiff
要完成的任务非常复杂,而且它不是 100% 可靠或易于使用;但在简单的事情上它工作得很好。- 我不知道如何
\hl
处理大段文本、图形或段落......