What is a good way to show changes between two versions

  Rewritten answer

Because of the regular structure of typical Latex documents, it's feasible to write a diff-like program that looks at the two Latex source files and creates a compilable Latex diff output where additions and deletions are delineated using macros. With the appropriate macro definitions, you can make these appear as appropriate markup (inline, with changebars) in the compiled diff document.

There are two programs I know of on CTAN that do this, both of which are Perl scripts:

  1. latexdiff, which is the more widely used, and has support for automatic revision acceptance and version control;
  2. texdiff, my preference, which is less sophisticated and I find more predictable. texdiff doesn't try to insert Latex code into the preamble, which means you have to do this yourself, but which means it is more convenient for multifile documents, and for when you want to handle the insert/delete markup yourself.

A less automated way with respect to texdiff is changebar. Use in this way:

...some text
\cbstart
the text you modified
\cbend
some text...
\cbdelete %to be put where some text have been deleted

from \cbstart to \cbend a grey bar is displayed near the text. \cbdelete will display a little grey square instead.


Latexdiff is a nice perl script for this purpose.