2010-11-05 25 views
0

我想以下面的方式修改\ autoref命令:如果\ autoref命令和標籤在同一頁面上,它的行爲就像\ autoref *(即,no超鏈接)。否則,它通常會表現出來。調整 autoref的行爲有點像 vref

感謝, 毗溼奴

+1

在此提出您的問題 http://tex.stackexchange.com/ – 2010-11-05 16:07:52

回答

1

如果您可以使用\myautoref代替\autoref,下面的工作,你希望:

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

\makeatletter 
\def\[email protected]#1#2#3{% 
    \ifx#1\relax\protect\[email protected] 
    \else\expandafter#2#1\fi} 
\def\pagenum#1{\expandafter\[email protected]\csname 
    [email protected]#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} 
0

我必須解決一個similaire問題,並發現了一些短(更容易爲我瞭解):

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

我仍然遇到的一個小問題是\ thepage返回當前對象(節,子節或子節)的頁面數量,而不是返回此文本將出現的頁面上。 – rac2030 2011-03-19 20:27:10