difftex - compare LaTeX files in git repositoriesdifftex is a shell script wrapper around
latexdiff that can be used to
compare changes in .tex files between two different git commits (e.g., to
compare the changes between HEAD~1 and HEAD). It shares a similar purpose as
Git Latexdiff but it is
likely narrower in scope. difftex is build for macOS and other Unix-based
operating systems.
difftex can be installed by running:
curl https://raw.githubusercontent.com/mihaiconstantin/difftex/main/install.sh | sudo bash
The command above will perform the following steps:
mihaiconstantin/difftex repository into a temporary directory.difftex.sh to /usr/local/bin/difftex.difftex executable.To uninstall difftex simply remove the script as:
sudo rm /usr/local/bin/difftex
To update difftex just re-run installation command above which will replace
the current /usr/local/bin/difftex with the newest one from the GitHub
repository.
The script takes four arguments:
$1 (required): The name of the main .tex file to compare between commits.$2: The older commit or reference to a commit. The default is HEAD~1.$3: The newer commit or reference to a commit. The default is HEAD.$4: The path or directory name where to produce and store the output. The default is ./tmpExample of how to use the script:
difftex file.tex
difftex file.tex HEAD~1 HEAD tmp
difftex file.tex branch-one branch-two tmp
difftex file.tex tag-one tag-two tmp
The annotated .pdf document can be found in the output folder (i.e., ./tmp
or the one specified).
latexdiff optionsIn more advances cases, users may want to customize what kind of markup is
generated. To achieve this,
latexdiff offers a wide range of
options (i.e., see latexdiff --help). To maximize compatibility across
projects, difftex runs the latexdiff command with more or less the default
options, i.e.,:
latexdiff \
--type=UNDERLINE \
--append-textcmd="enquote" \
--allow-spaces \
--math-markup=3 \
--flatten \
# Reminder of the 'latexdiff' command.
...
If a specific project requires running latexdiff with different or more
options, one can edit the file /usr/local/bin/difftex to adjust the
latexdiff command call accordingly. For example, adding the following (i.e.,
see below) will instruct latexdiff to include markup for changes in the
Abstract section of a manuscript.
--append-context2cmd="abstract" \
If one is interested in ignoring changes for entire environments (e.g., the
figure environment), the following trick can be used (i.e., see this
answer for more information):
--config="PICTUREENV=(?:picture|DIFnomarkup|figure)[\w\d*@]*" \
In the example above, the addition |figure instructs latexdiff to also
ignore the figure environment. This trick can be further extended to an
arbitrary number of environments (e.g., sidewaysfigure).
For a full overview of the capabilities of latexdiff make sure to check the
documentation by running latexdiff --help.
Note. To enable changes in .bib files please check this
answer.
See the CHANGELOG file.
Any contributions, suggestions, or bug reports are welcome and greatly appreciated.
difftex is licensed under the MIT license.