<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\chapter{Structurer ses projets}

\epigraph{Or les gens ne s'aperÃ§oivent pas qu'ils ne connaissent pas l'essence de chaque chose. Ainsi, croyant la connaÃ®tre, ils ne s'accordent pas sur ce qui constitue le point de dÃ©part de l'examen, et, lorsqu'ils avancent, il est normal qu'ils en paient le prix : car ils ne sont d'accord ni avec eux-mÃªmes, ni les uns avec les autres.}{\textsc{Platon}, \textit{PhÃ¨dre}, 237c}

\label{structure-docs}\lettrine{L}{a} rÃ©daction de rapports ou de guides peut trÃ¨s vite contenir un nombre important de lignes (prÃ©ambule et les commandes dÃ©finies, chapitres, contenu). DÃ¨s lors, la relecture devient indigeste et difficile. Il est grand de reprendre le contrÃ´le sur l'organisation de ses documents \LaTeX{} !

\section{Un peu de rangement}

Pour commencer, nous supposons que ton projet \LaTeX{} tient dans un dossier racine, identifiÃ© de maniÃ¨re relative par la formulation \textcolor{orange}{\verb?./?}. Nous proposons de ranger ce dossier racine de la maniÃ¨re suivante : \begin{itemize}[label = \ding{118}]
\item un sous-dossier \verb?Chapitres?, qui va contenir tout le contenu du projet, ainsi que les packages appelÃ©es et la configuration (des packages ou personnelle) utilisÃ©e ;

\item un sous-dossier \verb?Images?, pour archiver toutes les images qui vont Ãªtre utilisÃ©es dans le projet ;

\item le fichier principal \verb?main.tex?, qui va jouer l'Ã©quivalent de chef d'orchestre du projet. \\
\end{itemize}

Nous pouvons alors reprÃ©senter cette structuration du projet par l'arborescence suivante :

\begin{figure}[H]
\centering
\begin{tikzpicture}[grow via three points = {one child at (0.5,-0.7) and two children at (0.5,-0.7) and (0.5,-1.4)}, edge from parent path = {(\tikzparentnode.south) |- (\tikzchildnode.west)}, every node/.style = {right, font = \ttfamily}, thick]
% Aucune ligne vierge aprÃ¨s le node ! (pas d'aÃ©ration du code possible)
\node {\folder{} \textcolor{orange}{./}}
	child { node {\folder{} \textbf{Chapitres}}
		child { node {main-biblio.bib}}
		child { node {chap1.tex}}
		child { node {\dots{}}}
		child { node {configuration.tex}}
		child { node {packages.tex}}
	}
	child[missing] {} % Saut de ligne Ã&nbsp; cause des "sous-enfants" prÃ©cÃ©dents
	child[missing] {}
	child[missing] {}
	child[missing] {}
	child[missing] {}
	child { node {\folder{} \textbf{Images}}
		child { node {image1.jpg}}
		child { node {\dots{}}}
	}
	child[missing] {}
	child[missing] {}
	child { node {\textbf{main.tex}}};
\end{tikzpicture}
\caption{Arborescence du projet}
\end{figure}

Bien entendu, il s'agit d'une premiÃ¨re proposition minimaliste, que tu peux Ã©toffer par la suite selon ton besoin (sous-dossiers supplÃ©mentaires, fichiers \verb?.tex? plus nombreux\dots{}).

\begin{attention}{Chemin absolu et chemin relatif}
Par la suite, nous allons devoir indiquer Ã&nbsp; \LaTeX{} oÃ¹ sont rangÃ©s les diffÃ©rents fichiers \verb?.tex? ou images Ã&nbsp; appeler dans le document. 

Nous pouvons fonctionner avec un chemin absolu, c'est-Ã&nbsp;-dire en indiquant trÃ¨s prÃ©cisÃ©ment son emplacement sur le disque. Par exemple : \verb?C:/&lt;user&gt;/Projets/LaTeX/?. \\

Cette mÃ©thode prÃ©sente un inconvÃ©nient majeur : tu dois modifier dans ton code \LaTeX{} tous les chemins indiquÃ©s si jamais tu changes de dossier ! \textbf{C'est pourquoi il faut utiliser un chemin relatif.} \textcolor{orange}{\verb?./?} renvoie au dossier courant, en l'occurrence celui de \verb?main.tex? (fichier \LaTeX{} principal qui va gÃ©nÃ©rer le rapport).

Et s'il faut revenir en arriÃ¨re dans l'arborescence, ``remonter en arriÃ¨re d'un dossier'' en quelque sorte, la notation \textcolor{orange}{\verb?../?} existe aussi.
\end{attention}

Voyons maintenant les diffÃ©rentes options possibles pour appeler tous ces fichiers dans notre fichier principal \verb?main.tex?.

\section{Commandes disponibles}

Pour une fois, je vais faire un travail de traduction car d'autres personnes ont admirablement bien synthÃ©tisÃ© les 3 commandes que je veux vous prÃ©senter et leurs propriÃ©tÃ©s : \url{https://tex.stackexchange.com/questions/246/when-should-i-use-input-vs-include}. \begin{enumerate}
\item \verb?\?\verb?input{./&lt;chemin&gt;/&lt;nom-fichier&gt;}? : importation brute du fichier \verb?&lt;nom-fichier&gt;.tex? (copier-coller du contenu). Cette commande se rÃ©vÃ¨le donc utile pour renseigner le prÃ©ambule (chargement des packages) ou importer du code \LaTeX{} ponctuellement.

Par exemple, je pense notamment Ã&nbsp; des schÃ©mas, graphes ou encore des formules mathÃ©matiques alambiquÃ©es que tu ne veux pas recopier. Cette solution garantit alors l'homogÃ©nÃ©itÃ© de ton code dans ton document : il suffit de changer le fichier \verb?.tex? d'origine et les changements s'appliqueront sur tout le rapport.

\item \verb?\?\verb?include{./&lt;chemin&gt;/&lt;nom-fichier&gt;}? : importation plus sophistiquÃ©e du fichier \verb?&lt;nom-fichier&gt;.tex?, avec un \verb?\clearpage? avant et aprÃ¨s. Cette commande prend alors tout son sens pour importer des parties logiques de ton rapport -- \verb?chapter? principalement, pour ne pas Ãªtre impactÃ© par le \verb?\clearpage?.

\textbf{C'est pourquoi cette commande a toute son utilitÃ© au sein du fichier principal \verb?main.tex?.} Des propriÃ©tÃ©s notables sont Ã&nbsp; retenir : \begin{itemize}[label = \ding{118}]
\item un fichier \verb?&lt;nom-fichier&gt;.aux? est gÃ©nÃ©rÃ©. Il contient toutes les rÃ©fÃ©rences et la pagination associÃ©e, ce qui octroie un lÃ©ger gain de temps Ã&nbsp; partir de la 2\up{Ã¨me} compilation.

Si tu gÃ©nÃ¨res ton rapport entier puis que tu veux travailler que sur un seul fichier, tu conserves ainsi la pagination finale ;

\item l'ajout natif de la commande \verb?\clearpage? empÃªche l'utilisation de \verb?\?\verb?include? dans le prÃ©ambule ou pour des petits morceaux de code ;

\item il est impossible d'utiliser \verb?\?\verb?include? dans un fichier dÃ©jÃ&nbsp; appelÃ© par cette commande (probablement pour Ã©viter les conflits et les gestions de multiples fichiers \verb?.aux?).
\end{itemize}

\item \verb?\?\verb?includeonly{./&lt;chemin&gt;/&lt;nom-fichier1&gt;,...}? : gÃ©nÃ©ration du rapport en appelant seulement les fichiers indiquÃ©s et appelÃ©s par \verb?\?\verb?include?. \textbf{Son appel se fait uniquement dans le \emph{prÃ©ambule} !} Il ne faut pas non plus mettre des espaces dans la commande. La virgule joue le rÃ´le de sÃ©parateur des diffÃ©rents fichiers.

Dans ce cas, si tu souhaites travailler sur une partie bien spÃ©cifique de ton rapport, tu gagnes un coup de \textit{boost} considÃ©rable lors de la compilation ! En effet, \LaTeX{} va compiler uniquement le(s) fichier(s) indiquÃ©(s), et non le rapport dans sa totalitÃ©. C'est peut-Ãªtre anodin sur de petits documents mais c'est extrÃªmement puissant si le rapport dÃ©passe 30 pages.

\item \verb?\graphicspath{{./Images/}}? : commande spÃ©cifique au package \verb?graphicx?, elle permet d'indiquer le chemin pour intÃ©grer les images.

Ainsi, les images sont appelÃ©es simplement (cf. \ref{chap-img} \nameref{chap-img}, p. \pageref{chap-img}), sans avoir besoin d'Ã©crire Ã&nbsp; chaque fois le chemin complet.

Plusieurs chemins peuvent Ãªtre renseignÃ©s avec cette commande, mÃªme si je n'en vois pas trop l'utilitÃ© : nous cherchons ici Ã&nbsp; structurer, pas Ã&nbsp; Ã©parpiller le contenu.
\end{enumerate}

\begin{regles}{Bilan concis}
\verb?\?\verb?input? est une macro ``bas niveau'' qui importe le contenu d'un fichier donnÃ©, comme s'il avait Ã©tÃ© copiÃ©-collÃ© manuellement. \verb?\?\verb?include? permet de gÃ©rer le fichier comme une unitÃ© logique Ã&nbsp; part entiÃ¨re (\verb?chapter?). Cette commande permet aussi de compiler des fichiers bien spÃ©cifiques grÃ¢ce Ã&nbsp; \verb?\?\verb?includeonly{fichier1,fichier2,...}?, ce qui garantit un considÃ©rable gain de temps Ã&nbsp; la compilation !
\end{regles}

\section{La pratique}

La thÃ©orie, c'est toujours trÃ¨s sympathique mais, dans ce guide, il y a des Ã©lÃ©ments concrets. Voyons donc tout de suite l'allure que prend notre fichier principal \verb?main.tex?\footnote{Pour rappel, il s'agit du fichier Ã&nbsp; partir duquel est lancÃ© la compilation.} :

\begin{code}{Le fichier \verb?main.tex?}
\documentclass[a4paper, 12pt]{report}   

% ICI, enlever les % devant les commandes
% (mis en pour Ã©viter les conflits avec l'arborescence Texmaker de mon projet)

% Chargement des packages et de la configuration utilisÃ©s
%\input{./Chapitres/packages}
%\input{./Chapitres/configuration}

%\includeonly{./Chapitres/chap1,./Chapitres/chap3}

%\usepackage{graphicx} % Pour les images
%\graphicspath{{./Images/}} % Sous-rÃ©pertoire pour les images


\begin{document}

\everymath{\displaystyle}

%\part{Partie I}

%\include{./Chapitres/chap1}
%\include{./Chapitres/chap2}

%\part{Partie II}

%\include{./Chapitres/chap3}
%\include{./Chapitres/chap4}

\end{document}
\end{code}

Comme tu peux le constater, tu dois Ã©crire le chemin relatif -- \verb?./Chapitres/? -- Ã&nbsp; chaque fois. Mais, quand tu y rÃ©flÃ©chis, tu ne changes pas tes dossiers tous les 4 matins. Et quand tu le fais, la fonction \og Remplacer \fg{} est la bienvenue ! \\

De plus, c'est raisonnable quand tu penses au temps de compilation gagnÃ© par la suite. Ce n'est pas la mÃªme chose d'attendre 1 seconde (compilation d'un fichier) ou 4 secondes (compilation d'un gros rapport), surtout si tu dois souvent compiler pour vÃ©rifier le code et le rendu.

\begin{conseil}{La petite astuce \Texmaker{}}
Tu dois trouver pÃ©nible d'Ã©crire une partie de ton rapport puis de devoir basculer sur le fichier \verb?main.tex? pour compiler. Et je te comprends ! \\

Fort heureusement, \Texmaker{} propose une solution toute simple : le \og document maÃ®tre \fg{}. Cette solution permet de dÃ©finir le fichier principal \verb?main.tex? comme rÃ©fÃ©rence : toutes les compilations se font alors depuis ce fichier, \textbf{mÃªme si tu travailles sur un autre !}

Pour activer cette option, ouvrir \verb?main.tex?, aller sur la barre de menus, choisir \verb?Options? puis \verb?DÃ©finir le document courant...?. Et c'est tout. Tu peux mÃªme constater que ce choix a bien Ã©tÃ© pris en compte. Il te suffit de regarder en bas Ã&nbsp; droite de la fenÃªtre \Texmaker{}. \\

Et si jamais tu veux rÃ©aliser des tests ou gÃ©nÃ©rer un fichier annexe alors que tu travailles sur ton rapport, tu peux soit fermer \Texmaker{} (aprÃ¨s avoir sauvegardÃ© ton travail) soit refaire la mÃªme procÃ©dure et choisir alors l'option \verb?Mode normal?.
\end{conseil}

\begin{attention}{Les noms de fichiers}
Pour la clartÃ© de ce guide, j'ai choisi d'appeler les fichiers \verb?chap1?, \verb?chap2?, etc. \textbf{Toutefois, je ne recommande pas d'utiliser une telle nomenclature !} \\

En effet, tu dois penser Ã&nbsp; tout changer le jour oÃ¹ tu veux ajouter un nouveau chapitre 1 ou 2 (noms de fichiers et commande \verb?\?\verb?include?). Selon moi, il est donc prÃ©fÃ©rable d'appeler explicitement ses fichiers (\verb?chap-texte?, \verb?page-garde?, \verb?annexes?, etc.). \\

De plus, \textbf{les espaces sont prohibÃ©s} dans les noms de fichiers (\verb?.tex? ou images) ! Autrement, les erreurs seront importantes.
\end{attention}

\section{D'autres solutions}

Les Ã©lÃ©ments proposÃ©s jusqu'Ã&nbsp; prÃ©sent constituent une introduction de ma part. Rien ne t'oblige Ã&nbsp; suivre Ã&nbsp; la lettre cette structure. Libre Ã&nbsp; toi de crÃ©er plus de dossiers pour ranger tes fichiers et images, voire des sous-dossiers. L'arborescence proposÃ©e peut Ã©voluer trÃ¨s facilement une fois le concept compris et assimilÃ©.

Tu es aussi libre de crÃ©er des fichiers \verb?.tex? qui te sont propres, comme une page de garde personnalisÃ©e, une introduction, le sommaire, des annexes, ou encore une 4\up{Ã¨me} de couverture. \\

Il existe aussi un package qui permet de distinguer dans la commande le chemin relatif et le nom du fichier Ã&nbsp; importer : \verb?import?. Mais le problÃ¨me reste le mÃªme selon moi, comme il faut indiquer le chemin Ã&nbsp; chaque fois (Ã&nbsp; moins de dÃ©finir une commande gÃ©nÃ©rique, point qui reste Ã&nbsp; valider). \\

La page \url{http://blog.dorian-depriester.fr/latex/template-these/template-complet-pour-manuscrit-de-these} peut aussi t'apporter une aide considÃ©rable et te donner de nouvelles pistes Ã&nbsp; explorer ! Des points intÃ©ressants sont abordÃ©s, comme gÃ©nÃ©rer un mini-sommaire en dÃ©but de chaque chapitre, plusieurs bibliographies, utiliser un \textit{backref} (bibliographie), et bien d'autres encore.</pre></body></html>