Comment installer des packages juste pour moi?

Il peut arriver que vous ayez besoin d'une nouvelle version d'un package ou d'une police de caractères, mais que la machine que vous utilisez soit gérée par quelqu'un qui n'est pas disposé à effectuer les mises à jour et qui ne vous accorde pas les droits nécessaires pour que vous puissiez faire le travail vous-même. Une installation « temporaire » est parfois la bonne approche, cependant, s'il y a la moindre chance que cette installation soit nécessaire pour plus d'un projet, vous voudrez sans doute quelque chose de plus durable.

Si vous disposez d'un espace-disque suffisant (éventuellement sur un espace temporaire, comme un “scratch”), une bonne approche consiste à installer une version privée complète de (La)TeX, incluant les nouveaux éléments dont vous avez besoin ; c'est l'idéal, mais ça utilise plusieurs gigaoctets d'espace-disque.

Comme vous ne pouvez rien installer dans l'arborescence texmf publique, vous devez installer dans votre propre arborescence texmf ; heureusement, la TeX Directory Structure (TDS) a prévu ça, et les distributions modernes vous permettent de le faire. Les distributions actuelles font référence à l'arborescence sous le nom de $TEXMFHOME, mais les versions plus anciennes utilisaient $HOMETEXMF ; si vous avez un doute, vous pouvez vérifier que votre système TeX supporte effectivement le mécanisme, en exécutant cette commande:

kpsewhich -var-value TEXMFHOME

(par exemple). Si tout va bien, ça renverra généralement le chemin d'un sous-répertoire texmf dans votre répertoire personnel ; sous MacOS, si vous utilisez MacTeX, le répertoire est généralement Library/texmf dans votre répertoire personnel.

Si vous avez la confirmation que ça fonctionne correctement, installez votre nouveau package (ou autre) au bon endroit dans un sous-répertoire de $HOME/texmf, et reconstruisez l'index de cette arborescence:

texhash $HOME/texmf

(L'argument indique quel arborescence vous indexez: il est nécessaire dans le cas présent, vu que vous n'avez pas accès à l'arborescence principale, or texhash sans cet argument essaierait d'écrire dans l'arborescence principale)

Cette méthode simple peut se heurter à deux obstacles:

Dans les deux cas, une bonne solution est d'écrire votre propre fichier de configuration texmf.cnf; ça peut paraître compliqué, mais en fait, c'est très simple à faire. Le fichier actuellement utilisé par votre installation peut être localisé à l'aide de la commande:

kpsewhich texmf.cnf

Faites une copie du fichier dans le répertoire que vous voulez; ce peut être n'importe quel répertoire, mais un choix évident est le répertoire web2c de l'arborescence que vous souhaitez créer, c'est-à-dire $HOME/texmf/web2c (ou quelque chose comme ça). Ensuite, définissez une variable d'environnement indiquant ce répertoire :

TEXMFCNF=$HOME/texmf/web2c
export TEXMFCNF

(pour Bash et autre shell de type Bourne), ou

setenv TEXMFCNF $HOME/texmf/web2c

(pour ksh ou autre shell de style C).

Maintenant, il ne vous reste plus qu'à modifier votre copie du fichier texmf.cnf. 8-)

Vous devriez y trouver une ligne qui définit l'arborescence dans laquelle tous les fichiers sont cherchés; la version la plus simple de cette ligne est:

TEXMF = !!$TEXMFMAIN

mais il est probable qu'il y ait plusieurs alternatives, mises en commentaires par des signes %, que la personne qui a installé votre système peut avoir laissées là. Quoi qu'il en soit, vous devez modifier la ligne active (celle qui n'est pas en commentaire): remplacez ce qui précède par trois lignes:

HOMETEXMF = $HOME/texmf
TEXMF = {$HOMETEXMF,!!$TEXMFMAIN}
% TEXMF = !!$TEXMFMAIN

Le point important est que $HOMETEXMF doit précéder les autres chemins, à l'intérieur des accolades. Ainsi, c'est ce répertoire qui aura la priorité. Par exemple, si l'original était

TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN}

il doit être remplacé par:

HOMETEXMF = $HOME/texmf
TEXMF = {$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN}
% TEXMF = {!!$LOCALTEXMF,!!$TEXMFMAIN}

(comme vous le voyez, on a mis la version précédente de la ligne en commentaire. C'est une bonne pratique pour se souvenir des modifications que vous avez faites, au cas où vous devriez changer de nouveau quelque chose plus tard).

Les points d'exclamation !! indiquent à l'outil de recherche de fichiers qu'il doit utiliser le fichier d'index pour consulter le contenu de ces répertoires, et non le parcourir de façon exhaustive. Ainsi, (La)TeX trouve ses fichiers un peu plus rapidement.

Cela suppose que la commande texhash est bien exécutée à chaque fois que le contenu est modifié, pour mettre à jour l'index. On peut compter là-dessus pour les répertoires gérés automatiquement (par exemple ceux mis à jour par l'outil de gestion des packages tlmgr); par contre, pour les répertoires que vous maintenez vous-mêmes, c'est plutôt déconseillé car vous oublierez un jour ou l'autre d'exécuter texhash

Après, si vous êtes sûr de vous, il reste possible d'écrire:

TEXMF = {!!$HOMETEXMF,!!$LOCALTEXMF,!!$TEXMFMAIN}

Après avoir effectué tous ces changements, (La)TeX devrait pouvoir utiliser les fichiers de votre nouvelle arborescence, en priorité par rapport à ceux de l'arborescence principale — vous pouvez l'utiliser pour mettre à jour des packages présents dans l'arborescence principale, ainsi que pour installer de nouveaux packages.


Source: