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
.idx
des 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
.idx
en 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.idx
produit 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
.tex
par (Xe)LaTeX, la commande\printindex
, définie par le package d’indexation, va lire le fichier.ind
de l’index demandé et l’interpréter. Le fichier.ind
ne 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, 1
Ce 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, 1
Cette 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, 1
Mais 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
.
Vos commentaires
# Le 13 avril 2015 à 09:40, par Stéphane P. En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
Youpi, merci pour ce nouvel article qui s’annonce fort utile !
# Le 13 avril 2015 à 11:35, par Florent En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
Un logiciel qui a l’air effectivement prometteur... mais qui n’est pas inclus dans les packages de ma distrib’ (Debian Jessie) avec des dépendances suffisamment profondes pour rendre l’installation périlleuse.
Sinon, pour les index d’auteurs avec des caractères accentués (option indexing=true de Biblatex, ma seule utilisation de makeindex), c’est dans les faits assez marginal même si cela a dû causer la perte de l’accent pour Claude Évin...
En tout cas, je suivrais avec attention tes articles sur le sujet...
# Le 13 avril 2015 à 11:38, par Maïeul En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
il est inclus dans TexLive 2014. Après j’y peux rien si tu utilise des distributions Linux qui n’ont pas les dernières versions de TeXLive ;-)
# Le 13 avril 2015 à 18:43, par Robert Alessi En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
De la part d’un utilisateur de Linux depuis des temps immémoriaux : installez, utilisez et mettez à jour texlive et uniquement texlive. Dans quelques semaines, vous pourrez le faire avec la version 2015. C’est le moment.
# Le 14 juillet 2015 à 16:07, par Joseph-tux En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
Florent, sur ma Jessie je trouve :
Mon sources.list est le suivant :
La version de TexLive est : 2014.20141024-2
Il est possible que tu ais à mettre à jour ta sources.list ?
# Le 17 juillet 2015 à 13:11, par Florent En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
Bonjour,
Merci de ta réponse. J’ai bien regardé ma sources.list et mis à jour mes paquets.
xindy
n’est pas dans les dépôts . Voir https://tracker.debian.org/pkg/xindy. Curieusement ma version de TexLive est bien 2015.En revanche, ce que tu affiches avec
locate
semble plutôt renvoyer à de la documentation présent sous ton /home (cf : des fichiers *.pdf et non l’exécutable).Bref, à voir et attendre...
# Le 29 juillet 2015 à 20:44, par Joseph-tux En réponse à :
xindy
, un outil d’indexation plus efficace quemakeindex
Désolé, je suis passé un peu vite. Effectivement, n’étaient présents dans Jessie que des fichiers de documentation, et non xindy. en outre, ils semblent même ne plus exister aujourd’hui. Avec mes excuses pour ces faux espoirs.