> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/articles-approfondis/27-how-to-use-latexdiff-on-overleaf.md).

# Comment utiliser latexdiff sur Overleaf

Cet article montre deux façons d'utiliser [latexdiff](https://ctan.org/pkg/latexdiff?lang=en) dans Overleaf.

## Qu'est-ce que latexdiff ?

`latexdiff` est un script Perl conçu pour comparer le contenu de deux fichiers LaTeX. Il génère du code LaTeX qui affiche visuellement les différences importantes entre ces fichiers.

Pour comparer `new.tex` avec `old.tex` et écrire les résultats dans un fichier appelé `diff.tex`, vous utiliseriez `latexdiff` comme ceci :

```
latexdiff OPTIONS old.tex new.tex > diff.tex
```

`OPTIONS` sont des paramètres de ligne de commande que vous pouvez utiliser pour configurer `latexdiff`le comportement de latexdiff — reportez-vous à la [`latexdiff` documentation](http://mirrors.ctan.org/support/latexdiff/doc/latexdiff-man.pdf) pour une liste des options disponibles.

## Comment utiliser latexdiff dans Overleaf

Nous proposons deux solutions, toutes deux publiées et discutées sur tex.stackexchage. La [première méthode](#david-carlisles-solution) a été [suggérée par David Carisle](https://tex.stackexchange.com/a/603311), la [deuxième solution](#tom-hejdas-solution) a été [proposée par Tom Hejda](https://tex.stackexchange.com/a/603351), le responsable du support d'Overleaf.

### La solution de David Carlisle

Les fichiers स्रोत pour démontrer cette solution sont listés ci-dessous, avec des liens pour les ouvrir en tant que projet Overleaf. Voir [Comment fonctionne cette première solution](#how-this-first-solution-works) pour une brève explication de ce code.

[Ouvrez la solution de David Carlisle dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7BDavid+Carlisle%27s+solution%7D%0A%5Cauthor%7Bme%7D%0A%5Cdate%7BMay+2024%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cmaketitle%0A%5Csection%7BIntroduction%7D%0Azzz%0A%5Cend%7Bdocument%7D\&snip_name\[]=main2.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7Blatexdiff%7D%0A%5Cauthor%7Bme%5Cand+you%7D%0A%5Cdate%7BMay+2023%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cmaketitle%0A%0A%5Csection%7BIntroduction%7D%0Azzz+zzz%0A%0A%5Csection%7BSection%7D%0Azzz%0A%5Cend%7Bdocument%7D\&snip_name\[]=latexmkrc\&snip\[]=%24pdflatex+%3D+%22latexdiff+main.tex+main2.tex+%3E+main-d.tex%3B+pdflatex+%25O++main-d%22\&main_document=main.tex)

**main.tex**

```latex
\documentclass{article}
\title{La solution de David Carlisle}
\author{moi}
\date{mai 2024}
\begin{document}
\maketitle
\section{Introduction}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{moi\and vous}
\date{mai 2023}

\begin{document}

\maketitle

\section{Introduction}
zzz zzz

\section{Section}
zzz
\end{document}
```

**latexmkrc**

```latex
$pdflatex = "latexdiff main.tex main2.tex > main-d.tex; pdflatex %O  main-d"
```

[Ouvrez la solution de David Carlisle dans Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7BDavid+Carlisle%27s+solution%7D%0A%5Cauthor%7Bme%7D%0A%5Cdate%7BMay+2024%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cmaketitle%0A%5Csection%7BIntroduction%7D%0Azzz%0A%5Cend%7Bdocument%7D\&snip_name\[]=main2.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7Blatexdiff%7D%0A%5Cauthor%7Bme%5Cand+you%7D%0A%5Cdate%7BMay+2023%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cmaketitle%0A%0A%5Csection%7BIntroduction%7D%0Azzz+zzz%0A%0A%5Csection%7BSection%7D%0Azzz%0A%5Cend%7Bdocument%7D\&snip_name\[]=latexmkrc\&snip\[]=%24pdflatex+%3D+%22latexdiff+main.tex+main2.tex+%3E+main-d.tex%3B+pdflatex+%25O++main-d%22\&main_document=main.tex)

Cet exemple produit le résultat suivant :

![Graphique montrant le résultat produit par latexdiff](/files/e256b69ed47462142716c2452f864c75c3783db9)

#### Comment fonctionne cette première solution

Cette solution compare les fichiers `main.tex` et `main2.tex` et écrit les résultats dans un fichier appelé `main-d.tex`. Notez que comme `main-d.tex` le fichier *généré* est un fichier créé par notre code, il ne sera pas visible (listé) dans les fichiers du projet.

Elle fonctionne en utilisant un fichier appelé `latexmkrc` qui contient du code Perl pour personnaliser le processus de compilation d'Overleaf. Ici, la commande de compilation avec pdfLaTeX est redéfinie pour exécuter d'abord `latexdiff` puis lancer pdfLaTeX pour compiler `main-d.tex`, le fichier généré par `latexdiff`.

Comme [l'a noté l'auteur de la solution](https://tex.stackexchange.com/a/603311), pour arrêter d'exécuter `latexdiff` et composer le contenu réel de `main.tex` ou `main2.tex`, il suffit d'ajouter un `#`, le marqueur de commentaire Perl, à la `latexmkrc` ligne de commande, ce qui donne :

```
# $pdflatex = "latexdiff main.tex main2.tex > main-d.tex; pdflatex %O  main-d"
```

Vous pouvez maintenant compiler `main.tex` ou `main2.tex` pour composer leur contenu réel, et non les différences entre eux.

Pour plus d'informations, consultez l'article Overleaf [Comment utiliser `latexmkrc` avec Overleaf](/latex/fr/articles-approfondis/28-how-to-use-latexmkrc-with-overleaf.md).

### La solution de Tom Hejda

Les fichiers स्रोत pour démontrer cette solution sont listés ci-dessous, avec des liens pour les ouvrir en tant que projet Overleaf. Voir [Comment fonctionne cette deuxième solution](#how-this-second-solution-works) pour une brève explication de ce code.

[Ouvrez la solution de Tom Hejda dans Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name\[]=diff.tex\&snip\[]=%5CRequirePackage%7Bshellesc%7D%0A%5CShellEscape%7Blatexdiff+main.tex+main2.tex+%3E+main-d.tex%7D%0A%5Cinput%7Bmain-d%7D%0A%5Cdocumentclass%7Bdummy%7D%0A%5Ctitle%7BDemonstrating+latexdiff%7D\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7BTom+Hejda%27s+solution%7D%0A%5Cauthor%7Bme%7D%0A%5Cdate%7BMay+2024%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cmaketitle%0A%5Csection%7BIntroduction%7D%0Azzz%0A%5Cend%7Bdocument%7D\&snip_name\[]=main2.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7Blatexdiff%7D%0A%5Cauthor%7Bme%5Cand+you%7D%0A%5Cdate%7BMay+2023%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cmaketitle%0A%0A%5Csection%7BIntroduction%7D%0Azzz+zzz%0A%0A%5Csection%7BSection%7D%0Azzz%0A%5Cend%7Bdocument%7D\&main_document=diff.tex)

**diff.tex**

```latex
\RequirePackage{shellesc}
\ShellEscape{latexdiff main.tex main2.tex > main-d.tex}
\input{main-d}
\documentclass{dummy}
\title{Démonstration de latexdiff}
```

**main.tex**

```latex
\documentclass{article}
\title{La solution de Tom Hejda}
\author{moi}
\date{mai 2024}
\begin{document}
\maketitle
\section{Introduction}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{moi\and vous}
\date{mai 2023}

\begin{document}

\maketitle

\section{Introduction}
zzz zzz

\section{Section}
zzz
\end{document}
```

[Ouvrez la solution de Tom Hejda dans Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name\[]=diff.tex\&snip\[]=%5CRequirePackage%7Bshellesc%7D%0A%5CShellEscape%7Blatexdiff+main.tex+main2.tex+%3E+main-d.tex%7D%0A%5Cinput%7Bmain-d%7D%0A%5Cdocumentclass%7Bdummy%7D%0A%5Ctitle%7BDemonstrating+latexdiff%7D\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7BTom+Hejda%27s+solution%7D%0A%5Cauthor%7Bme%7D%0A%5Cdate%7BMay+2024%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cmaketitle%0A%5Csection%7BIntroduction%7D%0Azzz%0A%5Cend%7Bdocument%7D\&snip_name\[]=main2.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7Blatexdiff%7D%0A%5Cauthor%7Bme%5Cand+you%7D%0A%5Cdate%7BMay+2023%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cmaketitle%0A%0A%5Csection%7BIntroduction%7D%0Azzz+zzz%0A%0A%5Csection%7BSection%7D%0Azzz%0A%5Cend%7Bdocument%7D\&main_document=diff.tex)

Cet exemple produit le résultat suivant :

![Graphique montrant le résultat produit par latexdiff](/files/a2a6022da995223f95d52a96cca8f172779786f1)

#### Comment fonctionne cette deuxième solution

Cette solution compare les fichiers `main.tex` et `main2.tex` et écrit les résultats dans un fichier appelé `main-d.tex`. Notez que comme `main-d.tex` le fichier *généré* est un fichier créé par notre code, il ne sera pas visible (listé) dans les fichiers du projet.

Un fichier appelé `diff.tex` utilise la `\ShellEscape` commande, fournie par [`shellesc` package](https://ctan.org/pkg/shellesc?lang=en), pour exécuter `latexdiff`. Les résultats de la comparaison, contenus dans `main-d.tex`, sont `\input` dans `diff.tex` pour la composition.

`diff.tex` contient la ligne `\documentclass{dummy}` pour tromper le compilateur d'Overleaf et lui faire croire que `diff.tex` peut être compilé. Cela fonctionne parce que le processus de compilation d'Overleaf vérifie le fichier actuellement ouvert à la recherche de `\documentclass`. S'il ne le trouve pas, Overleaf compile le fichier indiqué dans le menu comme **fichier** principal.

Si vous sélectionnez **Recompiler** avec `diff.tex` ouvert dans l'éditeur, il composera les résultats de la comparaison. Vous pouvez sélectionner et compiler `main.tex` ou `main2.tex` car ils contiennent tous les deux une `\documentclass` commande.

Pour plus d'informations sur `latexdiff` consultez la [documentation officielle](http://mirrors.ctan.org/support/latexdiff/doc/latexdiff-man.pdf).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/articles-approfondis/27-how-to-use-latexdiff-on-overleaf.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
