Index avec hyperliens sur les entrées d'index

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
toth
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : mardi 17 août 2010, 12:07
Statut actuel : Enseignant

[Résolu] Index avec hyperliens sur les entrées d'index

Message par toth »

Bonjour
je souhaite faire un index de document beaucoup d'entrées différentes sur une même page. Par défaut l'index crée des renvois vers la page de l'entrée ce qui n'est pas assez ciblé pour être satisfaisant (je suis obligé après de "fouiller" dans la page pour retrouver mon entrée d'index) . Je souhaiterai donc que les liens renvoient non pas à la page d'entrée d'index mais à l'entrée elle-même, un peu comme un \hypertarget et \hyperlink.
Ci-dessous un ECM.

Code : Tout sélectionner

\documentclass{article} 

\usepackage{hyperref} % pour les hyperliens
\usepackage{lipsum}% pour essais : génère du texte bidon entre [1] et [150] § avec \lipsum[150]
\usepackage{makeidx} % pour créer un index
\makeindex

\begin{document}
	ancre pour entrée 1\index{premier} de l'index
	
	\lipsum[1-3]
	
	ancre pour entrée 2\index{second} de l'index
	
	\lipsum[1-2]

	\printindex
	
\end{document}	
Merci d'avance pour votre aide.
Dernière modification par toth le mardi 13 octobre 2020, 13:31, modifié 1 fois.
version latex : Texlive2018 / compilation : lualatex / éditeur : texstudio
toth
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : mardi 17 août 2010, 12:07
Statut actuel : Enseignant

Re: Index avec hyperliens sur les entrées d'index

Message par toth »

Bonjour à tous,
ma questions semble délicate, peut-être n'y a -t-il tout simplement pas moyen de faire cela sauf à créer tout un package exprès (ce dont je suis bien incapable). :|
Si d'aventure quelqu'un avait malgré tout le début d'une idée sur un éventuel package ou générateur d'index qui pourrait aider je suis preneur. :roll:

Bien cordialement,
version latex : Texlive2018 / compilation : lualatex / éditeur : texstudio
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 830
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Index avec hyperliens sur les entrées d'index

Message par un bon petit »

La macro \hindex devrait résoudre le problème.

Code : Tout sélectionner

\documentclass{article}
\usepackage{lipsum,imakeidx}
\usepackage[hyperindex=false]{hyperref}
\makeatletter
\newcount\cnt@index
\def\hindex{%
	\advance\cnt@index1
	\expandafter\hindex@i\the\cnt@index.
}
\def\hindex@i#1.#2{%
	\raise\baselineskip
	\hbox{\hypertarget{index-#1}{\index{#2|hyperlink{index-#1}}}}%
}
\makeatletter
\makeindex
\begin{document}
ancre pour entrée 1\hindex{premier} de l'index

\lipsum[1-3]

ancre pour entrée 2\hindex{second} de l'index

\lipsum[1-2]

\printindex
\end{document}
toth
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : mardi 17 août 2010, 12:07
Statut actuel : Enseignant

Re: Index avec hyperliens sur les entrées d'index

Message par toth »

Bonjour,
ca marche nickel merci bien.

Pour compléter le sujet :
En fait le but est de se faire une doc personnelle des commandes Latex que j'utilise. Je fais le distinguo entre environnements/variables/commandes etc...
J'ai donc utilisé la commande \hindex proposée pour en faire de nouvelles type :

Code : Tout sélectionner

\newcommand{\idxcmd}[1]{\hindex{commandes : !\textbackslash #1}} %
\newcommand{\idxvar}[1]{\hindex{variables : !\textbackslash #1}} %
Et ca fonctionne comme attendu.
Attention toutefois le temps de compilation est sensiblement plus long (et ca parait normal, on en demande plus).

A noter également que les ancres ne sont pas tout à fait aux endroits attendus lorsqu'il y a de multiples emboîtements type itemize dans multicols ou dans tcolorbox.
Mais peut-être que j'en demande trop ?
De même certains lecteurs pdf semblent un peu perdus dans tous mes hyperliens (+/- une centaine dans le cas présent).
Si certains veulent rebondir sur le sujet, je laisse le sujet "non clos" quelques temps.
version latex : Texlive2018 / compilation : lualatex / éditeur : texstudio
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 830
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Index avec hyperliens sur les entrées d'index

Message par un bon petit »

toth a écrit : lundi 12 octobre 2020, 16:46 A noter également que les ancres ne sont pas tout à fait aux endroits attendus lorsqu'il y a de multiples emboîtements type itemize dans multicols ou dans tcolorbox.
Vous décrivez de façon très vague le problème, de sorte qu'il est impossible de se faire une idée. Le mieux serait de dire exactement où l'ancre est positionné et où vous l'attendez ainsi que de fournir un ECM qui permet à tout le monde de reproduire le problème constaté.
toth a écrit : lundi 12 octobre 2020, 16:46Mais peut-être que j'en demande trop ?
En étant aussi flou, et sans poser de question précise, je pense que c'est un peu trop en effet... Enfin, pour moi !
toth a écrit : lundi 12 octobre 2020, 16:46De même certains lecteurs pdf semblent un peu perdus dans tous mes hyperliens (+/- une centaine dans le cas présent).
« Certains » est à nouveau un peu vague... Lesquels ?
toth
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : mardi 17 août 2010, 12:07
Statut actuel : Enseignant

Re: Index avec hyperliens sur les entrées d'index

Message par toth »

Merci de passer du temps sur mon pb, je précise donc.
Une différence qui joue c'est que j'utilisais

Code : Tout sélectionner

\usepackage{hyperref}
\hypersetup{hyperindex=false}
au lieu de

Code : Tout sélectionner

\usepackage[hyperindex=false]{hyperref}
ce qui cassait pour partie certains liens. Typiquement l'ECM proposé par un bon petit.

En épurant mon code personnel j'ai pu identifier un ECM qui coince : en rajoutant des itemize dans le document de un bon petit . L'entrée frac ne pointe pas au bon endroit mais les 3 autres oui.

Code : Tout sélectionner

\documentclass{article}
\usepackage{lipsum,imakeidx}
\usepackage[hyperindex=false]{hyperref}

\makeatletter
\newcount\cnt@index
\def\hindex{%
	\advance\cnt@index1
	\expandafter\hindex@i\the\cnt@index.
}
\def\hindex@i#1.#2{%
	\raise\baselineskip
	\hbox{\hypertarget{index-#1}{\index{#2|hyperlink{index-#1}}}}%
}
\makeatletter
\makeindex


\begin{document}
ancre pour entrée 1\hindex{premier} de l'index

\begin{itemize}
\item \lipsum[1-3]
\item ancre pour entrée 2\hindex{second} de l'index
\end{itemize}

\lipsum[1-2]

\begin{itemize}
\item frac\hindex{frac} 
\item dfrac\hindex{dfrac}
\end{itemize}

\printindex
\end{document}
Enfin la question du lecteur pdf me semble du coup prématurée car mon code présente encore des erreurs.
version latex : Texlive2018 / compilation : lualatex / éditeur : texstudio
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 830
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Index avec hyperliens sur les entrées d'index

Message par un bon petit »

toth a écrit : lundi 12 octobre 2020, 22:58 L'entrée frac ne pointe pas au bon endroit mais les 3 autres oui.
Oui, c'est une erreur de ma part, il faut rendre l'assignation au compteur globale en rajoutant la primitive \global :

Code : Tout sélectionner

\global\advance\cnt@index1
toth
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : mardi 17 août 2010, 12:07
Statut actuel : Enseignant

Re: Index avec hyperliens sur les entrées d'index

Message par toth »

Là c'est parfait. Et plus de pb avec les lecteurs de pdf.
Un grand merci !
version latex : Texlive2018 / compilation : lualatex / éditeur : texstudio