> 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/fi/syvalliset-artikkelit/27-how-to-use-latexdiff-on-overleaf.md).

# Kuinka käyttää latexdiffiä Overleafissa

Tämä artikkeli esittelee kaksi tapaa käyttää [latexdiff](https://ctan.org/pkg/latexdiff?lang=en) Overleafissa.

## Mikä on latexdiff?

`latexdiff` on Perl-skripti, joka on suunniteltu vertaamaan kahden LaTeX-tiedoston sisältöä. Se luo LaTeX-koodia, joka näyttää visuaalisesti kaikki merkittävät erot näiden tiedostojen välillä.

Vertaillaksesi `new.tex` verrattuna `old.tex` ja ohjata tulokset tiedostoon nimeltä `diff.tex`, käyttäisit `latexdiff` näin:

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

`OPTIONS` ovat komentoriviparametreja, joilla voit määrittää `latexdiff`toimintaa — katso [`latexdiff` dokumentaatiota](http://mirrors.ctan.org/support/latexdiff/doc/latexdiff-man.pdf) luetteloa käytettävissä olevista vaihtoehdoista.

## Kuinka käyttää latexdiffiä Overleafissa

Tarjoamme kaksi ratkaisua, joista molemmat on julkaistu ja käsitelty tex.stackexchagessa. Ensimmäinen [menetelmä](#david-carlisles-solution) oli [David Carislen ehdottama](https://tex.stackexchange.com/a/603311), [toinen ratkaisu](#tom-hejdas-solution) oli [Tom Hejdan ehdottama](https://tex.stackexchange.com/a/603351), Overleafin tukipäällikkö.

### David Carlislen ratkaisu

Tämän ratkaisun esittelyyn tarkoitetut lähdetiedostot on lueteltu alla yhdessä linkkien kanssa, joista ne voi avata Overleaf-projektina. Katso [Kuinka tämä ensimmäinen ratkaisu toimii](#how-this-first-solution-works) saadaksesi lyhyen selityksen tästä koodista.

[Avaa David Carlislen ratkaisu Overleafissa.](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 Carlisle's solution}
\author{me}
\date{May 2024}
\begin{document}
\maketitle
\section{Introduction}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{me\and you}
\date{May 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"
```

[Avaa David Carlislen ratkaisu Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Kuva, joka näyttää latexdiffin tuottaman tuloksen](/files/cbfefdb3dcfa1a9a0db41c9aa1d1f0196e159564)

#### Kuinka tämä ensimmäinen ratkaisu toimii

Tämä ratkaisu vertailee tiedostoja `main.tex` ja `main2.tex` ja kirjoittaa tulokset tiedostoon nimeltä `main-d.tex`. Huomaa, että koska `main-d.tex` tiedosto on *luotu* tiedosto, eli koodimme luoma, se ei ole näkyvissä (listattuna) projektin tiedostoissa.

Se toimii käyttämällä tiedostoa nimeltä `latexmkrc` joka sisältää Perl-koodia Overleafin käännösprosessin mukauttamiseen. Tässä pdfLaTeXin avulla kääntämisen komento määritellään uudelleen siten, että ensin suoritetaan `latexdiff` ja sen jälkeen suoritetaan pdfLaTeX kääntämään `main-d.tex`, tiedosto, jonka on luonut `latexdiff`.

Kuten [ratkaisun tekijä on todennut](https://tex.stackexchange.com/a/603311), lopettaaksesi ajon `latexdiff` ja ladotaksesi `main.tex` tai `main2.tex`, lisää vain `#`, Perl-kommenttimerkki, `latexmkrc` komentoriville, jolloin se näyttää tältä:

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

Nyt voit kääntää `main.tex` tai `main2.tex` ladotaksesi niiden todellisen sisällön, etkä niiden välisiä eroja.

Lisätietoja saat Overleaf-artikkelista [Kuinka käyttää `latexmkrc` Overleafissa](/latex/fi/syvalliset-artikkelit/28-how-to-use-latexmkrc-with-overleaf.md).

### Tom Hejdan ratkaisu

Tämän ratkaisun esittelyyn tarkoitetut lähdetiedostot on lueteltu alla yhdessä linkkien kanssa, joista ne voi avata Overleaf-projektina. Katso [Kuinka tämä toinen ratkaisu toimii](#how-this-second-solution-works) saadaksesi lyhyen selityksen tästä koodista.

[Avaa Tom Hejdan ratkaisu Overleafissa.](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{latexdiffin esittely}
```

**main.tex**

```latex
\documentclass{article}
\title{Tom Hejda's solution}
\author{me}
\date{May 2024}
\begin{document}
\maketitle
\section{Introduction}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{me\and you}
\date{May 2023}

\begin{document}

\maketitle

\section{Introduction}
zzz zzz

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

[Avaa Tom Hejdan ratkaisu Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Kuva, joka näyttää latexdiffin tuottaman tuloksen](/files/73dc4eb67c1338ab6d00489d3b1d6126bc515550)

#### Kuinka tämä toinen ratkaisu toimii

Tämä ratkaisu vertailee tiedostoja `main.tex` ja `main2.tex` ja kirjoittaa tulokset tiedostoon nimeltä `main-d.tex`. Huomaa, että koska `main-d.tex` tiedosto on *luotu* tiedosto, eli koodimme luoma, se ei ole näkyvissä (listattuna) projektin tiedostoissa.

Tiedosto nimeltä `diff.tex` käyttää `\ShellEscape` -komentoa, jonka tarjoaa [`shellesc` paketti](https://ctan.org/pkg/shellesc?lang=en), suorittaakseen `latexdiff`. Vertailun tulokset, jotka sisältyvät tiedostoon `main-d.tex`, ovat `\input` sisään `diff.tex` ladontaa varten.

`diff.tex` sisältää rivin `\documentclass{dummy}` jotta Overleafin kääntäjä saadaan uskomaan `diff.tex` voidaan kääntää. Se toimii, koska Overleafin käännösprosessi tarkistaa juuri avatusta tiedostosta merkinnän `\documentclass`. Jos sitä ei löydy, Overleaf kääntää Menussa Päädokumentiksi listatun tiedoston **Päädokumentti** tiedostossa.

Jos valitset **Uudelleen käännä** verrattuna `diff.tex` avaa editorissa, se latoo vertailun tulokset. Voit valita ja kääntää `main.tex` tai `main2.tex` koska ne molemmat sisältävät `\documentclass` komento.

Lisätietoja aiheesta `latexdiff` katso [virallinen dokumentaatio](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/fi/syvalliset-artikkelit/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.
