Rappel : comment fonctionne l’indexation avec (Xe)LaTeX
L’indexation avec LaTeX fonctionne classiquement ainsi :
- Une commande d’indexation, définie par un package ad hoc, est appelée par l’utilisateur. Souvent cette commande est tout simplement
\index{<leterme>}. Les packages proposant de gérer plusieurs index proposent généralement des commandes de la forme\index[<lindex>]{<leterme>}. - Cette commande écrit dans un ou plusieurs fichiers
.idxdes lignes de la forme\indexentry{<leterme>}{<lemplacement>}. Si vous utilisez le packagesplitindex, la forme utilisée est<code>\indexentry[<lindex>{<leterme>}{<lemplacement>}. - Un programme externe à LaTeX transforme ce ou ces fichiers
.idxen des fichiers.ind, qui regroupe les termes et indique les emplacements. Classiquement ce fichier contiendra quelque chose comme :\begin{theindex} \item <leterme>, <lemplacement>, <lemplacement2> \item <leterme2>, <lemplacement> \end{theindex}Le programme qui procède à cette transformation est généralement
makeindex, mais il peut aussi s’agir desplitindex(qui lit les fichiers.idxproduit par le package homonyme) ouxindy. Il utilise pour ce faire des règles qui lui sont propres et d’autres qui dépendent de fichiers spécifiques. Dans le cas demakeindex, il s’agit du fichier de style.ist. Dans le cas dexindy</code, il s'agit de fichiers de configuration <code>.xdy. - lors de la seconde lecture du fichier
.texpar (Xe)LaTeX, la commande\printindex, définie par le package d’indexation, va lire le fichier.indde l’index demandé et l’interpréter. Le fichier.indne contenant que du code TeX, son interprétation suit les règles classiques de compréhension du code TeX.
Ainsi, il y a trois étapes pour générer un index avec LaTeX :
- exécution de (Xe)LaTeX qui écrit le(s) fichier(s)
.idx - exécution du logiciel d’indexation, qui transforme le(s) fichier(s) d’indexation brut(s) (
.idx) en fichier(s) d’indexation formaté(s) (.ind). - seconde exécution de (Xe)LaTeX qui lit le(s) fichier(s)
.ind.
Cependant si vous utilisez le package imakeidx ou son successeur indextools, celui ci utilise une des possibilités des moteurs TeX modernes : la possibilité de lancer automatiquement un package. C’est pourquoi vous n’avez généralement pas à lancer makeindex et ne faites par conséquences qu’un compilation (Xe)LaTeX.
Avantages de xindy sur makeindex
Le logiciel makeindex est le logiciel historique [2].
Son principal défaut, qui à lui seul justifie de passer à xindy, est de fonctionne uniquement en ASCII et d’ignorer l’Unicode, ce qui s’avère particulièrement problématique si on rédige un document dans une autre langue que l’anglais.
Ainsi un fichier .idx contenant les lignes suivantes :
\indexentry{Souris}{1}
\indexentry{Chat}{1}
\indexentry{Éléphant}{1}Sera transformé en fichier .ind contenant les lignes suivantes
\item Chat, 1
\indexspace
\item Souris, 1
\indexspace
\item Éléphant, 1Ce qui ne respecte visiblement pas l’ordre alphabétique. La solution classique est alors d’utiliser le @ pour forcer l’ordre de tri.
Ainsi un fichier contenant .idx
\indexentry{Chat}{1}
\indexentry{Elephant@Éléphant}{1}
\indexentry{Souris}{1}sera transformé par makeindex en fichier .ind contenant :
\item Chat, 1
\indexspace
\item Éléphant, 1
\indexspace
\item Souris, 1Cette solution fonctionne, mais s’avère peut pratique à l’usage, notamment si on veut créer des commandes pour automatisation l’indexation de certains termes.
Avec xindy, ce problème ne se pose plus. Pour peux qu’on lui fournisse les bon paramètres, un fichier .idx contenant
\indexentry{Chat}{1}
\indexentry{Éléphant}{1}
\indexentry{Souris}{1} \item Chat, 1
\indexspace
\item Éléphant, 1
\indexspace
\item Souris, 1Mais xindy propose bien plus que cela. Les prochains articles expliqueront comment se servir de certains fonctionnalités comme :
- la création d’un ordre d’indexation personnalisé, par exemple pour trier les empereurs par date de règne, sans passer par l’astuce du
@. - la gestion des numéros de renvois contenant des sous numéros, par exemple sous la forme page, ligne.
- d’autres que je découvrirait au fur et à mesure
Il y a cependant quelques limites à xindy, la première étant une moindre compatibilité avec le package hyperref. Mais nous y viendrons en temps voulu.
texindy, un xindy spécial LaTeX
Une dernière précision s’impose avant de passer aux choses sérieux. Contrairement à makeindex qui transforme des fichiers utilisant une syntaxe LaTeX en des fichiers utilisant une syntaxe LaTeX, xindy peut travailler avec des fichiers ayant une autre syntaxe, par exemple du xml.
C’est pourquoi il existe une version spécifique de xindy, nommée texxindy qui possèdent des réglages par défaut spécifiques aux fichiers utilisant une syntaxe .tex.