我正在链接到页面。我可以引用位于之前的页面,但我无法链接到第 3 页以查找第 2 页。这是为什么?如何解决?谢谢!
\documentclass[a4paper]{article} % Размер бумаги и стиль документа (книга, журнал,...)
\usepackage[14pt]{extsizes} % Размер шрифта
\usepackage{cmap} % поиск в PDF
\usepackage[T2A]{fontenc} % кодировка
\usepackage[utf8]{inputenc} % кодировка исходного текста
\usepackage[english,russian]{babel} %локализация и переносы
\usepackage{caption}
% подключаем hyperref (для ссылок внутри pdf)
\usepackage[unicode, pdftex, colorlinks=true, linkcolor=blue]{hyperref}
%\newcommand{\стр}[1]{стр.~\pageref{#1}}
\begin{document}
Здесь описан процесс создания ссылки\label{L} подробно описан здесь.
\newpage
как мы уже отмечали на стр.~\pageref{L} говорится о...
Однако, как будет показано далее, на стр..~\pageref{units} это всё неправда.
\newpage
Однако здесь\label{units} сказано совершенно о другом.
\end{document}
答案1
如果 \pageref 可以自动跳转到正确的页面,那就太好了。但是 LaTeX 当前的标签/引用系统有点受限。hyperref 只能存储一个目标名称,并且用于当前计数器,因此没有地方存放页面目标。
因此目前您可以\phantomsection
在 \label 前添加,然后链接将跳转到这个位置:
\documentclass[a4paper]{article}
\usepackage{hyperref}
\begin{document}
first page
wrong: \pageref{units}, right: \pageref{units2}
\newpage
second page \label{units}\phantomsection\label{units2}
\end{document}
或者使用像 zref 这样的扩展参考系统,也可以存储页面目标:
\documentclass[a4paper]{article}
\usepackage{hyperref}
\usepackage{zref-base,zref-user}
\makeatletter
\zref@newprop*{pagedest}[Doc-Start]{page.\@the@H@page}
\zref@addprop{main}{pagedest}
\newcommand\hyperpageref[1]{\hyperlink{\zref@extract{#1}{pagedest}}{\pageref*{#1}}}
\makeatother
\begin{document}
first page
wrong: \pageref{units}, right: \hyperpageref{units}
\newpage
second page \label{units}\zlabel{units}
\end{document}
答案2
默认情况下,您不能简单地使用\label
在页面上标记标签,而无需任何先前的计数器步骤。dohyperref
为每个页面创建一个 pdf 链接,但这些链接的位置始终位于页面的左上角。请参阅一个例子。
@page
因此,为了允许可变链接位置和自动页面引用,我在这里创建了一个由新命令步进的虚拟计数器\pagelabel
。您可以使用它\pagelabel{<label name>}
来创建“页面上的标签”,然后使用\pageref{<label name>}
它来引用它。
\documentclass[a4paper]{article} % Размер бумаги и стиль документа (книга, журнал,...)
\usepackage[14pt]{extsizes} % Размер шрифта
\usepackage{cmap} % поиск в PDF
\usepackage[T2A]{fontenc} % кодировка
\usepackage[utf8]{inputenc} % кодировка исходного текста
\usepackage[english,russian]{babel} %локализация и переносы
\usepackage{caption}
% подключаем hyperref (для ссылок внутри pdf)
\usepackage[unicode, pdftex, colorlinks=true, linkcolor=blue]{hyperref}
%\newcommand{\стр}[1]{стр.~\pageref{#1}}
\newcounter{@page}
\newcommand*{\pagelabel}{\refstepcounter{@page}\label}
\begin{document}
Здесь описан процесс создания ссылки\pagelabel{L} подробно описан здесь.
\newpage
как мы уже отмечали на стр.~\pageref{L} говорится о...
Однако, как будет показано далее, на стр..~\pageref{units} это всё неправда.
\newpage
Однако здесь \pagelabel{units}сказано совершенно о другом.
\end{document}