現在のページへのハイパーリンクを非表示にする

現在のページへのハイパーリンクを非表示にする

ハイパーリンクと同じページを指すハイパーリンクを抑制することは可能ですか?

現在、ハイパーリンクには 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

2 つが同じ場合は、リンクされていない形式 が使用され\ref*、そうでない場合は が使用されます\ref。つまり、最初のページの参照はクリックできませんが、2 番目のページはクリックできます。

使用する他の参照コマンドに対応するマクロを設定する必要があります。異なる名前を使用することをお勧めします。( \mypageref、、\myhrefなど)。 からマクロ名を上書きしようとすると、hyperrefパッケージが不適切になります。

このソリューションを同様に適応させて で動作させることができると確信していますcleverref

関連情報