# scm-latexdiff: a python script to calculate diffs for TeX files in git or mercurial repositories

When submitting a revision of an article, the editor often requests to include a document which shows what you changed in light of the comments of the reviewers. In Word you can use track changes to get this effect. To get a similar effect in LaTeX there is a tool called latexdiff. However, when using latexdiff in conjunction with a version control system like git, it takes quite a few manual steps to get a pdf with the difference between two versions of a file in the repository. A year or so ago I wrote a python script which takes of this hassle and could be used to create a diff pdf from a git repository.

A while later I switched to mainly using mercurial, so when the time came to create a diff based on a mercurial repo I decided to expand the script. In addition, I refactored the code to make it more clean. This lead to the python command line script scm-latexdiff. Here scm stands for software control management. The usage of scm-latexdiff is:

where:

some example usages:

Note that the NEW:FILE argument is optional, default NEW is ‘HEAD’ when using git, and ‘tip’ when using hg. When referring to a git revision, not the whole sha1 key is needed, you can just provide the first few numbers.

I developed scm-latexdiff for Linux, but it should work on any platform that supports Python, i.e. all. You can the latest version of this script from my bitbucket account:

After cloning the repository, you need to put the files into a directory present in the path. Although I prefer to create a symbolic link.

EDIT 24 Februari 2012:
Together with Ronald van Haren I’ve been updating scm-latexdiff. These updates are:

• Support for multi-file Latex documents. This requires the latest version of Latexdiff.
• Cleaner code
• A python installer using distutils
• A licence under which the software is released, GPL3
Tagged with: , , , ,
Posted in Python
###### 4 Comments » for scm-latexdiff: a python script to calculate diffs for TeX files in git or mercurial repositories
1. Ronald van Haren says:

Hi Paul,

Maybe you can update your blog post with the latest features we’ve added to scm-latexdiff.

Cheers,
Ronald

• Paul Hiemstra says:

2. Will Furnass says:

A very useful tool, particularly given that it can handle child documents! Thanks for making this available to the masses.

I was wondering do others have problems with line-wrapping when \DIFend{} or \DIFbegin{} contain \emph{<>}?

• Paul Hiemstra says:

Actually it is latexdiff which supports child documents, so kudos to them :). I can’t recall having this problem, but I cannot check right now. You could post a question on the stackexchange site for latex.

Available categories
Most used tags