2010-04-30 6 views
11

J'essaie de créer une référence à un flottant qui n'utilise pas de légende. Si j'inclue \ label {foo} dans le flottant et le référence en utilisant \ pageref {foo}, le numéro de page correct est affiché dans mon document pdf mais le lien hypertexte créé par le paquet hyperref renvoie vers une page différente (la première page du section). Si j'inclue une légende avant l'étiquette dans le flottant, le lien hyperref va à la bonne page.LaTeX hyperref lien va à la mauvaise page

Existe-t-il un moyen de faire fonctionner le lien hyperref correctement sans inclure une légende dans le flottant? Ou alors est-il un moyen de supprimer l'affichage d'une légende afin que je puisse en inclure un sans qu'il soit montré?

Voici un exemple minimal. Si je le traite en utilisant pdflatex, j'ai trois pages. Le "chiffre" est montré sur la deuxième page, et la troisième page dit, correctement, "Voir la figure à la page 2." Mais le lien hypertexte sur le «2» dit «Aller à la page 1», et si je clique dessus, il me mène à la page 1.

Si je place une \ legtion {} vide avant le \ label {foo}, alors le lien hypertexte fonctionne correctement, mais je ne veux pas afficher une légende pour mon flottant.

\documentclass[11pt]{memoir} 

\usepackage{hyperref} 

\begin{document} 

some text 
\clearpage 


\begin{figure} 
    a figure 
    \label{foo} 
\end{figure} 

more text 
\clearpage 


See figure on page \pageref{foo}. 

\end{document} 
+2

Je suppose que cela fonctionne comme prévu avec une légende dans le flotteur? – Mica

+0

Correct - si j'inclue une légende, le lien hypertexte va à la bonne page. – ecto

+1

Mettez-vous \ legtion avant \ label dans le flottant? LaTeX produit des chiffres erronés sinon. S'il vous plaît poster un exemple minimal afin que nous puissions essayer. – sastanin

Répondre

13

La commande \label fait référence à la dernière invocation de \refstepcounter. \caption reconnaît qu'il est dans un environnement de figure et appelle \refstepcounter{figure}. Vous pouvez appeler le \refstepcounter par vous-même.

Pour éviter de sauter un nombre dans la série de figures, vous pouvez créer un compteur propre sans signification avec \newcounter{dummy}. Le résultat:

\documentclass{scrreprt} 
\usepackage{hyperref} 
\newcounter{dummy} 
\begin{document} 

\chapter{First} 

\newpage 
\begin{figure} 
{\Huge FIGURE} 
\refstepcounter{dummy} 
\label{fig:figure} 
\end{figure} 

\chapter{Second} 

Goto \pageref{fig:figure} 

\end{document} 

Crée un lien hypertexte vers la fin de la figure. (fonctionne sur ma machine :-) Notez que \ref{fig:figure} n'a pas de sens.

0

Chargement du package caption devrait supprimer la sortie de la légende des légendes vides. Les étiquettes des flottants sont toujours déterminées par la commande de légende précédant la commande label.

+0

Pourquoi le numéro de page s'affiche-t-il correctement pour \ pageref si je n'inclue pas de légende? Seul le lien hypertexte est incorrect. J'ai juste essayé de charger le paquet de légende mais malheureusement, il n'a pas supprimé la sortie de la légende. Il montre encore comme "Figure 0.1:". – ecto

3

Juste avant l'étiquette, utilisez \ phantomsection, comme ceci:

\documentclass{memoir} 
\usepackage{hyperref} 
\begin{document} 
some text 
\clearpage 
\begin{figure} 
a figure 
\phantomsection 
\label{foo} 
\end{figure} 
more text 
\clearpage 
See figure on page \pageref{foo}. 
\end{document} 

:)

Questions connexes