%20em%20torno%20de%20%5Cref%7B%7D.png)
Como posso adicionar [
e ]
contornar \ref{myref}
para obter algo assim:
[1.1]
Isso não funciona:
\documentclass{article}
\usepackage[colorlinks=true,allcolors=blue]{hyperref}
\let\oldref\ref
\renewcommand{\ref}[1]{[\oldref{#1}]}
\begin{document}
\section{Section}
Why cannot include square brackets around cross references? \ref{S}
\subsection{Subsection\label{S}}
This is a subsection.
\end{document}
Resposta: comente \usepackage[colorlinks=true,allcolors=blue]{hyperref}
e funciona. Mas eu preciso hyperref
, não quero usar amsmath
e prefiro não adicionar pacotes pois eles tendem a entrar em conflito com outras coisas mais tarde, como usar plastex, etc. O que posso fazer?
Responder1
Como hyperref
redefine as coisas após o \begin{document}
, você pode adiar o renewcommand
para ser \AfterBeginDocument
como:
Notas:
- Isso não funcionará com a variante marcada com estrela
\ref*
.
Código:
\documentclass{article}
\usepackage{letltxmacro}
\usepackage[colorlinks=true,allcolors=blue]{hyperref}
\AtBeginDocument{%
\LetLtxMacro\oldref{\ref}%
\DeclareRobustCommand{\ref}[2][]{[\oldref#1{#2}]}%
}
\begin{document}
\section{Section}
Why cannot include square brackets around cross references? \ref{S}
\subsection{Subsection\label{S}}
This is a subsection.
\end{document}
Responder2
Estou atualizando meu comentário para uma resposta, pois parece ser uma.
Em vez de usar \eqref
, coloque isto no seu preâmbulo:
\usepackage{fncylab}
\labelformat{equation}{(#1)}
de modo que \ref
aplicado ao rótulo de uma equação tenha o mesmo estilo \eqref
e normalmente de outra forma e, quando hyperref
usado, o link abrange os parênteses.
Observe que embora você possa usar esta técnica para outros tipos de rótulo, há um bug para amsthm
que, se você usar \newtheorem
no form \newtheorem{<new theorem>}[<old theorem>]{...}
, o <new theorem>
teráliteralmenteo mesmo contador que <old theorem>
, e fncylab
(e de fato, cleverref
) irá rotulá-los de forma idêntica. A solução alternativa é que, após definir os teoremas, você também deve duplicar seus contadores:
\usepackage{aliascnt}
\newaliascnt{<new theorem>}{<old theorem>}
\labelformat{<new theorem>}{...}
Isso funcionará conforme o esperado. Faço isso com muitos contadores em tudo que escrevo.