
Ich würde es gerne \ref
als neu definieren \eqref
, aber \renewcommand{\ref}{\eqref}
das funktioniert nicht. Ich würde vermuten, dass dies passiert, weil \eqref
intern als definiert ist \newcommand{\eqref}{(\ref)}
, aber ich bin mir nicht sicher. Irgendwelche Ratschläge?
Antwort1
Wenn duWirklichmöchte dies tun, in amsmath.sty
ist \eqref
definiert 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}
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,cleveref
Paket 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}
Antwort2
Mit dem Makro \p@equation
kö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 \expandafter
kann 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}
Nachteil: Die Referenz \ref
sollte nicht innerhalb verwendet werden \tag
, da es sonst zu doppelten Klammern kommt.
Antwort3
\ref
Sie 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.