Varioref:如何将“在下一页”等内容制作成超链接?

Varioref:如何将“在下一页”等内容制作成超链接?

使用cleverefvariorefhyperref,我生成如下文本

请参阅下页的图 9。

此示例仅提供了一个小的超链接目标:仅“9”。但我已经向我的发布者承诺,文本“下一页”也将进行超链接。(细节并不重要;仅超链接“下一页”或“下一页”也可以。)

我深入研究了文档,看起来\autoref(来自hyperref)提供了更大的目标链接。我需要做什么才能从中获得类似的功能varioref?我目前正在考虑重新定义,\vref以便我可以获取标签并重新定义\reftextafter和朋友作为超链接。这听起来可行吗?有没有更好的策略?

在以下 MWE 中,只有“图 1”中的“1”是链接目标。我希望“下一页”也能突出显示。

\documentclass{article}
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}

% what hacks to insert here?

\begin{document}
Please see \vref{example}.
\clearpage
\begin{figure}
This is it.
\caption{Example}
\label{example}
\end{figure}
\end{document}

答案1

如果没有 cleveref,它也可以工作,因为 hyperref 可以处理这个问题。但是 cleveref 又破坏了代码。你可以试试这个:

\documentclass{article}
\usepackage{varioref}

\usepackage{hyperref}

\usepackage{cleveref}

\makeatletter
\def\cref@vref#1#2{%
    \leavevmode%
    \begingroup%
    \@crefstarredtrue
    \let\T@pageref\@pagerefstar
    \def\reftextcurrent{}%
    \hyperref[#2]{%  
      \@cref{#1}{#2}\@setcref@space%
      \cref@@vpageref{\reftextcurrent}[]{#2}}%
    \endgroup}%
\makeatother
\begin{document}
Please see \vref{example}.
\clearpage
\begin{figure}
This is it.
\caption{Example}
\label{example}
\end{figure}
\end{document}

在此处输入图片描述

答案2

至少对于这个 MWE 来说,一个好的选择是删除cleveref

平均能量损失

\documentclass{article}

% what hacks to insert here?
    \usepackage[nospace]{varioref}
    \usepackage[colorlinks]{hyperref}
    %%%%% \usepackage{cleveref} 
    \labelformat{figure}{fig.~#1}

\begin{document}

Please see \vref{example}.

\clearpage
\begin{figure}
This is it.
\caption{Example}
\label{example}
\end{figure}
\end{document}

答案3

好吧,下面的代码并没有引起我的注意:

\makeatletter  % add targets to \vref

\let\nr@orig@vref=\vref
\def\vref#1{%
  \begingroup
    \let\nr@fa\reftextfaceafter
    \let\nr@a\reftextafter
    \let\nr@b\reftextbefore
    \let\nr@fb\reftextfacebefore
    \def\reftextfaceafter{\hyperref[#1]{\nr@fa}}%
    \def\reftextafter{\hyperref[#1]{\nr@a}}%
    \def\reftextbefore{\hyperref[#1]{\nr@b}}%
    \def\reftextfacebefore{\hyperref[#1]{\nr@fb}}%
    \nr@orig@vref{#1}%
  \endgroup
}

\makeatother

相关内容