Pré-requis
La compatibilité pleine de eledmac
avec xindy
n’est fournie qu’avec la version 1.22.0 de eledmac.
Pour l’installer :
- télécharger le zip disponible sur le CTAN.
- appliquer la commande
pdflatex
sur les deux fichiers.ins
pour obtenir les fichiers.sty
. - mettre les fichiers
.sty
à côté de votre fichier d’exemple ou dans le dossiertex/latex/eledmac
de [votre dossiertexmf
local.
Fichier d’exemple
Prenons un fichier .tex
reprenant le code de mes précédents exemples, mais utilisant \edindex
à la place de \index
.
% À compiler avec XeLaTeX
% À compiler avec XeLaTeX
\documentclass{article}
% Réglages géneraux
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\usepackage{polyglossia}
\setmainlanguage{french}
\usepackage{setspace}
\onehalfspacing
% Définition des index
\usepackage[xindy]{indextools}%On précise qu'on veut utiliser xindy
% Apparence des index
% Cf http://geekographie.maieul.net/171
\newcommand{\lettergroup}[1]{%
{\centering\large---\emph{#1}---\par}%
}
\apptocmd{\subitem}{$\rightarrow$\,}{}{}
%
% Chargement de eledmac et de hyperref avec les bonnes options
\usepackage[series={A},noeledsec,nofamiliar,noend,xindy,xindy+hyperref]{eledmac}
\usepackage[hyperindex=false]{hyperref}
% Toujours appeler \makeindex après le chargement de eledmac, cf doc de eledmac.
\makeindex[name=animal,title=Animaux,columnseprule]
\begin{document}
\beginnumbering
\autopar
On va parler de
chats sauvages\edindex[animal]{chat!sauvage} et domestiques\edindex[animal]{chat!domestique},
de tortues marines\edindex[animal]{tortue!marine} et terrestres\edindex[animal]{tortue!terrestre},
d'élèphant d'Asie\edindex[animal]{élèphant!d'Asie} et d'Afrique\edindex[animal]{élèphant!d'Afrique},
et soyons fou, d'élans de Sibérie\edindex[animal]{élan!de Sibérie} et d'Amérique\edindex[animal]{élan!d'Amérique}.
On va parler au paragraphe suivant des même animaux. C'est à dire : de
chats sauvages\edindex[animal]{chat!sauvage} et domestiques\edindex[animal]{chat!domestique},
de tortues \edtext{marines}{\Afootnote{ninja\edindex[animal]{tortue!ninja|textbf}}}\edindex[animal]{tortue!marine} et terrestres\edindex[animal]{tortue!terrestre},
d'élèphant d'Asie\edindex[animal]{élèphant!d'Asie} et d'Afrique\edindex[animal]{élèphant!d'Afrique},
et soyons fou, d'élans de Sibérie\edindex[animal]{élan!de Sibérie} et d'Amérique\edindex[animal]{élan!d'Amérique}.
\edtext{Le paragraphe suivant est vraiment très particulier. Il est là juste pour tester ce que donne une indexation lorsqu'on parle d'une note qui est sur plusieurs lignes.}{\lemma{Le paragraphe…lignes}\Afootnote{serpent\edindex[animal]{serpent!de mer}}}%
\endnumbering
\newpage
\beginnumbering
\autopar Et pour la bonne cause, on va aussi parler de chats sauvages\edindex[animal]{chat!sauvage|textbf} qui se disputent avec les chiens errants\edindex[animal]{chien!errant}.
\endnumbering
\printindex[animal]
\end{document}
Rien de très original dans le contenu, comme vous pouvez le constatez, si ce n’est que j’ai ajouté l’indexation d’un élément en note critique.
Les deux lignes les plus importantes pour le fonctionnement avec xindy
sont :
\usepackage[xindy,xindy+hyperref]{eledmac}
\usepackage[hyperindex=false]{hyperref}
La ligne \usepackage[hyperindex=false]{hyperref}
vous laisse prendre la main sur l’ajout de liens hypertextes sur les localisation dans l’index, ainsi que je l’ai expliqué dans mon précédent article.
L’option xindy
de eledmac
est obligatoire si on souhaite utiliser \edindex
avec xindy
[1].
L’option xindy+hyperref
permet en outre de faire fonctionner les liens internes.
Trois premières compilations XeLaTeX
Lorsqu’on indexe avec \edindex
le fichier .idx
n’est correct qu’après la troisième compilation (Xe)LaTeX. Nous supposons donc que vous faites trois compilations d’affilée de XeLaTeX.
À la fin de ces compiliations, outre le fichier .pdf
et le fichier .xdy
, vous obtenez un fichier eledmac-markup-attr.xdy
.
Il s’agit d’un fichier de configuration xindy
produit par eledmac
et qui contient la déclaration des attributs de localisation propres à chaque entrée d’index produite par \edindex
.
Compilation xindy
Il nous faut donc appeler ce fichier .xdy
lors de notre compilation.
Deux solutions s’offrent à nous.
La première consistent à passer le nom de ce fichier à l’option -M
de texindy
.
Ainsi à la place d’appeler :
$ texindy -L french -I xelatex -M monstyle animal.idx
On appellera
$ texindy -L french -I xelatex -M monstyle eledmac-markup-attr animal.idx
Cependant il existe une solution plus simple : inclure l’appel à eledmac-markup-att.xdy
directement dans le fichier monstyle.xdy
via :
(require "eledmac-markup-attr.xdy")
Procédez donc à cette compilation : vous obtenez des lignes du type
WARNING : location-reference « 1-1 » did not match any location-class ! (ignored)
Ceci s’explique simplement : xindy
n’est pas capable, par défaut, de comprendre une localisation de type numerodepage-numerodeligne
tel que l’écrit \edtext
dans le fichier .idx
.
Qu’importe, nous allons lui apprendre, en ajoutant les lignes suivantes dans notre fichier de configuration .xdy
[2] :
(define-location-class "eledmac"
("arabic-numbers" :sep"-" "arabic-numbers")
:hierdepth 2
)
Ces lignes disent simplement qu’il existe une classe de localisation, c’est à dire une manière de référencer une entrée, nommée eledmac
.
Les entrées ainsi localisées possèdent deux niveau de localisation (:hierdepth 2
), c’est à dire dans notre cas le page puis la ligne. Le premier niveau est écrit en nombre arabe, le second aussi, et les deux sont séparés par le caractère -
.
Avec ces lignes nous arrivons à compiler correctement avec texindy
. Cependant après la compilation XeLaTeX suivante, nous obtenons un index peu utilisable, comme vous pouvez le constatez dans le fichier ci-dessous.
Le numéro de ligne est collé au numéro de page, si bien que l’index ne permet pas de retrouver la référence.
Qu’importe, nous allons dire à xindy
de mettre le numéro de ligne entre parenthèse, avec les lignes suivantes dans le fichier .xdy
(markup-locref-list :open " (" :sep ", " :close ")"
:depth 1 :class "eledmac")
Nous indiquons que pour la classe de localisaton eledmac
, que nous avions précédemment définie, le niveau 1
de localisation, c’est à dire dans le cas présent le numéro de ligne, puisque les niveaux commençent à 0
, est marqué dans le fichier .ind
par une parenthèse ouvrante au début et par une parenthèse fermante à la fin, les différentes entrées du même niveau étant séparées par des virgules.
Avec un tel fichier .xdy
, après une nouvelle compilation xindy
et une autre compilation XeLaTeX, nous obtenons un index final correctement formaté.