> 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/sv/fordjupade-artiklar/27-how-to-use-latexdiff-on-overleaf.md).

# Hur man använder latexdiff i Overleaf

Den här artikeln visar två sätt att använda [latexdiff](https://ctan.org/pkg/latexdiff?lang=en) i Overleaf.

## Vad är latexdiff?

`latexdiff` är ett Perl-skript utformat för att jämföra innehållet i två LaTeX-filer. Det genererar LaTeX-kod som visuellt visar eventuella betydande skillnader mellan dessa filer.

För att jämföra `new.tex` med `old.tex` och skriva ut resultaten till en fil som heter `diff.tex`, skulle du använda `latexdiff` så här:

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

`OPTIONS` är kommandoradsparametrar som du kan använda för att konfigurera `latexdiff`s beteende—se [`latexdiff` dokumentationen](http://mirrors.ctan.org/support/latexdiff/doc/latexdiff-man.pdf) för en lista över tillgängliga alternativ.

## Så använder du latexdiff i Overleaf

Vi tillhandahåller två lösningar, båda publicerade och diskuterade på tex.stackexchage. Den [första metoden](#david-carlisles-solution) var [föreslogs av David Carisle](https://tex.stackexchange.com/a/603311), den [andra lösningen](#tom-hejdas-solution) var [föreslagen av Tom Hejda](https://tex.stackexchange.com/a/603351), Overleafs supportchef.

### David Carlisles lösning

Källfiler som demonstrerar denna lösning listas nedan, tillsammans med länkar för att öppna dem som ett Overleaf-projekt. Se [Hur den här första lösningen fungerar](#how-this-first-solution-works) för en kort förklaring av denna kod.

[Öppna David Carlisles lösning i 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{David Carlisles lösning}
\author{jag}
\date{maj 2024}
\begin{document}
\maketitle
\section{Introduktion}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{jag\and du}
\date{maj 2023}

\begin{document}

\maketitle

\section{Introduktion}
zzz zzz

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

**latexmkrc**

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

[Öppna David Carlisles lösning i 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)

Det här exemplet ger följande utdata:

![Grafik som visar utdata som produceras av latexdiff](/files/5105b3a1a03ab588094b29bfd7b39abc2d33cc88)

#### Hur den här första lösningen fungerar

Den här lösningen jämför filerna `main.tex` och `main2.tex` och skriver resultaten till en fil som heter `main-d.tex`. Observera att eftersom `main-d.tex` filen är en *genererad* fil, dvs. skapad av vår kod, kommer den inte att vara synlig (listad) bland projektets filer.

Den fungerar genom att använda en fil som heter `latexmkrc` som innehåller Perl-kod för att anpassa Overleafs kompileringsprocess. Här omdefinieras kommandot för att kompilera med pdfLaTeX till att först köra `latexdiff` sedan köra pdfLaTeX för att kompilera `main-d.tex`, filen som genereras av `latexdiff`.

Som [lösningens författare påpekar](https://tex.stackexchange.com/a/603311), för att sluta köra `latexdiff` och sätta den faktiska innehållet i `main.tex` eller `main2.tex`, lägg bara till en `#`, Perl-kommentarmarkören, till `latexmkrc` kommandoraden, så att det ser ut så här:

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

Nu kan du kompilera `main.tex` eller `main2.tex` för att sätta deras faktiska innehåll, inte skillnaderna mellan dem.

För mer information, se Overleaf-artikeln [Hur man använder `latexmkrc` med Overleaf](/latex/sv/fordjupade-artiklar/28-how-to-use-latexmkrc-with-overleaf.md).

### Tom Hejdas lösning

Källfiler som demonstrerar denna lösning listas nedan, tillsammans med länkar för att öppna dem som ett Overleaf-projekt. Se [Hur den här andra lösningen fungerar](#how-this-second-solution-works) för en kort förklaring av denna kod.

[Öppna Tom Hejdas lösning i 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{Demonstrerar latexdiff}
```

**main.tex**

```latex
\documentclass{article}
\title{Tom Hejdas lösning}
\author{jag}
\date{maj 2024}
\begin{document}
\maketitle
\section{Introduktion}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{jag\and du}
\date{maj 2023}

\begin{document}

\maketitle

\section{Introduktion}
zzz zzz

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

[Öppna Tom Hejdas lösning i 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)

Det här exemplet ger följande utdata:

![Grafik som visar utdata som produceras av latexdiff](/files/3155effcff1d5b00dd680c7f99cf3125cf2a55c6)

#### Hur den här andra lösningen fungerar

Den här lösningen jämför filerna `main.tex` och `main2.tex` och skriver resultaten till en fil som heter `main-d.tex`. Observera att eftersom `main-d.tex` filen är en *genererad* fil, dvs. skapad av vår kod, kommer den inte att vara synlig (listad) bland projektets filer.

En fil som heter `diff.tex` använder `\ShellEscape` kommandot, som tillhandahålls av [`shellesc` paketet](https://ctan.org/pkg/shellesc?lang=en), för att köra `latexdiff`. Resultaten av jämförelsen, som finns i `main-d.tex`, är `\input` in i `diff.tex` för sättning.

`diff.tex` innehåller raden `\documentclass{dummy}` för att lura Overleafs kompilator att tro `diff.tex` kan kompileras. Det fungerar eftersom Overleafs kompileringsprocess kontrollerar den fil som för närvarande är öppen efter förekomsten av `\documentclass`. Om den inte hittar det, kompilerar Overleaf filen som anges i menyn som **Huvud** -filen.

Om du väljer **Återkompilera** med `diff.tex` öppna i redigeraren, kommer den att sätta jämförelsens resultat. Du kan välja och kompilera `main.tex` eller `main2.tex` eftersom de båda innehåller en `\documentclass` kommandot.

För mer information om `latexdiff` kolla in [den officiella dokumentationen](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/sv/fordjupade-artiklar/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.
