> 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/de/ausfuhrliche-artikel/27-how-to-use-latexdiff-on-overleaf.md).

# Wie man latexdiff auf Overleaf verwendet

Dieser Artikel zeigt zwei Möglichkeiten, [latexdiff](https://ctan.org/pkg/latexdiff?lang=en) auf Overleaf.

## Was ist latexdiff?

`latexdiff` ist ein Perl-Skript, das dafür entwickelt wurde, den Inhalt zweier LaTeX-Dateien zu vergleichen. Es erzeugt LaTeX-Code, der alle wesentlichen Unterschiede zwischen diesen Dateien visuell darstellt.

Um `new.tex` mit `old.tex` zu vergleichen und die Ergebnisse in eine Datei namens `diff.tex`, würdest du `latexdiff` es so verwenden:

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

`OPTIONS` sind Befehlszeilenparameter, mit denen Sie `latexdiff`das Verhalten von [`latexdiff` konfigurieren können – siehe die](http://mirrors.ctan.org/support/latexdiff/doc/latexdiff-man.pdf) Dokumentation für eine Liste der verfügbaren Optionen.

## So verwendet man latexdiff auf Overleaf

Wir bieten zwei Lösungen an, die beide auf tex.stackexchage veröffentlicht und diskutiert wurden. Die [erste Methode](#david-carlisles-solution) wurde [von David Carisle vorgeschlagen](https://tex.stackexchange.com/a/603311), die [zweite Lösung](#tom-hejdas-solution) wurde [von Tom Hejda vorgeschlagen](https://tex.stackexchange.com/a/603351), dem Support-Manager von Overleaf.

### Die Lösung von David Carlisle

Die Quelldateien zur Demonstration dieser Lösung sind unten zusammen mit Links aufgeführt, um sie als Overleaf-Projekt zu öffnen. Siehe [Wie diese erste Lösung funktioniert](#how-this-first-solution-works) für eine kurze Erklärung dieses Codes.

[Öffnen Sie David Carlisles Lösung in 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{Die Lösung von David Carlisle}
\author{ich}
\date{Mai 2024}
\begin{document}
\maketitle
\section{Einleitung}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{ich\and du}
\date{Mai 2023}

\begin{document}

\maketitle

\section{Einleitung}
zzz zzz

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

**latexmkrc**

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

[Öffnen Sie David Carlisles Lösung in 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)

Dieses Beispiel erzeugt die folgende Ausgabe:

![Grafik, die die von latexdiff erzeugte Ausgabe zeigt](/files/87fac1d2d36b1b1f6ae5351ee58401ebf783ac36)

#### Wie diese erste Lösung funktioniert

Diese Lösung vergleicht die Dateien `main.tex` und `main2.tex` und schreibt die Ergebnisse in eine Datei namens `main-d.tex`. Beachten Sie, dass `main-d.tex` Datei eine *generierte* Datei, d. h. von unserem Code erstellt, wird sie in den Dateien des Projekts nicht sichtbar (aufgelistet) sein.

Es funktioniert, indem eine Datei namens `latexmkrc` verwendet wird, die Perl-Code enthält, um den Kompilierungsvorgang von Overleaf anzupassen. Hier wird der Befehl zum Kompilieren mit pdfLaTeX neu definiert, sodass zunächst `latexdiff` dann pdfLaTeX ausgeführt wird, um `main-d.tex`, die von `latexdiff`.

Wie [vom Autor der Lösung angemerkt](https://tex.stackexchange.com/a/603311), um das Ausführen von `latexdiff` und den tatsächlichen Inhalt von `main.tex` oder `main2.tex`, fügen Sie einfach ein `#`, das Perl-Kommentarzeichen, zum `latexmkrc` Befehlszeilenaufruf hinzu, sodass es so aussieht:

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

Jetzt können Sie `main.tex` oder `main2.tex` kompilieren, um ihren tatsächlichen Inhalt zu setzen, nicht die Unterschiede zwischen ihnen.

Weitere Informationen finden Sie im Overleaf-Artikel [So verwendet man `latexmkrc` mit Overleaf](/latex/de/ausfuhrliche-artikel/28-how-to-use-latexmkrc-with-overleaf.md).

### Tom Hejdas Lösung

Die Quelldateien zur Demonstration dieser Lösung sind unten zusammen mit Links aufgeführt, um sie als Overleaf-Projekt zu öffnen. Siehe [Wie diese zweite Lösung funktioniert](#how-this-second-solution-works) für eine kurze Erklärung dieses Codes.

[Öffnen Sie Tom Hejdas Lösung in 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{Demonstration von latexdiff}
```

**main.tex**

```latex
\documentclass{article}
\title{Tom Hejdas Lösung}
\author{ich}
\date{Mai 2024}
\begin{document}
\maketitle
\section{Einleitung}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{ich\and du}
\date{Mai 2023}

\begin{document}

\maketitle

\section{Einleitung}
zzz zzz

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

[Öffnen Sie Tom Hejdas Lösung in 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)

Dieses Beispiel erzeugt die folgende Ausgabe:

![Grafik, die die von latexdiff erzeugte Ausgabe zeigt](/files/c095e8b10fea87b3c91c72b655def20d0e5e4f18)

#### Wie diese zweite Lösung funktioniert

Diese Lösung vergleicht die Dateien `main.tex` und `main2.tex` und schreibt die Ergebnisse in eine Datei namens `main-d.tex`. Beachten Sie, dass `main-d.tex` Datei eine *generierte* Datei, d. h. von unserem Code erstellt, wird sie in den Dateien des Projekts nicht sichtbar (aufgelistet) sein.

Eine Datei namens `diff.tex` verwendet den `\ShellEscape` Befehl, der vom [`shellesc` Paket](https://ctan.org/pkg/shellesc?lang=en)bereitgestellt wird, um `latexdiff`. Die Ergebnisse des Vergleichs, enthalten in `main-d.tex`werden `\input` in `diff.tex` zum Satz.

`diff.tex` enthält die Zeile `\documentclass{dummy}` um den Compiler von Overleaf glauben zu lassen `diff.tex` kann kompiliert werden. Das funktioniert, weil der Kompilierungsprozess von Overleaf die aktuell geöffnete Datei auf das Vorhandensein von `\documentclass`. Wenn es nicht gefunden wird, kompiliert Overleaf die im Menü als **Hauptdatei** -Datei verwendet werden.

Wenn Sie **Neu kompilieren** mit `diff.tex` im Editor öffnen, werden die Ergebnisse des Vergleichs gesetzt. Sie können auswählen und kompilieren `main.tex` oder `main2.tex` weil sie beide eine `\documentclass` Befehl zu interpretieren ist.

Weitere Informationen zu `latexdiff` finden Sie in der [offiziellen Dokumentation](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/de/ausfuhrliche-artikel/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.
