Dank an cfrWie erhalte ich möglichst einfach individuell eingefärbte Gleichungsnummern?für den Hinweis, wie man das ohne die installierten mhchem/amsmath-Pakete machen kann. Damit Sie wissen, was ich meine, hier ist ein MWE. Wenn ich die Zeile auskommentiere \usepackage[version=4]{mhchem}
, bekomme ich das gewünschte Ergebnis. Es scheint, dass mhchem
das Makro irgendwie neu definiert werden muss \@eqnnum
.
\documentclass{article}
\usepackage{xcolor,etoolbox}
\usepackage[version=4]{mhchem}
\definecolor{SAEblue}{rgb}{0, .62, .91}
\makeatletter
\patchcmd{\@eqnnum}{\normalcolor}{\color{SAEblue}}{\typeout{eqnnum patch: OK!}}{\typeout{eqnnum patch: Oh, dear!}}
\begin{document}
\begin{equation}
1 + 2 = 3\label{eq:siml}
\end{equation}
\end{document}
mhchem.sty
Ich habe , mhchem.tex
, hpstatement.sty
, und durchsucht rsphrase.sty
. Das geht alles ein wenig über meinen Horizont, aber ich habe nichts Offensichtliches gesehen, das dieses Problem verursachen könnte. Mein nächster Schritt war, herauszufinden, welche Pakete von benötigt werden mhchem
, und ich bin auf die folgende Liste gestoßen:
expl3, l3keys2e, l3regex, calc[1998/07/07], amsmath, chemgreek[2015/04/09], graphics, ifthen, textcomp, babel, twoopt
Außer verursacht keines davon Probleme amsmath
. Das folgende MWE funktioniert einwandfrei, bis Sie die amsmath
Zeile auskommentieren:
\documentclass{article}
\usepackage{xcolor,etoolbox}
\usepackage{expl3}
\usepackage{l3keys2e}
\usepackage{l3regex}
\usepackage{calc}[1998/07/07]
%\usepackage{amsmath}
\usepackage{chemgreek}[2015/04/09]
\usepackage{graphics}
\usepackage{ifthen}
\usepackage{textcomp}
\usepackage[american]{babel}
\usepackage{twoopt}
%\usepackage[version=4]{mhchem}
\definecolor{SAEblue}{rgb}{0, .62, .91}
\makeatletter
\patchcmd{\@eqnnum}{\normalcolor}{\color{SAEblue}}{\typeout{eqnnum patch: OK!}}{\typeout{eqnnum patch: Oh, dear!}}
\begin{document}
\begin{equation}
1 + 2 = 3\label{eq:siml}
\end{equation}
\end{document}
Durch Aufheben der Kommentierung amsmath
wird die Farbe wieder schwarz (es tritt jedoch kein Fehler auf).
Darin amsmath.ins
sehe ich Folgendes:
\iftagsleft@
\def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor
\hskip -\displaywidth\tagform@\theequation}}
\else
\def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}}
\fi
Ich würde meinen, dass \@eqnnum
es keinen Unterschied machen würde, wenn ich es durch den Patch neu definiere, aber ehrlich gesagt habe ich nur eine kleine Vorstellung davon, wie das alles wirklich funktioniert.
An diesem Punkt suche ich die Anleitung erfahrenerer Community-Mitglieder, um dies mit den verwendeten amsmath
/ -Paketen zum Laufen zu bringen.mhchem
Antwort1
Du verwendest den falschen Patch, denn wenn amsmath
geladen wird, wird der Ausdruck der Gleichungsnummer nicht \@eqnnum
mehr delegiert oder zumindest auf eine andere Art und Weise. Siehe zum Beispiel:Ausrichtung der Gleichungsnummern mit leqno anpassen
\documentclass{article}
\usepackage{xcolor,etoolbox}
\usepackage[version=4]{mhchem}
\definecolor{SAEblue}{rgb}{0, .62, .91}
\makeatletter
% detach \eqref and \tag making
\renewcommand{\eqref}[1]{\textup{\eqreftagform@{\ref{#1}}}}
\let\eqreftagform@\tagform@
\def\tagform@#1{%
\maketag@@@{\color{SAEblue}(\ignorespaces#1\unskip\@@italiccorr)}%
}
\makeatother
\begin{document}
In equation~\eqref{eq:siml} we state a truth.
\begin{equation}
1 + 2 = 3\label{eq:siml}
\end{equation}
\end{document}
Wenn Sie möchten, dass \eqref
die Gleichungsnummer auch in Blau ausgedruckt wird, kommentieren Sie die beiden Zeilen davor aus \def\@tagform@
.
Antwort2
Ich habe eine „gehackte“ Lösung:
mhchem
lädt amsmath
, sodass das Weglassen amsmath
trotzdem zu einer falschen Farbeinstellung führt, wenn mhchem
es enthalten ist.
Der Übeltäter liegt meiner Meinung nach \gdef\df@tag{\tagform@\theequation}
in , da die durch vorgenommene Farbänderung weggelassen wird. Ich habe einen anderen Patch verwendet und einen allgemeinen eingeführt , der hier als Farbe definiert ist.\endmathdisplay@
\@eqnnum
\mathtagcolor
SAEblue
\documentclass{article}
\usepackage{xcolor}
\usepackage{xpatch}
\usepackage{expl3}
\usepackage{l3keys2e}
\usepackage{l3regex}
\usepackage{calc}[1998/07/07]
\usepackage{amsmath}
\usepackage{chemgreek}[2015/04/09]
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage{textcomp}
\usepackage[american]{babel}
\usepackage{twoopt}
\newcommand{\mathtagcolor}{\normalcolor}
\definecolor{SAEblue}{rgb}{0, .62, .91}
\renewcommand{\mathtagcolor}{SAEblue}
\usepackage[version=4]{mhchem}
\makeatletter
\xpatchcmd{\@eqnnum}{\normalcolor}{\color{\mathtagcolor}}{\typeout{eqnnumpatch: OK!}}{\typeout{eqnnum patch: Oh, dear!}}
\@ifpackageloaded{amsmath}{%
\xpatchcmd{\endmathdisplay@a}{%
\tagform@\theequation
}{%
\color{\mathtagcolor}\tagform@\theequation
}{\typeout{patching \protect\endmathdisplay@a\ succeeded}}{\typeout{patching \protect\endmathdisplay@a\ failed}}
}{}
\makeatother
\begin{document}
\begin{equation}
1 + 2 = 3\label{eq:siml}
\end{equation}
\end{document}