ページ番号も表示されるように \ref を再定義しますか?

ページ番号も表示されるように \ref を再定義しますか?

see Section \ref{labelname}私は生産する代わりに、ぼんやり考えていました

セクション4.1.1を参照

see Section \ref{labelname}私はそれが生成するようにすることができます

セクション4.1.1を参照(p65)

これは可能ですか? を使用すると、hyperrefこれが台無しになりますか?

答え1

\myrefのようなコマンドを定義することができます

\newcommand{\myref}[1]{\ref{#1} (p\pageref{#1})}

次に、\myref{xxx}

答え2

よりクリーンな方法は、の回答のような新しいマクロですgoodluck。ただし、再定義することもできます。多くのパッケージがこれを再定義するため、できるだけ遅く行う必要があります。ソリューションでは、特にパッケージがロードされた後、プリアンブルの最後で\ref実行されます。\AtBeginDocumenthyperref

また、パッケージはhyperref、リンクなしで参照を生成するスター形式をサポートしています。たとえば、これは、参照が別の参照の一部である場合に、ネストされたリンクを回避するのに役立ちます。

\documentclass{article}
\usepackage{hyperref}

\makeatletter
\AtBeginDocument{%
  \newcommand*{\original@ref}{}%
  \let\original@ref\ref
  \@ifpackageloaded{hyperref}{%
    \renewcommand*{\ref}{%
      \@ifstar\newrefstar\newref
    }%
    \newcommand*{\newrefstar}[1]{%
      \original@ref*{#1} \textbf{(p\pageref*{#1})}%
    }%
    \newcommand*{\newref}[1]{%
      \hyperref[#1]{\newrefstar{#1}}%
    }%
  }{%
    \renewcommand*{\ref}[1]{%
      \original@ref{#1} \textbf{(p\pageref{#1})}%
    }%
  }%
}
\makeatother

\begin{document}
\section{Introduction}
\section{Foo bar}
\subsection{Hello World}
\label{sec:hello}
This is subsection \ref{sec:hello}.
\end{document}

ページへの参照リンク

答え3

ぜひご覧になってみてくださいvariorefパッケージをそのコマンドで実行します\vref。これにより、必要な出力が生成されます。また、これは設定には影響しませんhyperref

関連情報