
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 hyperref
estragaria 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 \ref
pode ser redefinido. Isso deve ser feito o mais tarde possível, pois muitos pacotes o redefinem. Na solução isso é feito no \AtBeginDocument
final do preâmbulo, principalmente após hyperref
o carregamento do pacote.
O pacote também hyperref
suporta 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}
Responder3
Talvez você queira dar uma olhada novarioref
pacote com seu comando \vref
. Isso gerará a saída exigida. Além disso, isso não afeta suas hyperref
configurações.