> 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/it/articoli-approfonditi/27-how-to-use-latexdiff-on-overleaf.md).

# Come usare latexdiff su Overleaf

Questo articolo dimostra due modi per usare [latexdiff](https://ctan.org/pkg/latexdiff?lang=en) su Overleaf.

## Che cos'è latexdiff?

`latexdiff` è uno script Perl progettato per confrontare il contenuto di due file LaTeX. Genera codice LaTeX che visualizza in modo chiaro eventuali differenze significative tra quei file.

Per confrontare `new.tex` con `old.tex` e scrivere i risultati in un file chiamato `diff.tex`, useresti `latexdiff` in questo modo:

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

`OPTIONS` sono parametri da riga di comando che puoi usare per configurare `latexdiff`del suo comportamento—fai riferimento alla [`latexdiff` documentazione](http://mirrors.ctan.org/support/latexdiff/doc/latexdiff-man.pdf) per un elenco delle opzioni disponibili.

## Come usare latexdiff su Overleaf

Forniamo due soluzioni, entrambe pubblicate e discusse su tex.stackexchage. La [prima metodo](#david-carlisles-solution) è stato [suggerito da David Carisle](https://tex.stackexchange.com/a/603311), la [seconda soluzione](#tom-hejdas-solution) è stato [proposta da Tom Hejda](https://tex.stackexchange.com/a/603351), responsabile del supporto di Overleaf.

### La soluzione di David Carlisle

I file sorgente per dimostrare questa soluzione sono elencati di seguito, insieme ai link per aprirli come progetto Overleaf. Vedi [Come funziona questa prima soluzione](#how-this-first-solution-works) per una breve spiegazione di questo codice.

[Apri la soluzione di David Carlisle 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{La soluzione di David Carlisle}
\author{me}
\date{Maggio 2024}
\begin{document}
\maketitle
\section{Introduzione}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{me\and tu}
\date{Maggio 2023}

\begin{document}

\maketitle

\section{Introduzione}
zzz zzz

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

**latexmkrc**

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

[Apri la soluzione di David Carlisle 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)

Questo esempio produce il seguente output:

![Grafico che mostra l'output prodotto da latexdiff](/files/41dbe1339e355b9dcd6a44e59ebef7c497c8b96e)

#### Come funziona questa prima soluzione

Questa soluzione confronta i file `main.tex` e `main2.tex` e scrive i risultati in un file chiamato `main-d.tex`. Nota che, poiché `main-d.tex` il file è un *generato* file, cioè creato dal nostro codice, non sarà visibile (elencato) tra i file del progetto.

Funziona utilizzando un file chiamato `latexmkrc` che contiene codice Perl per personalizzare il processo di compilazione di Overleaf. Qui, il comando per compilare usando pdfLaTeX viene ridefinito per eseguire prima `latexdiff` poi eseguire pdfLaTeX per compilare `main-d.tex`, il file generato da `latexdiff`.

Come [osservato dall'autore della soluzione](https://tex.stackexchange.com/a/603311), per interrompere l'esecuzione di `latexdiff` e comporre il contenuto effettivo di `main.tex` o `main2.tex`, basta aggiungere un `#`, il marcatore di commento Perl, al `latexmkrc` comando, facendolo apparire così:

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

Ora puoi compilare `main.tex` o `main2.tex` per comporre il loro contenuto effettivo, non le differenze tra di essi.

Per ulteriori informazioni, fai riferimento all'articolo di Overleaf [Come usare `latexmkrc` con Overleaf](/latex/it/articoli-approfonditi/28-how-to-use-latexmkrc-with-overleaf.md).

### La soluzione di Tom Hejda

I file sorgente per dimostrare questa soluzione sono elencati di seguito, insieme ai link per aprirli come progetto Overleaf. Vedi [Come funziona questa seconda soluzione](#how-this-second-solution-works) per una breve spiegazione di questo codice.

[Apri la soluzione di Tom Hejda 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{Dimostrazione di latexdiff}
```

**main.tex**

```latex
\documentclass{article}
\title{La soluzione di Tom Hejda}
\author{me}
\date{Maggio 2024}
\begin{document}
\maketitle
\section{Introduzione}
zzz
\end{document}
```

**main2.tex**

```latex
\documentclass{article}
\title{latexdiff}
\author{me\and tu}
\date{Maggio 2023}

\begin{document}

\maketitle

\section{Introduzione}
zzz zzz

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

[Apri la soluzione di Tom Hejda 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)

Questo esempio produce il seguente output:

![Grafico che mostra l'output prodotto da latexdiff](/files/b19ba96f31c24704051ab5576911a2de8e1daa74)

#### Come funziona questa seconda soluzione

Questa soluzione confronta i file `main.tex` e `main2.tex` e scrive i risultati in un file chiamato `main-d.tex`. Nota che, poiché `main-d.tex` il file è un *generato* file, cioè creato dal nostro codice, non sarà visibile (elencato) tra i file del progetto.

Un file chiamato `diff.tex` usa il `\ShellEscape` comando, fornito da [`shellesc` pacchetto](https://ctan.org/pkg/shellesc?lang=en), per eseguire `latexdiff`. I risultati del confronto, contenuti in `main-d.tex`, vengono `\input` in `diff.tex` per la composizione tipografica.

`diff.tex` contiene la riga `\documentclass{dummy}` per indurre il compilatore di Overleaf a credere che `diff.tex` possa essere compilato. Ciò funziona perché il processo di compilazione di Overleaf controlla il file attualmente aperto alla ricerca di `\documentclass`. Se non lo trova, Overleaf compila il file elencato nel Menu come **Main** .

Se selezioni **Ricompila** con `diff.tex` apri nell'editor, comporrà i risultati del confronto. Puoi selezionare e compilare `main.tex` o `main2.tex` perché entrambi contengono un `\documentclass` comando.

Per ulteriori informazioni su `latexdiff` consulta la [documentazione ufficiale](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/it/articoli-approfonditi/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.
