What problem does this solve?Quel problème cet outil résout-il ?
When resubmitting a journal article after referee comments, most journals ask you to provide a version with tracked changes so reviewers can immediately see what changed. Creating that document by hand is tedious and error-prone.
Lors de la resoumission d'un article après les commentaires du rapporteur, la plupart des revues exigent une version avec suivi des modifications pour que le lecteur puisse identifier immédiatement ce qui a changé. Produire ce document manuellement est fastidieux et source d'erreurs.
latex_updates automates the entire pipeline: it cleans your
source files, runs latexdiff with journal-appropriate settings,
injects consistent colour definitions, and compiles the PDF — all with one
command. The result is a professional tracked-changes document where every
addition is highlighted in blue and
every deletion is shown in
orange with a wavy strikethrough.
latex_updates automatise l'ensemble du processus : nettoyage
des fichiers sources, exécution de latexdiff avec les réglages
adaptés à la revue, injection des définitions de couleurs, et compilation du PDF —
le tout en une seule commande. Le résultat est un document professionnel où
chaque ajout est mis en évidence en bleu
et chaque suppression apparaît en
orange barré d'une vague.
A one-line toggle in the output file lets you switch between the referee version (showing all deletions) and a clean resubmission copy (deletions hidden) without re-running anything.
Une bascule en une ligne dans le fichier généré permet de passer de la version annotée (pour le rapporteur) à une copie propre (pour la resoumission) sans relancer la commande.
InstallationInstallation
latex_updates command is available
anywhere in your terminal — no need to be in the script directory or activate an environment.
latex_updates est disponible
partout dans votre terminal — inutile d'être dans le répertoire du script
ou d'activer un environnement particulier.
1 — Install the Python package1 — Installer le paquet Python
# Recommended: install directly from GitHub
$ pip install git+https://github.com/eartigau/latex-updates.git
# Alternative: clone and install locally
$ git clone https://github.com/eartigau/latex-updates.git
$ pip install ./latex-updates
# Recommandé : installer directement depuis GitHub
$ pip install git+https://github.com/eartigau/latex-updates.git
# Alternative : cloner et installer localement
$ git clone https://github.com/eartigau/latex-updates.git
$ pip install ./latex-updates
2 — Install latexdiff2 — Installer latexdiff
latexdiff is the underlying word-level diff engine.
Install it once for your system:
latexdiff est le moteur de comparaison mot à mot utilisé en interne.
Installez-le une fois pour votre système :
# macOS
$ brew install latexdiff
# Debian / Ubuntu
$ sudo apt install latexdiff
# TeX Live (any platform)
$ tlmgr install latexdiff
# macOS
$ brew install latexdiff
# Debian / Ubuntu
$ sudo apt install latexdiff
# TeX Live (toutes plateformes)
$ tlmgr install latexdiff
3 — pdflatex (optional)3 — pdflatex (facultatif)
pdflatex is needed only for automatic PDF compilation.
If it is absent, latex_updates still produces the
.tex diff file and prints the command to compile it manually.
pdflatex comes with any standard TeX distribution (TeX Live,
MiKTeX, MacTeX).
pdflatex est nécessaire uniquement pour la compilation automatique du PDF.
En son absence, latex_updates produit quand même le fichier
.tex et affiche la commande pour le compiler manuellement.
pdflatex fait partie de toute distribution TeX standard
(TeX Live, MiKTeX, MacTeX).
If your manuscript uses A&A style (\documentclass{aa}),
latex_updates will automatically search for aa.cls
on your system and use it. If it is not found in your TeX path, install it
with tlmgr install aa (TeX Live) or
sudo apt install texlive-publishers (Debian/Ubuntu).
Si votre manuscrit utilise le style A&A (\documentclass{aa}),
latex_updates cherche automatiquement aa.cls sur votre
système. S'il n'est pas dans le chemin TeX, installez-le avec
tlmgr install aa (TeX Live) ou
sudo apt install texlive-publishers (Debian/Ubuntu).
Quick startDémarrage rapide
The repository includes two demo manuscripts so you can try the tool immediately after cloning:
Le dépôt inclut deux manuscrits de démonstration pour tester l'outil immédiatement après le clonage :
$ git clone https://github.com/eartigau/latex-updates.git
$ latex_updates latex-updates/demo/demo_old.tex \
latex-updates/demo/demo_new.tex
latex_updates: generating diff between
old: demo/demo_old.tex
new: demo/demo_new.tex
Cleaning demo_old.tex ...
Cleaning demo_new.tex ...
Running latexdiff...
Inserting colour definitions and toggle...
Diff source → demo/diff_demo_new.tex
Compiling PDF (2 passes)...
Diff PDF → demo/diff_demo_new.pdf
Done.
$ git clone https://github.com/eartigau/latex-updates.git
$ latex_updates latex-updates/demo/demo_old.tex \
latex-updates/demo/demo_new.tex
latex_updates: generating diff between
old: demo/demo_old.tex
new: demo/demo_new.tex
Cleaning demo_old.tex ...
Cleaning demo_new.tex ...
Running latexdiff...
Inserting colour definitions and toggle...
Diff source → demo/diff_demo_new.tex
Compiling PDF (2 passes)...
Diff PDF → demo/diff_demo_new.pdf
Done.
Open demo/diff_demo_new.pdf to see the tracked-changes output.
Ouvrez demo/diff_demo_new.pdf pour voir le résultat.
UsageUtilisation
latex_updates OLD.tex NEW.tex [options]
latex_updates ANCIEN.tex NOUVEAU.tex [options]
| Argument / optionArgument / option | DescriptionDescription |
|---|---|
OLD.texANCIEN.tex |
Previous version of the manuscript (submitted version)Version précédente du manuscrit (version soumise) |
NEW.texNOUVEAU.tex |
Revised version of the manuscript (post-referee version)Version révisée du manuscrit (après les commentaires du rapporteur) |
-o FILE-o FICHIER / --output FILE--output FICHIER |
Custom output filename. Default: diff_<NEW>.tex in the same directory as the inputs.
Nom personnalisé pour le fichier de sortie.Par défaut : diff_<NOUVEAU>.tex dans le même répertoire.
|
--no-compile |
Produce the .tex diff file only; skip pdflatex compilation.Produire uniquement le fichier .tex ; ne pas lancer pdflatex. |
ExamplesExemples
# Typical use — produces diff_v2_paper.tex + diff_v2_paper.pdf
$ latex_updates v1_paper.tex v2_paper.tex
# Name the output for sending to a referee
$ latex_updates old.tex new.tex -o changes_for_referee.tex
# Generate the .tex only, compile later by hand
$ latex_updates old.tex new.tex --no-compile
$ pdflatex diff_new.tex
# Usage courant — produit diff_v2_papier.tex + diff_v2_papier.pdf
$ latex_updates v1_papier.tex v2_papier.tex
# Nom de sortie personnalisé (pour envoyer au rapporteur)
$ latex_updates ancien.tex nouveau.tex -o modifications_rapporteur.tex
# Générer le .tex uniquement, compiler manuellement ensuite
$ latex_updates ancien.tex nouveau.tex --no-compile
$ pdflatex diff_nouveau.tex
Show or hide deleted textAfficher ou masquer le texte supprimé
Every generated .tex file contains a toggle near the top.
Edit one word and recompile — no other changes needed:
Chaque fichier .tex généré contient une bascule près du début.
Modifiez un mot et recompilez — aucune autre modification n'est nécessaire :
Show deleted text — default, for the referee response letter
Afficher le texte supprimé — par défaut, pour la lettre de réponse au rapporteur
\newif\ifshowdel
\showdeltrue % deleted text appears in orange with wavy strikethrough% texte supprimé en orange avec barre ondulée
Hide deleted text — clean copy for the resubmission itself
Masquer le texte supprimé — copie propre pour la resoumission elle-même
\newif\ifshowdel
\showdelfalse % deleted text is completely invisible% texte supprimé complètement invisible
This means the same .tex file produces two different documents
depending on that one flag — handy when you need both the annotated version
for the referee and a clean version for the journal submission system.
Le même fichier .tex produit ainsi deux documents distincts
selon ce seul indicateur — pratique lorsqu'on a besoin à la fois de la version
annotée pour le rapporteur et d'une version propre pour le système de soumission
de la revue.
Journal supportSupport des revues scientifiques
latex_updates reads the \documentclass line of
your manuscript and automatically applies the right latexdiff
options for that journal. No flags, no configuration files.
latex_updates lit la ligne \documentclass de votre
manuscrit et applique automatiquement les bonnes options latexdiff
pour cette revue. Aucun argument supplémentaire, aucun fichier de configuration.
| JournalRevue | Detected classClasse détectée | What is handled automaticallyCe qui est géré automatiquement |
|---|---|---|
| Astronomy & Astrophysics (A&A) | \documentclass{aa} |
A&A's \abstract command takes five arguments
(context · aims · methods · results · conclusions).
Standard latexdiff would break on this; latex_updates
treats it as a block-level command so deleted abstracts compile cleanly.
\subtitle and section headings are excluded from
word-level diffing.
La commande \abstract d'A&A prend cinq arguments
(contexte · objectifs · méthodes · résultats · conclusions).
latexdiff standard échoue sur cette syntaxe ;
latex_updates la traite comme un bloc entier pour
que les résumés supprimés compilent correctement.
\subtitle et les titres de sections sont exclus
de la comparaison mot à mot.
|
| AASTeX (ApJ, AJ, ApJL, PASP) | \documentclass{aastex63} etc. |
Author-metadata commands
(\affiliation, \correspondingauthor,
\email, \received, …)
are excluded from word-level diffing; they contain structured arguments
that latexdiff cannot safely split.
Les commandes de métadonnées d'auteur
(\affiliation, \correspondingauthor,
\email, \received, …)
sont exclues de la comparaison mot à mot ; leurs arguments structurés
ne peuvent pas être découpés sans risque par latexdiff.
|
| Monthly Notices of the RAS (MNRAS) | \documentclass{mnras} |
Uses a standard abstract environment — no special handling needed.Utilise un environnement abstract standard — aucun traitement particulier nécessaire. |
| Any other classToute autre classe | — | Generic mode: standard latexdiff with math-mode protection.Mode générique : latexdiff standard avec protection des environnements mathématiques. |
Missing your journal? Open an issue — adding a profile is a few lines of Python.
Votre revue n'est pas dans la liste ? Ouvrez une issue — ajouter un profil ne demande que quelques lignes de Python.
How it worksFonctionnement
Clean the old fileNettoyer l'ancien fichier
Strip {\bf …} and \textbf{…} markup
that was manually added during earlier revision rounds to highlight changes.
Supprimer les balises {\bf …} et \textbf{…}
ajoutées manuellement lors des rondes de révision précédentes.
Clean the new fileNettoyer le nouveau fichier
Remove leftover bare { } groups and normalise
LaTeX spacing commands that confuse latexdiff's parser.
Éliminer les groupes { } nus résiduels et normaliser
les commandes d'espacement qui perturbent l'analyseur de latexdiff.
Run latexdiffLancer latexdiff
Word-level diff with math-mode protection and journal-specific options applied automatically.
Comparaison mot à mot avec protection des environnements mathématiques et options adaptées à la revue appliquées automatiquement.
Inject colour & toggleInjecter les couleurs
Blue additions, orange wavy-strikethrough deletions,
and a \showdel flag — inserted before \begin{document}.
Ajouts en bleu, suppressions en orange barré d'une vague,
et l'indicateur \showdel — insérés avant \begin{document}.
Compile PDFCompiler le PDF
Two pdflatex passes resolve cross-references
and generate the final PDF automatically.
Deux passes pdflatex résolvent les références croisées
et génèrent le PDF final automatiquement.
Colour legendRéférence des couleurs
Blue = added text · Orange strikethrough = removed text Bleu = texte ajouté · Orange barré = texte supprimé
Demo manuscriptsManuscrits de démonstration
The demo/ folder contains two versions of a short mock paper
(On the Statistically Suspicious Helpfulness of Artificial Minds)
written to exercise as many diff scenarios as possible in a compact document.
Le dossier demo/ contient deux versions d'un court article fictif
(On the Statistically Suspicious Helpfulness of Artificial Minds)
rédigé pour couvrir un maximum de scénarios de différence dans un document compact.
| FileFichier | What it containsContenu |
|---|---|
demo/demo_old.tex |
Original submission: 3 authors · title · abstract with inline math · 4 sections · numbered list (3 items) · table with 4 data rows · bibliography Soumission initiale : 3 auteurs · titre · résumé avec math en ligne · 4 sections · liste numérotée (3 items) · tableau à 4 lignes · bibliographie |
demo/demo_new.tex |
Revised version: 4th author added · title reworded · abstract numbers updated · 4th list item added · extra table row · new subsection · full new Discussion section · extended bibliography Version révisée : 4e auteur ajouté · titre reformulé · chiffres du résumé mis à jour · 4e item dans la liste · ligne supplémentaire dans le tableau · nouvelle sous-section · section Discussion entièrement nouvelle · bibliographie étendue |
Together the two files cover the most common revision scenarios: inline text edits, math value changes, structural additions (new author, list item, table row, whole section) — making them a practical smoke-test for any LaTeX diff workflow.
Ensemble, les deux fichiers couvrent les scénarios de révision les plus courants : modifications de texte en ligne, changements de valeurs mathématiques, ajouts structurels (nouvel auteur, item, ligne de tableau, section entière) — constituant un test complet pour tout flux de travail de diff LaTeX.