`indextools` (et `imakeidx`) proposent une commande permettant de créer une entrée dans le fichier `.idx` avec autre chose que le numéro de page (¶5.5 de [la doc](http://mirrors.ctan.org/macros/latex/contrib/indextools/indextools.pdf)) :
\indtl@wrindexentry{names}{Charles}{26}
Donc tu peux créer ta propre commande d'indexation :
\makeatletter
\newcommand{\indexobjet}[1]{%
\indtl@wrindexentry{\jobname}{#1}{\thepage-\pageref{#1}}
}%
\makeatother
Mais le problème c'est qu'un \pageref `\pageref` va te produire plein d'élèment d'éléments parasites (message d'erreur si indéfini, \hbox{} etc) `\hbox{}` etc.) que tu ne désire désires pas.
Dans le cas présent, l'un des problème problèmes est de pouvoir récuperer récupérer la reference référence brut produit par un \ref SANS tout un `\ref` *sans* tous les éléments parasites telle tels que les \hbox ou surtout `\hbox` ou, surtout, les messages d'erreurs si le label n'est pas défini.
D'abord je reprend reprends ta commande `\Objet` que je modifie pour appeler `\indexobjet`
`\indexobjet` :
\newcommand{\Objet}[1]{%
\setkeys{site}{#1}
\item\@NomSite. \@Contexte. \@Periode.%
%\index{\@NomSite}
\edef\temp{{site:\@NomSite}}%
\indexobjet{\@NomSite}
\expandafter\label\temp%
\let\temp\@undefined
}
Maintenant le code de `\indexobjet` proprement dit.
Je suppose que tu charge etoolbox (ce charges `etoolbox` - ce n'est pas obligatoire, mais cela simplifie les choses). choses.
Il faut savoir que lorsqu'un label `<toto>` `toto` est défini, LaTeX définit une commande `\r@<toto>`. `\r@toto`. Nous allons d'abord tester l'existence de cette commande avec la commande `\ifcsdef` de etoolbox, `etoolbox`, puis nous allons récuperer récupérer une forme brut brute du numero numéro de référence à l'aide de divers `\edef` et `\expandafter`.
\newcommand{\indexobjet}[1]{%
\edef\tempa{\expandafter\@firstofone\temp}%\tempa = le label SANS les {}, puisque \temp le contient
\ifcsdef{r@\tempa}{% si la commande \csname r@\tempa\endcsname est définie, c'est qu'il y a un label posé > on index. Sinon on n'index pas.
\edef\tempb{\expandafter\ref\temp}%Numero suivi de \hbox{}
\edef\tempc{\expandafter\@firstoftwo\tempb}%Numero suivi de {}
\edef\tempd{\expandafter\@firstoftwo\tempc}%Numero brut
% \meaning\temp % Debug : trouver signif de \temp
% \meaning\tempa % Debug : trouver signif de \tempa
% \meaning\tempb % Debug : trouver signif de \tempb
% \meaning\tempc % Debug : trouver signif de \tempc
% \meaning\tempd % Debug : trouver signif de \tempd
\indtl@wrindexentry{\jobname}{#1}{\thepage-\tempd}%
}%
{}
}%
Je t'invite à decommenter décommenter les \meaning `\meaning` pour voir le contenu exacte exact de chacune des commandes.
Cela te produit le fichier .idx suivant
`.idx` suivant :
\indexentry{Chavéria}{1-1}
\indexentry{Abbeville}{1-2}
\indexentry{Blénod-lès-Pont-a-Mousson}{1-3}
Après reste Reste ensuite à customiser `xindy` pour qu'il reconnaisse ce type d'entrée. On peut mettre ces lignes là lignes-là dans le fichier `.xdy` :
(define-location-class "eledmac"
("arabic-numbers" :sep"-" "arabic-numbers")
:hierdepth 2
Voir [cette page](http://geekographie.maieul.net/174) pour comprendre comment gérer les sous-numéros de référence (mais attention on y parle également d'autre chose aussi).
chose).