Гиперссылка на LaTeX ведет на неправильную страницу

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

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

Ниже приведен минимальный пример. Если я обработаю его с помощью 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}

3 ответа

Решение

\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} бессмысленно.

Прямо перед меткой используйте \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}

:)

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

Другие вопросы по тегам