redefinir \ref para que também mostre o número da página?

redefinir \ref para que também mostre o número da página?

eu estava pensando à toa em vez de ter see Section \ref{labelname}produtos

consulte a Seção 4.1.1

eu poderia fazer isso de modo que see Section \ref{labelname}produzisse

consulte a Seção 4.1.1(pág. 65)

Isso é possível? Usar hyperrefestragaria tudo?

Responder1

Você pode definir um comando, como \myref

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

Então você pode usar\myref{xxx}

Responder2

A maneira mais limpa seria uma nova macro como na resposta de goodluck. Mas também \refpode ser redefinido. Isso deve ser feito o mais tarde possível, pois muitos pacotes o redefinem. Na solução isso é feito no \AtBeginDocumentfinal do preâmbulo, principalmente após hyperrefo carregamento do pacote.

O pacote também hyperrefsuporta um formato de estrela que gera a referência sem o link. Por exemplo, isto é útil se a referência fizer parte de outra referência para evitar links aninhados.

\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}

Link de referência com página

Responder3

Talvez você queira dar uma olhada novariorefpacote com seu comando \vref. Isso gerará a saída exigida. Além disso, isso não afeta suas hyperrefconfigurações.

informação relacionada