指向位于之后的页面的链接

指向位于之后的页面的链接

我正在链接到页面。我可以引用位于之前的页面,但我无法链接到第 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}

相关内容