하이퍼링크와 동일한 페이지를 가리키는 하이퍼링크를 억제할 수 있습니까?
현재 하이퍼링크에 대해 hyperref 및 Cleveref 패키지를 사용하고 있지만 (\ref* 옵션을 사용하지 않고) 현재 페이지를 가리키는 하이퍼링크를 비활성화하는 옵션을 찾을 수 없습니다. 이 패키지나 다른 패키지로 이것이 가능합니까? 아니면 다른 솔루션을 가진 사람이 있습니까?
답변1
\documentclass{article}
\usepackage{etoolbox}
\usepackage{hyperref}
\usepackage{refcount}
\newcommand*{\myref}[1]{
\ifnumequal{\thepage}{\getpagerefnumber{#1}}
{\ref*{#1}}{\ref{#1}}
}
\begin{document}
\begin{figure}
\caption{An empty figure}
\label{fig:empty}
\end{figure}
This is a reference on the same page.~[\myref{fig:empty}]
\pagebreak
This is a reference on a different page.~[\myref{fig:empty}]
\end{document}
이 명령은 from을 \myref
사용하여 현재 페이지 번호와 참조된 페이지 번호가 동일한지 확인합니다( 이러한 페이지 번호를 문자열이 아닌 숫자로 가져오는 데 사용).\ifnumequal
etoolbox
refcount
둘이 동일하면 연결되지 않은 형식을 사용합니다 \ref*
. 그렇지 않으면 \ref
. 즉, 첫 번째 페이지의 참조는 클릭할 수 없지만 두 번째 페이지는 클릭할 수 있습니다.
사용하는 다른 참조 명령에 대해 해당 매크로를 설정해야 하며 다른 이름을 사용하는 것이 좋습니다. ( \mypageref
, \myhref
, 등등). 매크로 이름을 덮어쓰려고 하면 hyperref
불행한 패키지가 됩니다.
.cleverref