Comment renvoyer à autre chose qu'à une page dans un index ?
Je réalise un inventaire de sites archéologiques. Chacun des sites est numéroté. J'utilise pour ceci un environnement `enumerate` personnalisé grâce à l'extension `enumitem`. J'ai créé une commande pour automatiser la tâche : cette commande se charge de créer une entrée dans l'index mais insère également un label, permettant ainsi de faire référence au numéro de ce site, la numérotation étant continue d'une liste à l'autre, chaque site possédant ainsi un identifiant unique.
Ma question est donc : puis-je faire figurer dans l'index, en plus du numéro de page, le numéro du site stocké dans le `\label`, en mettant par exemple ce numéro en gras afin de le différencier du numéro de page ? Je précise que je travaille avec `XeLaTeX`.
\documentclass{article}
\usepackage{fontspec}
\usepackage[xindy]{indextools}
\usepackage{enumitem}
\usepackage{xkeyval}
\makeatletter
\define@key{site}{NomSite}{\def\@NomSite{#1}}
\define@key{site}{Periode}{\def\@Periode{#1}}
\define@key{site}{Contexte}{\def\@Contexte{#1}}
\newcommand{\Objet}[1]{%
\setkeys{site}{#1}
\item\@NomSite. \@Contexte. \@Periode.%
\expandafter\index\expandafter\@NomSite%
\edef\temp{{site:\@NomSite}}%
\expandafter\label\temp%
\let\temp\@undefined
}
\makeatother
\makeindex
\begin{document}
\begin{enumerate}[label=\textbf{\arabic*}.,ref={\arabic*}]
\Objet{NomSite={Chavéria},Contexte={Sépulture},Periode={Bronze ancien}}
\Objet{NomSite={Abbeville},Contexte={Dépôt terrestre},Periode={Bronze moyen}}
\end{enumerate}
\begin{enumerate}[label=\textbf{\arabic*}.,ref={\arabic*},resume]
\Objet{NomSite={Blénod-lès-Pont-a-Mousson},Contexte={Dépôt en milieu humide},Periode={Bronze final}}
\end{enumerate}
Blénod-lès-Pont-a-Mousson : \ref{site:Blénod-lès-Pont-a-Mousson}
Chavéria : \ref{site:Chavéria}
Abbeville : \ref{site:Abbeville}
\newpage
\printindex
\end{document}\end{document}
Avec la solution proposée par Maïeul, je compile ce document :
\documentclass{article}
\usepackage{fontspec}
\usepackage[xindy]{indextools}
\usepackage{enumitem}
\usepackage{xkeyval}
\makeatletter
\define@key{site}{NomSite}{\def\@NomSite{#1}}
\define@key{site}{Periode}{\def\@Periode{#1}}
\define@key{site}{Contexte}{\def\@Contexte{#1}}
\newcommand{\indexobjet}[1]{%
\indtl@wrindexentry{\jobname}{#1}{\thepage-\ref\temp}
}%
\newcommand{\Objet}[1]{%
\setkeys{site}{#1}
\item\@NomSite. \@Contexte. \@Periode.%
%\index{\@NomSite}
\edef\temp{{site:\@NomSite}}%
\indexobjet{\@NomSite}
\expandafter\label\temp%
\let\temp\@undefined
}
\makeatother
\makeindex[program=texindy,options=-I xelatex -M ecm]
\begin{document}
\begin{enumerate}[label=\textbf{\arabic*}.,ref={\arabic*}]
\Objet{NomSite={Chavéria},Contexte={Sépulture},Periode={Bronze ancien}}
\Objet{NomSite={Abbeville},Contexte={Dépôt terrestre},Periode={Bronze moyen}}
\end{enumerate}
\begin{enumerate}[label=\textbf{\arabic*}.,ref={\arabic*},resume]
\Objet{NomSite={Blénod-lès-Pont-a-Mousson},Contexte={Dépôt en milieu humidea$},Periode={Bronze final}}
\end{enumerate}
Blénod-lès-Pont-a-Mousson : \ref{site:Blénod-lès-Pont-a-Mousson}
Chavéria : \ref{site:Chavéria}
Abbeville : \ref{site:Abbeville}
\newpage
\printindex
\end{document}
avec le fichier `ecm.xdy` :
(define-location-class "inventaire"
("arabic-numbers" :sep"-" "arabic-numbers")
:hierdepth 2
)
(markup-locref-list :open " [" :sep " " :close "]"
:depth 1 :class "inventaire")
Mais cela ne donne rien et j'obtiens un fichier `.idx` avec :
\indexentry{Chavéria}{1-\G@refundefinedtrue {\unhbox \voidb@x \hbox {\normalfont \bfseries ??}}\GenericWarning { }{LaTeX Warning: Reference `{site:Chavéria}' on page 1 undefined}}
\indexentry{Abbeville}{1-\G@refundefinedtrue {\unhbox \voidb@x \hbox {\normalfont \bfseries ??}}\GenericWarning { }{LaTeX Warning: Reference `{site:Abbeville}' on page 1 undefined}}
\indexentry{Blénod-lès-Pont-a-Mousson}{1-\G@refundefinedtrue {\unhbox \voidb@x \hbox {\normalfont \bfseries ??}}\GenericWarning { }{LaTeX Warning: Reference `{site:Blénod-lès-Pont-a-Mousson}' on page 1 undefined}}