我想通过以下方式修改 \autoref 命令:如果 \autoref 命令和标签在同一页面上,它的行为类似于 \autoref*(即,没有超链接)。否则,它的行为通常。
谢谢,毗湿奴
我想通过以下方式修改 \autoref 命令:如果 \autoref 命令和标签在同一页面上,它的行为类似于 \autoref*(即,没有超链接)。否则,它的行为通常。
谢谢,毗湿奴
如果您可以使用\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}
我必须解决一个类似的问题并找到更短的东西(对我来说更容易理解):
\usepackage{ifthen}
\newcommand{\myautoref}[1]{
\ifthenelse%
{\equal{\pageref{#1}}{\thepage}}%
{\autoref*{#1}}%
{\autoref{#1}}
}