
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
実行されます。\AtBeginDocument
hyperref
また、パッケージは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
。