Comment inclure des fichiers sans modifier leurs liens internes ?#

La construction d’un document volumineux se fait souvent par division de celui-ci en un ensemble de fichiers (par exemple, un par chapitre) et par conservation de tout ce qui concerne chacun de ces fichiers dans un sous-dossier dédié. Malheureusement, n’a pas de « répertoire courant » modifiable, de sorte que tous les fichiers auxquels vous faites référence doivent être rédigés (ou amendés) en tenant compte du dossier où est présent le fichier principal et non là où est leur propre dossier. Ce qui est plutôt contre-intuitif.

Il peut être approprié d’utiliser la technique « d’extension de chemin » utilisée dans les installations temporaires (évoquées en question « Comment installer temporarirement des fichiers  ») pour résoudre ce problème. Cependant, s’il y a plusieurs fichiers avec le même nom dans votre document, tels que chapitre1/fig1.eps et chapitre2/fig1.eps, vous n’aidez guère au moment où, dans le fichier du chapitre principal, vous utiliser une commande \input{fig1}. Bien que la résolution soit évidente avec des fichiers préparés manuellement (ne les nommez juste pas tous de la même manière), les fichiers produits automatiquement ont souvent des noms répétitifs et les renommer peut causer bien des erreurs.

1.  Avec l’extension import#

L’extension import vient à votre aide ici : elle définit une commande \import qui accepte un nom de chemin complet avec le nom d’un fichier dans ce répertoire et organise tout pour que cela fonctionne correctement. Ainsi, par exemple, si /home/ami/results.tex contient :

Graphique : \includegraphics{image}
\input{explication}

alors \import{/home/ami/}{results} inclura à la fois un graphique et le fichier explication.tex présents dans le dossier /home/ami/. Une commande \subimport fait le même genre de chose pour un sous-répertoire (un chemin relatif plutôt qu’un chemin absolu). L’extension définit également les commandes \include et \subincludefrom.

2.  Avec l’extension chapterfolder#

L’extension chapterfolder fournit des commandes pour gérer son modèle d’inclusion de fichier dans un document. Elle fournit les commandes \cfpart, \cfchapter, \cfsection et \cfsubsection, chacune prenant des arguments de répertoire et de fichier, par exemple :

\cfpart[pt 2]{Partie deux}{partie2}{partie}

Cette commande va émettre une commande classique \part[pt 2]{Partie deux} puis inclure le fichier partie2/partie.tex pour lequel partie2/ est le dossier courant. Il existe également des commandes de la forme \cfpartstar qui correspondent aux versions « étoilées » (\part* dans le cas présent).

Une fois que vous êtes au sein d’un document chapterfolder, vous pouvez utiliser la commande \cfinput pour inclure un élément relatif au dossier courant ou vous pouvez utiliser la commande \input, en utilisant \cfcurrentfolder pour obtenir un chemin vers le fichier. De manière similaire, sont définis quelques autres chemins, par exemple \cfcurrentfolderfigure pour un sous-dossier figure/.