¿Cómo redefinir \ref como \eqref?

¿Cómo redefinir \ref como \eqref?

Me gustaría redefinirlo \refcomo \eqref, pero \renewcommand{\ref}{\eqref}no funciona. Supongo que esto sucede porque \eqrefse define internamente como \newcommand{\eqref}{(\ref)}, pero no estoy seguro. ¿Algún consejo?

Respuesta1

Si usteden realidadquiero hacer esto, en amsmath.sty, \eqrefse 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}

ingrese la descripción de la imagen aquí

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, elcleverefEl 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}

ingrese la descripción de la imagen aquí

Respuesta2

La macro \p@equationse 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}

Resultado

Desventaja: La referencia \refno debe usarse dentro de \tag, de lo contrario el resultado será paréntesis duplicado.

Respuesta3

Puede definir selectivamente el formato de \refuso del fncylabpaquete, 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.

información relacionada