Comment spécifier un chemin pour les fichiers à inclure ?#

Par défaut, les commandes graphiques telles que \includegraphics cherchent où que se trouvent le fichier pour déterminer où se trouve le fichier graphique à intégrer. Cela peut réduire votre flexibilité si vous choisissez de conserver vos fichiers graphiques dans un répertoire commun, loin de vos sources ou

1.  Avec l’extension graphicx#

L’extension graphicx fournit la commande \graphicspath (comme les extensions graphics et epsfig), dont l’argument contiendra une suite de chemins d’accès entre accolades, chaque chemin finissant par un /. En voici un exemple, à inclure dans le préambule du document :

\graphicspath{{images/grandes/}{images/petites/}}

Cette commande \graphicspath a deux particularités :

  • si certains systèmes ou ne vous permettent d’utiliser que des fichiers du répertoire courant et ses sous-répertoires, \graphicspath n’impose, lui, aucune restriction de ce type : vous pouvez accéder à des fichiers placés n’importe où ;

  • elle n’affecte pas les opérations des extensions autres que celles citées ci-dessus. Ainsi, les extensions obsolètes epsf et psfig y sont insensibles.

Le léger inconvénient de la méthode \graphicspath est son « inefficacité ». L’extension appelle pour chaque entrée de la liste afin qu’il la recherche, ce qui ralentit la compilation. De plus, se souvient du nom de tout fichier qu’il lui est demandé de rechercher, perdant ainsi de la mémoire, de sorte qu’un document utilisant un très grand nombre d’entrées graphiques pourrait être parasité par un manque de mémoire… une telle utilisation semblant toutefois un peu exceptionnelle.

2.  Avec les variables d’environnement#

Il est également possible d’ajouter des chemins de dossiers contenant des fichiers d’images à la variable d’environnement TEXINPUTS (aussi évoquée à la question « Comment changer le chemin recherche de fichiers de  »). Ce genre de modifications dépend de l’environnement utilisé. Sur un système Unix/Linux, la ligne ressemblera à ceci :

TEXINPUTS=.:⟨chemin(s) de dossiers image(s)⟩:

Sur un système Windows, le séparateur sera « ; » plutôt que « : ». Le « . » initial est là pour s’assurer que le répertoire courant est recherché en premier. Le « : » de fin indique que d’autres chemins peuvent venir compléter ces valeurs.

Cette méthode a le mérite de l’efficacité ( fait toutes les recherches, ce qui va vite) mais elle reste lourde et peut s’avérer peu pratique à utiliser dans les configurations Windows.

3.  Avec l’extension relinput#

L’extension relinput, définie dans l’extension stack, permet d’inclure un fichier dans un répertoire, et de rendre toutes les inclusions faites par ce fichier relatives au répertoire où se trouve ce dernier fichier. Elle sert de base à l’extension import présentée plus bas.

Pour illustrer cela, prenons un exemple avec la hiérarchie de répertoire suivante d’un répertoire nommé pere/. Celui-ci contient :

  • un fichier fichier1.tex ;

  • un fichier fichier2.tex ;

  • un sous-répertoire fils/ qui contient :

    • un fichier inclus.tex,

    • un fichier fichier2.tex.

Le fichier inclus.tex contient la ligne suivante :

\input{fichier2.tex}

et est inclus par le fichier fichier1.tex grace à la commande

\input{fils/inclus.tex}

La question est de savoir quel fichier2.tex sera utilisé. Dans le cas présent, c’est celui du répertoire pere/.

Supposons maintenant que l’extension relinput est utilisée et que la ligne suivante est présente dans le fichier inclus.tex :

\relinput{fils}{inclus.tex}

Supposons également que la ligne suivante est incluse dans le fichier fichier1.tex :

\relinput{.}{fichier2.tex}

Alors c’est le fichier du répertoire fils/ qui est utilisé. Pour inclure le fichier fichier2.tex du répertoire pere/, il suffit d’utiliser le code suivant :

\relinput{..}{fichier2.tex}

4.  Avec l’extension import#

Si votre document est divisé en plusieurs répertoires et que chaque répertoire a ses graphiques associés, l’extension import pourrait bien être ce qu’il vous faut. Consultez à ce sujet la question « Comment inclure des fichiers sans modifier leurs liens internes ? ».