
Me preguntaba ociosamente en lugar de tener see Section \ref{labelname}
productos.
ver Sección 4.1.1
Podría hacerlo para que see Section \ref{labelname}
produzca
ver Sección 4.1.1(p65)
¿es posible? ¿El uso hyperref
arruinaría esto?
Respuesta1
Puedes definir un comando, como \myref
\newcommand{\myref}[1]{\ref{#1} (p\pageref{#1})}
Entonces puedes usar\myref{xxx}
Respuesta2
La forma más limpia sería una nueva macro como en la respuesta de goodluck
. Pero también \ref
se puede redefinir. Debe hacerse lo más tarde posible, porque muchos paquetes lo redefinen. En la solución, se hace \AtBeginDocument
al final del preámbulo, especialmente después de hyperref
cargar el paquete.
Además, el paquete hyperref
admite una forma de estrella que genera la referencia sin el enlace. Por ejemplo, esto es útil si la referencia es parte de otra referencia para evitar enlaces anidados.
\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}
Respuesta3
Tal vez le gustaría echar un vistazo avarioref
paquete con su comando \vref
. Esto generará la producción demandada. Además, esto no afecta a su hyperref
configuración.