
Me gustaría redefinirlo \ref
como \eqref
, pero \renewcommand{\ref}{\eqref}
no funciona. Supongo que esto sucede porque \eqref
se define internamente como \newcommand{\eqref}{(\ref)}
, pero no estoy seguro. ¿Algún consejo?
Respuesta1
Si usteden realidadquiero hacer esto, en amsmath.sty
, \eqref
se define como
\renewcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
entonces podrías decir
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\let\origref\ref
\renewcommand{\ref}[1]{\textup{\tagform@{\origref{#1}}}}
\makeatother
\begin{document}
\section{Test}\label{a}
Section~\ref{a}? Equation~\ref{b}
\begin{equation}\label{b}
a=b
\end{equation}
\end{document}
Observe las inconsistencias que introduce la redefinición; estás haciendo referencia cruzada a la sección (1)
, pero tu documento tiene sección 1
; Aparecerá un problema similar para los flotadores y otros objetos en su documento.
Anexo
Quizás, si está interesado en redefinir el formato de referencia cruzada para un tipo particular de objeto, elcleveref
El paquete podría ser una mejor opción; un pequeño ejemplo en el que cambié el formato de las figuras con referencias cruzadas, dejando todas las demás referencias cruzadas sin modificar:
\documentclass{article}
\usepackage{amsmath}
\usepackage{cleveref}
\crefformat{figure}{figure~(#2#1#3)}
\Crefformat{figure}{Figure~(#2#1#3)}
\begin{document}
\section{Test}\label{a}
Section~\ref{a}. Equation~\ref{b}. \Cref{c}? or \cref{c}?
\begin{equation}\label{b}
a=b
\end{equation}
\begin{figure}
\centering
A
\caption{test figure}
\label{c}
\end{figure}
\end{document}
Respuesta2
La macro \p@equation
se puede utilizar para cambiar las referencias de ecuaciones de \ref
. Generalmente \p@<counter>
se usa para agregar un prefijo a la referencia de contador <counter>
y no toma argumento. Pero con un adicional \expandafter
, el valor del contador se puede capturar como un argumento simple:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\renewcommand*{\p@equation}{%
\expandafter\@p@equation
}
\newcommand*{\@p@equation}[1]{%
\textup{\tagform@{#1}}% see definition of `\eqref`
}
\makeatother
\begin{document}
\section{Hello}\label{sec:hello}
\begin{equation}
\label{eq:einstein}
E=mc^2
\end{equation}
References: Section \ref{sec:hello} and equation \ref{eq:einstein}.
\end{document}
Desventaja: La referencia \ref
no debe usarse dentro de \tag
, de lo contrario el resultado será paréntesis duplicado.
Respuesta3
Puede definir selectivamente el formato de \ref
uso del fncylab
paquete, que es equivalente (pero más empaquetado que) la respuesta de Heiko. Por ejemplo:
\usepackage{fncylab}
\labelformat{equation}{(#1)}
\section{A section}\label{s:section}
\[ \label{eq:eqn} ... \]
\ref{s:section}\ref{eq:eqn}
imprimirá el número de ecuación entre paréntesis pero el número de sección normalmente. Tengo un preámbulo permanente para definir \labelformat{section}{Section~#1}
y demás.