调整\ autoref的行为有点像\ vref

时间:2010-11-05 16:03:24

标签: latex cross-reference

我想通过以下方式修改\ autoref命令:如果\ autoref命令和标签位于同一页面上,它的行为类似于\ autoref *(即没有超链接)。否则,它通常表现得很好。

谢谢, 毗

2 个答案:

答案 0 :(得分:1)

如果您可以使用\myautoref代替\autoref,则以下内容可以按您的意愿使用:

\documentclass{article}
\usepackage{lipsum}
\usepackage[pdftex,colorlinks]{hyperref}

\makeatletter
\def\my@setref#1#2#3{%
  \ifx#1\relax\protect\G@refundefinedtrue
  \else\expandafter#2#1\fi}
\def\pagenum#1{\expandafter\my@setref\csname
    r@#1\endcsname\@secondoffive{#1}}%
\def\myautoref#1{\def\refnum{\pagenum{#1}}%
    \ifnum\refnum=\thepage\relax\autoref*{#1}%
    \else\autoref{#1}\fi}

\makeatother
\begin{document}

\section{First}\label{first}

\lipsum[1-3]

\myautoref{first} 

\lipsum[4-8]

\myautoref{first}

\end{document}

答案 1 :(得分:0)

我必须解决类似问题,发现更短的东西(对我来说更容易理解):

\usepackage{ifthen}
\newcommand{\myautoref}[1]{
    \ifthenelse%
        {\equal{\pageref{#1}}{\thepage}}%
        {\autoref*{#1}}%
        {\autoref{#1}}
}