현재 페이지에 대한 하이퍼링크 억제

현재 페이지에 대한 하이퍼링크 억제

하이퍼링크와 동일한 페이지를 가리키는 하이퍼링크를 억제할 수 있습니까?

현재 하이퍼링크에 대해 hyperref 및 Cleveref 패키지를 사용하고 있지만 (\ref* 옵션을 사용하지 않고) 현재 페이지를 가리키는 하이퍼링크를 비활성화하는 옵션을 찾을 수 없습니다. 이 패키지나 다른 패키지로 이것이 가능합니까? 아니면 다른 솔루션을 가진 사람이 있습니까?

답변1

다음은etoolbox그리고refcount패키지:

\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사용하여 현재 페이지 번호와 참조된 페이지 번호가 동일한지 확인합니다( 이러한 페이지 번호를 문자열이 아닌 숫자로 가져오는 데 사용).\ifnumequaletoolboxrefcount

둘이 동일하면 연결되지 않은 형식을 사용합니다 \ref*. 그렇지 않으면 \ref. 즉, 첫 번째 페이지의 참조는 클릭할 수 없지만 두 번째 페이지는 클릭할 수 있습니다.

사용하는 다른 참조 명령에 대해 해당 매크로를 설정해야 하며 다른 이름을 사용하는 것이 좋습니다. ( \mypageref, \myhref, 등등). 매크로 이름을 덮어쓰려고 하면 hyperref불행한 패키지가 됩니다.

.cleverref

관련 정보