Accueil > LaTeX > Index > Premier pas avec xindy

Premier pas avec xindy

mardi 14 avril 2015, par Maïeul

Après avoir présenté rapidement ce qu’était xindy et pourquoi je recommande son utilisation, faisons les premiers pas avec xindy.

Pour le moment nous nous contenterons d’index un un document en français, avec deux index.

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


Package indextools Warning : Remember to run xelatex again after calling
(indextools) 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 compilation xindy.

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.

Premiers index avec xindy

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

[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.


[1Pour ceux qui ne savent pas pourquoi je conseille XeLaTeX, lisez l’introduction de mon livre.

[2Je suppose que vous avez la police Linux Libertine installé sur votre ordinateur. Si ce n’est pas le cas, vous pouvez commenter la ligne correspondante, cela ne change rien au problème, c’est juste plus esthétique.

[3En fait c’est possible mais en appelant XeLaTeX avec certains options spécifiques. Peut importe, nous allons apprendre ici à utiliser latexmk pour simplifier.

[4Par exemple : en français on classe d’abord sans tenir compte des accents, puis on les intègre dans un second classement ; en espagnol la ligature "ll" est classée comme une lettre à part, entre "l" et "m".

Messages

  • 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…

  • 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.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)