Je ne comprends pas ce qui se passe : tous mes hyperliens renvoient à la première page. J'ai oublié quoi ?

Voici un ECM :

\documentclass[french]{article}

\usepackage{babel}
\usepackage{varioref}
\usepackage{hyperref}

\begin{document}

un premier item\label{premier}

\clearpage{}

et voici un lien : \vref{premier}

et voici un lien vers un item se trouvant page suivante : \vref{deuxieme}

et voici un lien vers un item se trouvant en dernière page : \vref{dernier}

\clearpage{}

un autre item\label{deuxieme}

\clearpage{}

un dernier item\label{dernier}
\end{document}

Posée 29 Nov '23, 15:25

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

1

La commande \label labellise l'élément numéroté précédent. Comme, ici, il n'y en a pas, cela renvoie à la première page.

(29 Nov '23, 15:34) denis ♦♦ denis's gravatar image

Essayez avec \clearpage{} \phantomsection un dernier item\label{dernier}

(29 Nov '23, 15:37) samcarter samcarter's gravatar image
1

En complément de la remarque de "denis", l'élément actif pour un label est, dans l'ordre : les sectionnements, les environnements numérotés, les listes et les \footnote. label enregistre l'élément actif et la page courante. Donc vref donne la bonne page mais pas le renvoi avec hyperref car il n'y a pas d'élément actif. label sert pour faire un renvoi à un objet dans une page, pas à une page. \phantomsection permet d'ajouter des sections fantômes pour hyperref mais il faudrait le faire à chaque changement de page... Si vous voulez cite la page d'un élément actif, il y a \vpageref.

(29 Nov '23, 16:10) jybaudais jybaudais's gravatar image

La commande \label ne fonctionne donc que dans un environnement ? Elle ne peut pas être la dernière balise d'un document ?

(29 Nov '23, 17:01) Pathe ♦♦ Pathe's gravatar image

@jybaudais Je ne crois pas qu'il y ait d'ordre : sauf erreur de ma part, \label labellise l'objet numéroté (ou \phantomsection) qui précède, quel qu'il soit.

(29 Nov '23, 20:29) denis ♦♦ denis's gravatar image
1

La commande \label ne fonctionne donc pas que dans un environnement : par exemple \section{Bla bla}\label{blabla} fonctionne comme attendu. Elle ne peut en effet pas être la dernière balise d'un document car ce n'est pas une balise ; en revanche, comme l'a souligné samcarter, on peut insérer des balises fantômes au moyen de \phantomsection.

(29 Nov '23, 20:33) denis ♦♦ denis's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
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.