texdiff
This version of texdiff is based on the TeXdiff by Robert Maron, available at
http://www.robmar.net/TexDiff/.
Cengiz Günay has provided several fixes to it and added optional parameters as well
as documentation. This texdiff is work in progress and only the most common LaTeX usage
cases are handled correctly. Feel free to improve and redistribute.
Another tool for diff'ing LaTeX files is latexdiff by Frederik Tilmann.
How it works
texdiff uses wdiff with changes start and end markers. If texdiff would be a bash alias, it would look like this:
alias texdiff = "wdiff --start-delete='\TLSdel{' --end-delete='}'
--start-insert='\TLSins{' --end-insert='}'"
The markers are LaTeX macros, that must be defined in the preamble of LaTeX documents (automatically inserted by texdiff if a \begin{document} is found):
\usepackage{color}
\usepackage{ulem}
\usepackage{changebar}
\newcommand\TLSins[1]{
\cbstart{}
\textcolor{ins}{\uline{#1}}
\cbend{}
}
\newcommand\TLSdel[1]{
\cbdelete{}
\textcolor{del}{\sout{#1}}
}
By using "texdiff old.tex new.tex > diff.tex" and running LaTeX over
diff.tex, a dvi file is generated with all text only in old.tex in red and striked out, and all text only in
new.tex blue and underlined (freely
configurable, cf. ulem package). Furthermore, passages with changes are marked
at the margin with grey bars by the changebar package (although only after
running dvips, in xdvi the bars are one inch too far left to compensate the one
inch offset inserted by TeX printer drivers).
Handling LaTeX macros
If LaTeX macros are included in those striked out or underlined passages, the
latex run will most likely fail. The source of most problems lies in wdiff
tearing apart pairs of braces. Therefore texdiff is a perl skript, that calls
wdiff internally and fixes wdiff's output by re-pairing braces again and
handling some commonly used LaTeX macros (you can add more macro names in the
configuration section of texdiff).
Download