Ссылка гипертекста LaTeX перешла на неправильную страницу
Я пытаюсь создать ссылку на float, который не использует подпись. Если я включаю \label {foo} в float и ссылаюсь на него с помощью \pageref {foo}, правильный правильный номер страницы отображается в моем pdf-документе, но гиперссылка, созданная пакетом hyperref, ссылается на другую страницу (первая страница раздел). Если я включу подпись перед меткой в поплавке, ссылка гиперрефера перейдет на правильную страницу.
Есть ли способ получить правильную работу гиперрефикса, не включая заголовок в поплавке? Или еще есть способ подавить отображение заголовка, чтобы я мог включить его без его отображения?
Ниже приведен минимальный пример. Если я обработаю его с помощью pdflatex, я получу три страницы. "Рисунок" отображается на второй странице, а на третьей странице правильно сказано "См. Рисунок на стр. 2.". Но гиперссылка на "2" говорит "Перейти на страницу 1", и если я нажму на нее, она переведет меня на страницу 1.
Если я помещаю пустой \caption {} перед \label {foo}, то гиперссылка работает правильно, но я не хочу отображать заголовок для моего 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}
Ответы
Ответ 1
Команда \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}
не имеет смысла.
Ответ 2
Прямо перед меткой используйте \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}
:)
Ответ 3
Загрузка пакета caption
должна подавлять вывод заголовков пустых подписей. Метки для поплавков всегда определяются командой caption, предшествующей команде label.