2010-04-30 18 views
11

Sto provando a creare un riferimento a un float che non utilizza una didascalia. Se includo \ label {pippo} all'interno del float e lo riferimento con \ pageref {foo}, il numero di pagina corretto viene visualizzato nel mio documento PDF ma il collegamento ipertestuale creato dal pacchetto hyperref si collega a una pagina diversa (la prima pagina del sezione). Se includo una didascalia prima dell'etichetta nel float, il link hyperref passa alla pagina corretta.Link hyperref LaTeX va alla pagina errata

C'è un modo per far funzionare correttamente il collegamento hyperref senza includere una didascalia nel float? Oppure c'è un modo per sopprimere la visualizzazione di una didascalia quindi posso includerne una senza che venga mostrata?

Di seguito è un esempio minimo. Se lo elaboro utilizzando pdflatex, ottengo tre pagine. La "figura" è mostrata sulla seconda pagina, e la terza pagina dice, correttamente, "Vedi figura a pagina 2". Ma il collegamento ipertestuale sul '2' dice "Vai alla pagina 1", e se clicco, mi porta alla pagina 1.

Se metto un \ caption {} prima della \ label {foo}, allora il collegamento ipertestuale funziona correttamente, ma non voglio mostrare una didascalia per il mio float.

\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

mi assume questo funziona come previsto con una didascalia nel galleggiante? – Mica

+0

Corretto - se includo una didascalia, il collegamento ipertestuale passa alla pagina giusta. – ecto

+1

Inserisci \ caption prima di \ label nel float? LaTeX produce numeri di cifre errati altrimenti. Si prega di inviare un esempio minimo in modo che possiamo provare. – sastanin

risposta

13

Il comando \label fa riferimento all'ultima chiamata di \refstepcounter. \caption riconosce che si trova in un ambiente di figura e chiama \refstepcounter{figure}. Puoi chiamare da solo il numero \refstepcounter.

Per evitare di saltare un numero nella serie di cifre, è possibile creare un proprio contatore privo di significato con \newcounter{dummy}. Il risultato:

\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} 

Crea un collegamento ipertestuale alla fine della figura. (funziona sulla mia macchina :-) Nota che \ref{fig:figure} non ha significato.

0

Caricamento del pacchetto caption dovrebbe sopprimere uscita didascalia didascalie vuote. Le etichette per i float sono sempre determinate dal comando caption che precede il comando label.

+0

Perché allora il numero di pagina viene visualizzato correttamente per \ pageref se non includo una didascalia? Solo il collegamento ipertestuale non è corretto. Ho appena provato a caricare il pacchetto didascalia ma sfortunatamente non ha eliminato l'output della didascalia. Mostra ancora come "Figura 0.1:". – ecto

3

Poco prima l'etichetta, l'uso \ phantomsection, in questo modo:

\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} 

:)

Problemi correlati