2010-04-30 8 views
11

Я пытаюсь создать ссылку на поплавок, который не использует подпись. Если я включаю \ label {foo} в float и ссылаюсь на него с помощью \ pageref {foo}, правильный правильный номер страницы отображается в моем pdf-документе, но гиперссылка, созданная пакетом hyperref, ссылается на другую страницу (первая страница раздел). Если я включу подпись перед меткой в ​​поплавке, ссылка гиперрефера перейдет на правильную страницу.ссылка LaTeX hyperref ссылается на неправильную страницу

Есть ли способ заставить работу гиперрефикса правильно работать без включения заголовка в поплавок? Или еще есть способ подавить отображение заголовка, чтобы я мог включить его без его отображения?

Ниже приведен минимальный пример. Если я обработаю его с помощью pdflatex, я получу три страницы. «Рисунок» отображается на второй странице, а на третьей странице правильно сказано «См. Рисунок на стр. 2.». Но гиперссылка на «2» говорит «Перейти на страницу 1», и если я нажму на нее, она переведет меня на страницу 1.

Если я поместил пустой \ caption {} перед \ label {foo}, тогда гиперссылка работает правильно, но я не хочу показывать заголовок для моего поплавка.

\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

Я предполагает, что это работает, как ожидается, с подписью в поплавке? – Mica

+0

Правильно - если я включаю заголовок, гиперссылка идет на нужную страницу. – ecto

+1

Вы помещаете \ caption перед \ label в поплавке? В противном случае LaTeX производит неправильные номера цифр. Пожалуйста, напишите минимальный пример, чтобы мы могли попробовать. – sastanin

ответ

13

Команда \label ссылается на последний вызов \refstepcounter. \caption распознает, что он находится в фигурной среде и вызывает \refstepcounter{figure}. Вы можете позвонить по телефону \refstepcounter.

Чтобы избежать пропуска числа в серии цифр, вы можете создать собственный, бессмысленный счетчик с \newcounter{dummy}. Результат:

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

Создает гиперссылку в конец рисунка. (работает на моей машине :-) Примечание: \ref{fig:figure} не имеет смысла.

0

Загрузка caption пакета должен подавить вывод заголовка пустых титров. Метки для поплавков всегда определяются командой caption, предшествующей команде label.

+0

Почему тогда номер страницы отображается правильно для \ pageref, если я не включаю подпись? Только гиперссылка неверна. Я просто попробовал загрузку пакета подписи, но, к сожалению, он не подавил вывод заголовка. Он по-прежнему отображается как «Рисунок 0.1:». – ecto

3

Непосредственно перед меткой, используйте \ phantomsection, например, так:

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

:)

Смежные вопросы