¿Redefinir \ref para que también muestre el número de página?

¿Redefinir \ref para que también muestre el número de página?

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 hyperrefarruinarí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 \refse puede redefinir. Debe hacerse lo más tarde posible, porque muchos paquetes lo redefinen. En la solución, se hace \AtBeginDocumental final del preámbulo, especialmente después de hyperrefcargar el paquete.

Además, el paquete hyperrefadmite 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}

Enlace de referencia con la página.

Respuesta3

Tal vez le gustaría echar un vistazo avariorefpaquete con su comando \vref. Esto generará la producción demandada. Además, esto no afecta a su hyperrefconfiguración.

información relacionada