> 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/struttura-del-documento/08-multi-file-latex-projects.md).

# Progetti LaTeX multi-file

## Introduzione

In [documenti LaTeX di grandi dimensioni](/latex/it/struttura-del-documento/07-management-in-a-large-project.md) di solito si hanno diversi `.tex` file, uno per ogni capitolo o sezione, e poi vengono uniti per generare un unico output. Questo aiuta a mantenere tutto organizzato e rende più facile il debug del documento, ma man mano che il documento cresce la compilazione richiede più tempo. Questo può essere frustrante, dato che di solito si è interessati a lavorare solo su un file particolare alla volta.

L'approccio naturale per superare questo problema è compilare ogni file separatamente. Esistono due pacchetti principali che consentono di compilare singoli file in un progetto multi-file. La scelta che fai dipende da ciò di cui hai bisogno.

* Con [il **subfiles** pacchetto](#the-subfiles-package) puoi compilare ogni sottofile in modo indipendente e ciascun sottofile userà automaticamente il preambolo del file principale.
* Con [il **standalone** pacchetto](#the-standalone-package) ogni sottofile funziona come un file indipendente; i sottofile possono essere successivamente uniti in un documento principale che richiamerà i preamboli di ciascuno di essi. È particolarmente utile se devi riutilizzare lo stesso file in più di un documento; un'immagine TikZ è un buon esempio di ciò.

## Note su \documentclass nei file .tex di Overleaf

Come mostrato nel seguente video, anche se hai impostato il file principale del tuo progetto `.tex` puoi selezionare un altro file da compilare, purché contenga una `\documentclass` dichiarazione. Tuttavia, per garantire che tutti gli elementi del progetto vengano compilati correttamente—come glossari, accesso ai percorsi dei `.bib` file ecc.—consigliamo vivamente di compilare solo i file contenuti nella directory principale del progetto.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/U2nGfRx9NwNGX0vWXNebP/1ca4b9a4b2f36d5ca9c0dbaa87f44bfa/maincompile.mp4>" %}

## Il pacchetto subfiles

Questo pacchetto è adatto alla maggior parte delle situazioni, è davvero facile da usare.

Gli esempi in questa sezione hanno la seguente struttura gerarchica di file:

![CompileSubfilesEx1OverleafV2.png](/files/613bb817d1c9a2d3efb0fd952ac9cfb3d522fbb9)

### Il file principale

Nel file principale sono necessari due comandi speciali.

```latex
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{images/}}

\usepackage{blindtext}

\usepackage{subfiles} % Meglio caricarlo per ultimo nel preambolo

\title{Esempio del pacchetto subfiles}
\author{Overleaf}
\date{ }

\begin{document}

\maketitle

\section{Introduzione}

\subfile{sections/introduction}

\section{Seconda sezione}

\subfile{sections/section2}

\end{document}
```

![CompileSubfilesEx1aOverleafV2.png](/files/b1e83c2cb5baf548d0eae681dca188f94042efe3)

La compilazione per singolo file richiede la riga

```latex
\usepackage{subfiles}
```

nel preambolo, questo abilita il `subfiles` pacchetto. Poi ogni sotto-file esterno deve essere importato con il comando `\subfile{}`. Nell'esempio i file `introduction.tex` e `section2.tex` vengono importati nel file principale dalla cartella `sections` cartella. Notare che l'estensione del file non è obbligatoria.

[Apri un `subfiles` esempio del pacchetto in Overleaf](https://www.overleaf.com/project/new/template/19626?id=66392908\&templateName=Subfiles+package+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

### I subfile

Una volta configurato il file principale, ogni subfile deve avere una struttura speciale.

```latex
\documentclass[../main.tex]{subfiles}
\graphicspath{{\subfix{../images/}}}
\begin{document}
\textbf{Ciao mondo!}
\begin{figure}[bh]
\centering
\includegraphics[width=3cm]{overleaf-logo}

\label{fig:img1}
\caption{Logo di Overleaf}
\end{figure}

Ciao, ecco un testo senza significato...

\end{document}
```

![CompileSubfilesEx2OverleafV2.png](/files/952492f160d6dcc1e815d776a64e280fbbc0f9ee)

Ora questo file può essere compilato come file autonomo; la classe del documento e il resto del preambolo saranno gli stessi definiti nel documento principale.

Il primo comando qui è

```latex
\documentclass[../main.tex]{subfiles}
```

il parametro tra parentesi quadre, `../main.tex`, è il percorso relativo al documento principale. In questo caso il file `introduction.tex` si trova dentro la cartella `sections`, quindi il file `main.tex` si trova un livello sopra la cartella corrente (questo è ciò che `../` significa).

Dovrai inoltre usare il `\subfix` comando con il percorso relativo della cartella quando specifichi `\graphicspath` in `introduction.tex`:

```latex
\graphicspath{{\subfix{../images/}}}
```

Poi il contenuto effettivo viene scritto all'interno di `\begin{document}` e `\end{document}`. Tutto ciò che è fuori da questo ambiente verrà ignorato, o più precisamente, sarà considerato parte del preambolo. Evita di lasciare righe vuote all'inizio e alla fine del file.

[Apri un `subfiles` esempio del pacchetto in Overleaf](https://www.overleaf.com/project/new/template/19626?id=66392908\&templateName=Subfiles+package+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Il pacchetto standalone

Il pacchetto **standalone** fornisce la stessa funzionalità di **subfiles** ed è più flessibile, ma la sintassi è più complessa e soggetta a errori. La differenza principale è che ogni sottofile ha il proprio preambolo.

Gli esempi in questa sezione hanno la seguente struttura gerarchica di file:

![CompileSubfilesEx3OverleafV2.png](/files/3ac1264532745bb4fa587a7dc0287d941762fc0d)

### Il file principale

Il file principale è molto simile a quello di qualsiasi altro progetto con più file.

```latex
\documentclass{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}

\title{Esempio del pacchetto standalone}
\author{Overleaf}
\date{Maggio 2021}

\begin{document}

\maketitle

\section{Prima sezione}
\import{sections/}{introduction}

\section{Seconda sezione}
\import{sections/}{section2}

\end{document}
```

![CompileSubfilesEx3Overleaf.png](/files/29581bb054c956fab643eb0de15dcd851ca62056)

La riga

```latex
\usepackage[subpreambles=true]{standalone}
```

abilita il **standalone** pacchetto; dovrebbe essere inserita all'inizio del documento. Il parametro tra parentesi quadre dice a LaTeX di importare il preambolo da ogni sottofile (i pacchetti vengono importati una sola volta); se viene omesso, assicurati di avere tutti i comandi necessari nel preambolo del documento principale affinché i sottofile funzionino. Bisogna fare attenzione alle possibili incompatibilità tra i diversi preamboli.

Nel corpo del documento principale, ogni sottofile viene importato con `\import{}{}`. Il comando standard `\input{}` può essere usato anche, ma quello in questo esempio è consigliato per [gestire progetti di grandi dimensioni](/latex/it/struttura-del-documento/07-management-in-a-large-project.md) perché previene errori nei file nidificati.

[Apri un esempio del `standalone` pacchetto in Overleaf](https://www.overleaf.com/project/new/template/19636?id=66440758\&templateName=Standalone+package+example\&latexEngine=pdflatex\&texImage=\&mainFile=)

### I subfile

Ogni sottofile deve avere il proprio preambolo e importare tutti i pacchetti necessari per funzionare come documento autonomo.

```latex
\documentclass[class=article, crop=false]{standalone}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}
\usepackage{blindtext}

\begin{document}
Una figura TikZ verrà renderizzata sotto questa riga

\begin{figure}[ht]
\centering
\subimport{../}{diagram.tex}
\label{fig:tikzexample}
\caption{Un bel diagramma semplice}
\end{figure}

\blindtext
\end{document}
```

![CompileSubfilesEx4OverleafV2.png](/files/fb22b7e4911dd77c618bf85c4cd719162534b141)

La prima riga nel sottofile è

```latex
\documentclass[class=article, crop=false]{standalone}
```

Questo dichiara che questo è un file da usare con il **standalone** pacchetto; ci sono due parametri opzionali tra parentesi quadre.

* `class=article`. Imposta `article` come classe sottostante; può essere usata qualsiasi altra classe: book, report, ecc. (tranne beamer).
* `crop=false`. Se questa opzione viene omessa, l'output verrà ritagliato alla dimensione minima.

Il comando successivo non è obbligatorio

```latex
\usepackage[subpreambles=true]{standalone}
```

ma deve essere usato in questo esempio perché c'è un **standalone** file nidificato qui. Un [disegno TikZ](/latex/it/figure-e-tabelle/05-tikz-package.md) viene inserito con [`\subimport{../}{diagram.tex}`](/latex/it/struttura-del-documento/07-management-in-a-large-project.md#importing-files), puoi vedere il contenuto del file "diagram.tex" qui sotto:

```latex
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{tikzpicture}[
roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
]
%Nodi
\node[squarednode]      (maintopic)                              {2};
\node[roundnode]        (uppercircle)       [above=of maintopic] {1};
\node[squarednode]      (rightsquare)       [right=of maintopic] {3};
\node[roundnode]        (lowercircle)       [below=of maintopic] {4};

%Linee
\draw[->] (uppercircle.south) -- (maintopic.north);
\draw[->] (maintopic.east) -- (rightsquare.west);
\draw[->] (rightsquare.south) .. controls +(down:7mm) and +(right:7mm) .. (lowercircle.east);

\end{tikzpicture}
\end{document}
```

[Apri questo esempio TikZ standalone in Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Standalone+TikZ+example\&snip=%5Cdocumentclass%7Bstandalone%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cusetikzlibrary%7Bpositioning%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Btikzpicture%7D%5B%0Aroundnode%2F.style%3D%7Bcircle%2C+draw%3Dgreen%2160%2C+fill%3Dgreen%215%2C+very+thick%2C+minimum+size%3D7mm%7D%2C%0Asquarednode%2F.style%3D%7Brectangle%2C+draw%3Dred%2160%2C+fill%3Dred%215%2C+very+thick%2C+minimum+size%3D5mm%7D%2C%0A%5D%0A%25Nodes%0A%5Cnode%5Bsquarednode%5D++++++%28maintopic%29++++++++++++++++++++++++++++++%7B2%7D%3B%0A%5Cnode%5Broundnode%5D++++++++%28uppercircle%29+++++++%5Babove%3Dof+maintopic%5D+%7B1%7D%3B%0A%5Cnode%5Bsquarednode%5D++++++%28rightsquare%29+++++++%5Bright%3Dof+maintopic%5D+%7B3%7D%3B%0A%5Cnode%5Broundnode%5D++++++++%28lowercircle%29+++++++%5Bbelow%3Dof+maintopic%5D+%7B4%7D%3B%0A%0A%25Lines%0A%5Cdraw%5B-%3E%5D+%28uppercircle.south%29+--+%28maintopic.north%29%3B%0A%5Cdraw%5B-%3E%5D+%28maintopic.east%29+--+%28rightsquare.west%29%3B%0A%5Cdraw%5B-%3E%5D+%28rightsquare.south%29+..+controls+%2B%28down%3A7mm%29+and+%2B%28right%3A7mm%29+..+%28lowercircle.east%29%3B%0A%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

![CompileSubfilesEx5.png](/files/e779e2a8c7aa5679295098b6a3453f8052c15b4e)

Questa è la caratteristica principale di **standalone**, puoi importare questo file in qualsiasi altro documento e riutilizzare il codice. Per esempio, questo diagramma può essere usato successivamente in una presentazione senza ulteriori modifiche.

[Apri un esempio del `standalone` pacchetto in Overleaf](https://www.overleaf.com/project/new/template/19636?id=66440758\&templateName=Standalone+package+example\&latexEngine=pdflatex\&texImage=\&mainFile=)

## Letture aggiuntive

Per ulteriori informazioni vedi

* [Gestione in un grande progetto](/latex/it/struttura-del-documento/07-management-in-a-large-project.md)
* [Riferimenti incrociati a sezioni ed equazioni](/latex/it/struttura-del-documento/03-cross-referencing-sections-equations-and-floats.md)
* [Indici](/latex/it/struttura-del-documento/04-indices.md)
* [Glossari](/latex/it/struttura-del-documento/05-glossaries.md)
* [Collegamenti ipertestuali](/latex/it/struttura-del-documento/09-hyperlinks.md)
* [Numerazione delle pagine](/latex/it/formattazione/03-page-numbering.md)
* [Documenti a facciata singola e doppia](/latex/it/formattazione/08-single-sided-and-double-sided-documents.md)
* [Colonne multiple](/latex/it/formattazione/09-multiple-columns.md)
* [Formattazione dei paragrafi](/latex/it/formattazione/04-articles-how-to-change-paragraph-spacing-in-latex.md)
* [Dimensioni della pagina e margini](/latex/it/formattazione/07-page-size-and-margins.md)
* [Contatori](/latex/it/formattazione/10-counters.md)
* [Note a margine](/latex/it/formattazione/15-margin-notes.md)
* [Grassetto, corsivo e sottolineatura](/latex/it/concetti-di-base-di-latex/03-bold-italics-and-underlining.md)
* [Dimensioni, famiglie e stili dei caratteri](/latex/it/caratteri/01-font-sizes-families-and-styles.md)
* [Tipi di carattere](/latex/it/caratteri/02-font-typefaces.md)
* [Supporto ai font moderni con XeLaTeX](/latex/it/caratteri/03-xelatex.md)
* [Supporto per le lingue internazionali](/latex/it/lingue/03-international-language-support.md)
* [Dimensioni, famiglie e stili dei caratteri](/latex/it/caratteri/01-font-sizes-families-and-styles.md)
* [Compilazione di progetti di grandi dimensioni](/latex/it/base-di-conoscenza/038-fixing-and-preventing-compile-timeouts.md#compiling-big-projects)
* [Inserimento di immagini](/latex/it/altri-argomenti/27-inserting-images.md)
* [Pacchetto TikZ](/latex/it/figure-e-tabelle/05-tikz-package.md)
* [Scrivere un proprio pacchetto](/latex/it/file-di-classe/03-writing-your-own-package.md)
* [Scrivere una propria classe](/latex/it/file-di-classe/04-writing-your-own-class.md)
* [La **subfiles** documentazione del pacchetto](http://repositorios.cpai.unb.br/ctan/macros/latex/contrib/subfiles/subfiles.pdf)
* [La **standalone** documentazione del pacchetto](http://repositorios.cpai.unb.br/ctan/macros/latex/contrib/standalone/standalone.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/struttura-del-documento/08-multi-file-latex-projects.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.
