Je réalise un index avec indextools et xindy qui doit renvoyer à des numéros de page ainsi qu'à un compteur personnalisé. J'utilise pour cela le code suivant, compilé avec XeLaTeX :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{fontspec}
\usepackage[xindy]{indextools}
\makeindex[title=Index des objets]
\usepackage[hyperindex=false]{hyperref}

\newcounter{myitem}
\setcounter{myitem}{0}

\makeatletter
\newcommand{\myindex}[1]{%
    \index{#1}%
    \indtl@wrindexentry{\jobname}{#1|textit}{\themyitem}%
}
\makeatother

\newcommand{\printitem}[1]{%
    \refstepcounter{myitem}\themyitem. #1\label{itm:\themyitem}\myindex{#1}.\par
}

\begin{document}

\printitem{Un item}
\printitem{Un autre item}
\printitem{Encore un item}

\printindex

\end{document}

et le fichier xdy suivant (modifié d'après https://geekographie.maieul.net/172 pour que les entrées avec l'attribut textit ne renvoient pas au page mais à l'item marqué d'un label) :

Ouvrir dans l'éditeur Overleaf
(markup-locclass-list :open "\dotfill ")
(define-attributes ("emph"))
(markup-locref :open "\hyperpage{" :close "}" :attr "default")
(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf")
(markup-locref :open "\textit{\ref{itm:" :close "}}" :attr "textit")
(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph")

Cela fonctionne globalement bien, sauf lorsque le numéro de page et mon compteur sont égaux. Il y a alors dans le fichier .idx :

Ouvrir dans l'éditeur Overleaf
\indexentry{Un item}{1}
\indexentry{Un item|textit}{1}

Lors de la compilation avec texindy, ces deux entrées sont considérées comme identiques et seul le numéro de page est indiqué dans l'index. Comment remédier à cela ?

Posée 12 Nov '19, 13:30

Namrod's gravatar image

Namrod
283714
Taux d'acceptation : 20%

2

Je ne sais pas si votre solution est pratique, mais vous pouvez tricher xindy, par exemple \indtl@wrindexentry{\jobname}{#1|textit}{\themyitem0000} et \label{itm:\themyitem0000}

(15 Nov '19, 21:15) touhami touhami's gravatar image
Soyez le premier à répondre à cette question !
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.