Préréquis
Je suppose que vous utilisez XeLaTeX et non pas LaTeX ou pdfLaTeX [1].
Je suppose également que xindy est installé sur votre ordinateur :
- Si vous utilisez TeXLive2014 ou MacTeX 2014, c’est déjà le cas.
- Si vous utilisez MikTeX, il existe un tutoriel pour l’installation. Je n’ai pas encore testé, donc tout retour est le bienvenu.
Enfin, je suppose que vous savez comment exécuter LaTeX et ses auxiliaires en lignes de commandes. Si vous ne savez pas :
- lisez l’annexe de mon livre (obligatoire pour les gens sous windows)
- ou bien lisez l’article LaTeX en ligne de commande
Fichier d’exemple minimal
Nous prendrons le fichier suivant [2] :
% À compiler avec XeLaTeX
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\usepackage{setspace}
\onehalfspacing
\usepackage[xindy]{indextools}%On précise qu'on veut utiliser xindy
\makeindex[name=animal,title=Animaux]
\makeindex[name=plante,title=Plantes]
\begin{document}
On va parler de
chats\index[animal]{chat},
de tortues\index[animal]{tortue},
d'élèphant\index[animal]{élèphant},
et soyons fou, d'élans\index[animal]{élan}.
\newpage
Ces animaux aiment bien les carottes\index[plante]{carotte},
les anémones\index[plante]{anémone},
les anthémis\index[plante]{anthémis},
et les courgette\index[plante]{courgettes}.
\newpage
\printindex[animal]
\printindex[plante]
\end{document}
Première compilation XeLaTeX
Compilez le document avec XeLaTeX. Vous obtenez deux pages, mais pas d’index. En revanche, vous obtenez le message suivant dans les messages de compilation
texindy animal.idx'.
Package indextools Warning: Remember to run xelatex again after calling
(indextools)
texindy plante.idx’.
Tout est dit : alors que indextools peut exécuter makeindex
automatiquement, ce n’est pas le cas pour xindy
[3].
Qu’importe, nous allons le faire maintenant.
Deux exécutions de texindy
On constate que deux fichiers .idx
ont été produits : animal.idx
et plante.idx
. Nous allons donc les transformer en appelant texindy
, le xindy
préconfiguré pour LaTeX.
En ligne de commande donc, frapper (le $
représente l’invite de commande) :
$ texindy -L french -I xelatex animal.idx
$ texindy -L french -I xelatex plante.idx
Explication de code :
-
texindy
le programme que l’on appelle. -
-L french
utilisez les règles de classement alphabétique du français. Chaque langue à ses propres règles de classement [4], c’est pourquoi il est nécessaire de préciser la langue. Et si vous utilisez plusieurs langues dans votre index ? On y viendra plus tard. -
-I xelatex
indique que nous chargeons les règles propres àxelatex
, autrement dit que nos fichiers.idx
sont encodés en UTF8. Après chaque retour chariot, vous obtiendrez normalement des messages de compilationxindy
.
Vous devriez désormais avoir deux fichiers ; animal.ind
et plante.ind
.
Si oui, nous pouvons passer à la deuxième compilation XeLaTeX
Deuxième compilation XeLaTeX
Maintenant, recompilez votre fichier .tex
avec XeLaTeX.
Vous devriez obtenir le fichier ci-dessous.
On trouve bien les deux index, triée selon l’ordre alphabétique, avec les lettres accentuées bien placées.
On constate cependant une différence avec une compilation classique avec makeindex
: les mots sont regroupés par lettres initiales, avec l’initiale affichée en début de chaque groupe. Nous verrons plus tard comment modifier l’apparence de cette initiale, voire la supprimer, lorsque nous aborderons la personnalisation de l’apparence de l’index.
Automatiser les compilations : latexmk
Par rapport à l’utilisation d’indextools
+ imakeidx
nous avons perdu un peu au change : il faut procéder à une compilation supplémentaire de XeLaTeX, et en plus il faut compiler chaque fichier .idx
.
En générale la deuxième, voire la troisième, compilation XeLaTeX est nécessaire, notamment si on a une bibliographie, des renvois internes et une tables des matières. Cependant, il serait plus simple d’avoir un outil qui nous fasse toutes ces compilation d’un coup.
Cet outil, c’est latexmk
, dont j’ai déjà parlé.
Il nous suffit donc de mettre dans le fichier de configuration latexmkrc
ou .latexmkrc
:
$pdflatex = "xelatex %S";
$pdf_mode = "1";
$makeindex = "texindy -L french -I xelatex %S";
Pour qu’en ligne de commande un :
$ latexmk fichier.tex
fasse toutes les compilations.
Vos commentaires
# Le 15 avril 2015 à 04:19, par alfa8my
En réponse à : Premier pas avec
xindy
C’est super, mais attention aux fautes d’orthographe et de grammaire ! C’est « éléphant », pas « élèphant », et « courgettes » ! Sans parler du corps du texte…
# Le 15 avril 2015 à 09:48, par Maïeul
En réponse à : Premier pas avec
xindy
pour ou « éléphant » je n’entend pas en général la différence entre le « é » et le « è », et j’étais donc persuadé que les 2 orthographes existaient. Dont actes.
Pour le reste j’écrit ce blog et fais ces tests sur mon temps personnel, cela me prend déjà pas mal de temps, qui plus est en soirée. Vous m’excuserez de préférez me concentrer sur le fond que sur la forme d’une orthographe, qui n’a jamais été ma tasse de thé, et qui du reste relève bien souvent plus de l’arbitraire que de la simple logique.