Problème d'index : définir une commande utilisant \index
Bonjour à tous !
Je rencontre un problème dans la création de l'index de mon mémoire. Pour faire simple, je dois faire un inventaire de sites archéologiques. J'ai eu envie de me faciliter la tâche en créant une commande qui se charge de la mise en forme. Comme j'ai plus de 9 neuf paramètres à prendre en compte, il me faut utiliser xkeyval. Je n'ai rencontré quasiment aucun problème, sauf pour l'index. En effet, je veux que chaque site figure dans l'index. En résumé, pour chaque site je définis le nom du site, et la commune sur laquelle il se trouve si les deux sont différents. Si la commune et le nom du site sont identiques, je ne définis que le nom du site. Dans l'index, je souhaite que figure le nom du site, et la commune si celle-ci est définie avec un renvoie vers le nom du site (avec `\index{Commune|see{NomSite}}`). J'ai en outre défini une clé Index d'index qui me permet de changer l'entrée dans l'index pour quelques cas particuliers. Le nom du site est dans tous les cas défini.
Pour cela, voilà voici une version simplifiée de ce que j'ai fait (je — je travaille avec XeLaTeX) (en version simplifiée) XeLaTeX :
\documentclass[french]{article}
\usepackage{fontspec}
\usepackage{makeidx}
\usepackage{index}
\usepackage{xkeyval}
\usepackage{babel}
\makeatletter
\define@key{myitem}{Commune}{\def\@Commune{#1}}
\define@key{myitem}{NomSite}{\def\@NomSite{#1}}
\define@key{myitem}{Index}{\def\@Index{#1}}
\def\NewItem#1{%
\setkeys{myitem}{#1}
\@PrintItem
}
\def\@PrintItem{%
\ifx\@Index\@undefined%
\ifx\@Commune\@undefined%
\expandafter\index\expandafter{\@NomSite}%
\else%
\expandafter\index\expandafter{\@NomSite}%
\expandafter\index\expandafter{\@Commune|see{\@NomSite}}%
\fi%
\else%
\@Index%
\fi%
\@NomSite%
\ifx\@Commune\@undefined%
.%
\else%
,\ \@Commune.%
\fi%
\let\@Index\@undefined%
\let\@NomSite\@undefined%
\let\@Commune\@undefined%
}
\makeatother
\makeindex
\begin{document}
\NewItem{NomSite={UnSite}}
\NewItem{Commune={UneCommune},NomSite={UnAutreSite},Index={\index{UnAutreIndex}}}
\NewItem{Commune={UneAutreCommune},NomSite={EncoreUnSite}}
\printindex
\end{document}
Après la compilation, il manque dans mon index la mention "UneAutreCommune" « UneAutreCommune » avec le renvoie renvoi à "EncoreUnSite", « EncoreUnSite », car voilà voici ce que je trouve dans le fichier .idx :
\indexentry {UnSite}{1}
\indexentry {UnAutreIndex}{1}
\indexentry {EncoreUnSite}{1}
\indexentry {UneAutreCommune|see{\@NomSite }}{1}
Du coup, ma question est : :
comment faire pour que le nom du site soit bien lu lorsque j'utilise la syntaxe `\index{index1|see{index2}}` ?
Bonne soirée et merci d'avance pour vos réponses ;) !