> 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/fr/structure-du-document/08-multi-file-latex-projects.md).

# Projets LaTeX multi-fichiers

## Introduction

Dans [de grands documents LaTeX](/latex/fr/structure-du-document/07-management-in-a-large-project.md) on en a généralement plusieurs `.tex` un pour chaque chapitre ou section, puis ils sont assemblés pour générer une seule sortie. Cela aide à garder tout organisé et facilite le débogage du document, mais à mesure que le document grossit, la compilation prend plus de temps. Cela peut être frustrant, car on ne s'intéresse généralement qu'à travailler sur un fichier particulier à chaque fois.

L'approche naturelle pour surmonter cela consiste à compiler chaque fichier séparément. Il existe deux principaux packages qui permettent de compiler des fichiers individuels dans un projet à plusieurs fichiers. Le choix que vous faites dépend de vos besoins.

* Avec [les **subfiles** package](#the-subfiles-package) vous pouvez compiler chaque sous-fichier indépendamment et chaque sous-fichier utilisera automatiquement le préambule du fichier principal.
* Avec [les **standalone** package](#the-standalone-package) chaque sous-fichier fonctionne comme un fichier indépendant ; les sous-fichiers peuvent ensuite être assemblés dans un document principal qui récupérera les préambules de chacun d'eux. C'est particulièrement utile si vous devez réutiliser le même fichier dans plus d'un document ; une figure TikZ en est un bon exemple.

## Notes sur \documentclass dans les fichiers .tex d'Overleaf

Comme le montre la vidéo suivante, même si vous avez défini le fichier principal de votre projet `.tex` vous pouvez sélectionner un autre fichier à compiler — à condition qu'il contienne une `\documentclass` déclaration. Cependant, pour garantir que tous les éléments de votre projet soient compilés correctement — comme les glossaires, l'accès aux chemins vers `.bib` les fichiers, etc. — nous vous recommandons vivement de ne compiler que les fichiers contenus dans le répertoire racine de votre projet.

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

## Le package subfiles

Ce package convient à la plupart des situations, il est vraiment facile à utiliser.

Les exemples de cette section ont la structure de fichiers hiérarchique suivante :

![CompileSubfilesEx1OverleafV2.png](/files/6d2034437fed7cd6ac67d9117d95359bdafaa0ec)

### Le fichier principal

Dans le fichier principal, deux commandes spéciales sont nécessaires.

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

\usepackage{blindtext}

\usepackage{subfiles} % À charger de préférence en dernier dans le préambule

\title{Exemple du package subfiles}
\author{Overleaf}
\date{ }

\begin{document}

\maketitle

\section{Introduction}

\subfile{sections/introduction}

\section{Deuxième section}

\subfile{sections/section2}

\end{document}
```

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

La compilation par fichier nécessite la ligne

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

dans le préambule, cela active le `subfiles` package. Ensuite, chaque sous-fichier externe doit être importé avec la commande `\subfile{}`. Dans l'exemple, les fichiers `introduction.tex` et `section2.tex` sont importés dans le fichier principal depuis le `sections` dossier. Notez que l'extension du fichier n'est pas obligatoire.

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

### Les sous-fichiers

Une fois votre fichier principal configuré, chaque sous-fichier doit avoir une structure particulière.

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

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

Bonjour, voici du texte sans signification...

\end{document}
```

![CompileSubfilesEx2OverleafV2.png](/files/680ef7e4d81dcee6814f695471a368d1b1ccb878)

Désormais, ce fichier peut être compilé comme un fichier autonome ; la classe de document et le reste du préambule seront identiques à ceux définis dans le document principal.

La première commande ici est

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

le paramètre entre crochets, `../main.tex`, est le chemin relatif vers le document principal. Dans ce cas, le fichier `introduction.tex` se trouve dans le dossier `sections`, par conséquent, le fichier `main.tex` se trouve un niveau au-dessus du dossier courant (c'est ce que `../` signifie).

Vous devrez également utiliser la `\subfix` commande avec le chemin relatif du dossier lors de la spécification de `\graphicspath` dans `introduction.tex`:

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

Le contenu réel est ensuite saisi dans `\begin{document}` et `\end{document}`. Tout ce qui se trouve en dehors de cet environnement sera ignoré, ou plus précisément, sera considéré comme faisant partie du préambule. Évitez de laisser des lignes vides en haut et en bas du fichier.

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

## Le package standalone

Le package **standalone** offre les mêmes fonctionnalités que **subfiles** et est plus flexible, mais la syntaxe est plus complexe et sujette aux erreurs. La principale différence est que chaque sous-fichier possède son propre préambule.

Les exemples de cette section ont la structure de fichiers hiérarchique suivante :

![CompileSubfilesEx3OverleafV2.png](/files/5b1d9b8468858b6dbe07a7fe0f183011c1b64e7f)

### Le fichier principal

Le fichier principal est très similaire à celui de tout autre projet à plusieurs fichiers.

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

\title{Exemple du package standalone}
\author{Overleaf}
\date{mai 2021}

\begin{document}

\maketitle

\section{Première section}
\import{sections/}{introduction}

\section{Deuxième section}
\import{sections/}{section2}

\end{document}
```

![CompileSubfilesEx3Overleaf.png](/files/6473db4304e51f50588e248342814bef85f7d5de)

La ligne

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

active le **standalone** package ; il doit être placé tôt dans le document. Le paramètre entre crochets indique à LaTeX d'importer le préambule de chaque sous-fichier (les packages ne sont importés qu'une seule fois) ; s'il est omis, assurez-vous d'avoir toutes les commandes nécessaires dans le préambule du document principal pour que les sous-fichiers fonctionnent. Il faut faire attention aux éventuelles incompatibilités entre les différents préambules.

Dans le corps du document principal, chaque sous-fichier est importé avec `\import{}{}`. La commande standard `\input{}` peut également être utilisée, mais celle de cet exemple est recommandée pour [gérer de grands projets](/latex/fr/structure-du-document/07-management-in-a-large-project.md) car elle évite les erreurs dans les fichiers imbriqués.

[Ouvrez un exemple du `standalone` package dans Overleaf](https://www.overleaf.com/project/new/template/19636?id=66440758\&templateName=Standalone+package+example\&latexEngine=pdflatex\&texImage=\&mainFile=)

### Les sous-fichiers

Chaque sous-fichier doit avoir son propre préambule et importer tous les packages nécessaires pour fonctionner comme document autonome.

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

\begin{document}
Une figure TikZ sera rendue sous cette ligne

\begin{figure}[ht]
\centering
\subimport{../}{diagram.tex}
\label{fig:tikzexample}
\caption{Un joli diagramme simple}
\end{figure}

\blindtext
\end{document}
```

![CompileSubfilesEx4OverleafV2.png](/files/89eb033bbdd2d9aeed43bb38c5e0c3025ed29f36)

La première ligne du sous-fichier est

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

Cela indique qu'il s'agit d'un fichier à utiliser avec le **standalone** package ; il y a deux paramètres facultatifs entre crochets.

* `class=article`. Définit `article` comme classe sous-jacente ; toute autre classe peut être utilisée : book, report, etc. (sauf beamer).
* `crop=false`. Si cette option est omise, la sortie sera recadrée à une taille minimale.

La commande suivante n'est pas obligatoire

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

mais doit être utilisée dans cet exemple parce qu'il y a un **standalone** fichier imbriqué ici. Un [schéma TikZ](/latex/fr/figures-et-tableaux/05-tikz-package.md) est inséré avec [`\subimport{../}{diagram.tex}`](/latex/fr/structure-du-document/07-management-in-a-large-project.md#importing-files), vous pouvez voir le contenu du fichier « diagram.tex » ci-dessous :

```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},
]
%Nœuds
\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};

%Lignes
\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}
```

[Ouvrez cet exemple TikZ autonome dans 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/c30a5d93dfa63be04022666b2d53931ace238b6f)

C'est la fonctionnalité principale du **standalone**, vous pouvez importer ce fichier dans n'importe quel autre document et réutiliser le code. Par exemple, ce diagramme peut ensuite être utilisé dans une présentation sans autre modification.

[Ouvrez un exemple du `standalone` package dans Overleaf](https://www.overleaf.com/project/new/template/19636?id=66440758\&templateName=Standalone+package+example\&latexEngine=pdflatex\&texImage=\&mainFile=)

## Lectures complémentaires

Pour plus d'informations, voir

* [Gestion dans un grand projet](/latex/fr/structure-du-document/07-management-in-a-large-project.md)
* [Référencement croisé des sections et des équations](/latex/fr/structure-du-document/03-cross-referencing-sections-equations-and-floats.md)
* [Index](/latex/fr/structure-du-document/04-indices.md)
* [Glossaires](/latex/fr/structure-du-document/05-glossaries.md)
* [Hyperliens](/latex/fr/structure-du-document/09-hyperlinks.md)
* [Numérotation des pages](/latex/fr/mise-en-forme/03-page-numbering.md)
* [Documents recto et recto-verso](/latex/fr/mise-en-forme/08-single-sided-and-double-sided-documents.md)
* [Colonnes multiples](/latex/fr/mise-en-forme/09-multiple-columns.md)
* [Mise en forme des paragraphes](/latex/fr/mise-en-forme/04-articles-how-to-change-paragraph-spacing-in-latex.md)
* [Format de page et marges](/latex/fr/mise-en-forme/07-page-size-and-margins.md)
* [Compteurs](/latex/fr/mise-en-forme/10-counters.md)
* [Notes de marge](/latex/fr/mise-en-forme/15-margin-notes.md)
* [Gras, italique et soulignement](/latex/fr/bases-de-latex/03-bold-italics-and-underlining.md)
* [Tailles, familles et styles de police](/latex/fr/polices/01-font-sizes-families-and-styles.md)
* [Familles de polices](/latex/fr/polices/02-font-typefaces.md)
* [Prise en charge des polices modernes avec XeLaTeX](/latex/fr/polices/03-xelatex.md)
* [Prise en charge des langues internationales](/latex/fr/langues/03-international-language-support.md)
* [Tailles, familles et styles de police](/latex/fr/polices/01-font-sizes-families-and-styles.md)
* [Compilation de grands projets](/latex/fr/base-de-connaissances/038-fixing-and-preventing-compile-timeouts.md#compiling-big-projects)
* [Insertion d'images](/latex/fr/autres-sujets/27-inserting-images.md)
* [Package TikZ](/latex/fr/figures-et-tableaux/05-tikz-package.md)
* [Écrire votre propre package](/latex/fr/fichiers-de-classe/03-writing-your-own-package.md)
* [Écrire votre propre classe](/latex/fr/fichiers-de-classe/04-writing-your-own-class.md)
* [Le **subfiles** documentation du paquet](http://repositorios.cpai.unb.br/ctan/macros/latex/contrib/subfiles/subfiles.pdf)
* [Le **standalone** documentation du paquet](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/fr/structure-du-document/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.
