%20alrededor%20de%20%5Cref%7B%7D.png)
¿Cómo puedo agregar [
y ]
rodear \ref{myref}
para obtener algo como esto?
[1.1]
Esto no 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}
Respuesta: comenta \usepackage[colorlinks=true,allcolors=blue]{hyperref}
y funciona. Pero necesito hyperref
, no quiero usar amsmath
, y prefiero no agregar paquetes ya que tienden a chocar con otras cosas más adelante, como usar platex, etc. ¿Qué puedo hacer?
Respuesta1
Dado que hyperref
redefine las cosas después de \begin{document}
, puede diferirlo renewcommand
para que sea \AfterBeginDocument
como:
Notas:
- Esto no funcionará con la variante destacada
\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}
Respuesta2
Estoy actualizando mi comentario a una respuesta, ya que parece serlo.
En lugar de usar \eqref
, pon esto en tu preámbulo:
\usepackage{fncylab}
\labelformat{equation}{(#1)}
de modo que \ref
aplicado a la etiqueta de una ecuación tiene el estilo \eqref
y normalmente de otro modo, y cuando hyperref
se usa, el enlace abarca los paréntesis.
Tenga en cuenta que, aunque puede utilizar esta técnica para otros tipos de etiquetas, existe un error amsthm
que, si la utiliza \newtheorem
en el formulario \newtheorem{<new theorem>}[<old theorem>]{...}
, <new theorem>
tendráliteralmenteel mismo contador que <old theorem>
, y fncylab
(y de hecho, cleverref
) los etiquetarán de manera idéntica. La solución es que, después de definir los teoremas, también debes duplicar sus contadores:
\usepackage{aliascnt}
\newaliascnt{<new theorem>}{<old theorem>}
\labelformat{<new theorem>}{...}
Esto funcionará como se esperaba. Hago esto con muchos contadores en todo lo que escribo.