Wie definiere ich \ref als \eqref neu?

Wie definiere ich \ref als \eqref neu?

Ich würde es gerne \refals neu definieren \eqref, aber \renewcommand{\ref}{\eqref}das funktioniert nicht. Ich würde vermuten, dass dies passiert, weil \eqrefintern als definiert ist \newcommand{\eqref}{(\ref)}, aber ich bin mir nicht sicher. Irgendwelche Ratschläge?

Antwort1

Wenn duWirklichmöchte dies tun, in amsmath.styist \eqrefdefiniert als

\renewcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}

man könnte also sagen

\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}

Bildbeschreibung hier eingeben

Beachten Sie die Inkonsistenzen, die durch die Neudefinition entstehen. Sie verweisen auf den Abschnitt (1), obwohl Ihr Dokument über den Abschnitt verfügt 1. Bei Floats und anderen Objekten in Ihrem Dokument tritt ein ähnliches Problem auf.

Nachtrag

Wenn Sie das Querverweisformat für einen bestimmten Objekttyp neu definieren möchten,cleverefPaket könnte eine bessere Option sein; ein kleines Beispiel, in dem ich die Formatierung für Querverweise auf Abbildungen geändert habe und alle anderen Querverweise unverändert gelassen habe:

\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}

Bildbeschreibung hier eingeben

Antwort2

Mit dem Makro \p@equationkönnen die Gleichungsreferenzen von geändert werden \ref. Normalerweise \p@<counter>wird es verwendet, um der Referenz des Zählers ein Präfix hinzuzufügen <counter>und nimmt kein Argument an. Aber mit einem zusätzlichen \expandafterkann der Zählerwert als einfaches Argument abgefangen werden:

\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}

Ergebnis

Nachteil: Die Referenz \refsollte nicht innerhalb verwendet werden \tag, da es sonst zu doppelten Klammern kommt.

Antwort3

\refSie können das Format der Verwendung des Pakets selektiv definieren fncylab, das Heikos Antwort entspricht (aber paketierter ist). Zum Beispiel:

\usepackage{fncylab}
\labelformat{equation}{(#1)}
\section{A section}\label{s:section}
\[ \label{eq:eqn} ... \]
\ref{s:section}\ref{eq:eqn}

druckt die Gleichungsnummer in Klammern, aber die Abschnittsnummer normal. Ich muss eine stehende Präambel definieren \labelformat{section}{Section~#1}und so weiter.

verwandte Informationen