mhchem/amsmath scheint das @eqnnum-Makro zu ändern, sodass ich die Farben der Gleichungsnummern nicht global ändern kann. Wie kann ich dieses Problem beheben?

mhchem/amsmath scheint das @eqnnum-Makro zu ändern, sodass ich die Farben der Gleichungsnummern nicht global ändern kann. Wie kann ich dieses Problem beheben?

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 mhchemdas 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.styIch 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 amsmathZeile 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 amsmathwird die Farbe wieder schwarz (es tritt jedoch kein Fehler auf).

Darin amsmath.inssehe 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 \@eqnnumes 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 amsmathgeladen wird, wird der Ausdruck der Gleichungsnummer nicht \@eqnnummehr 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}

Bildbeschreibung hier eingeben

Wenn Sie möchten, dass \eqrefdie Gleichungsnummer auch in Blau ausgedruckt wird, kommentieren Sie die beiden Zeilen davor aus \def\@tagform@.

Antwort2

Ich habe eine „gehackte“ Lösung:

mhchemlädt amsmath, sodass das Weglassen amsmathtrotzdem zu einer falschen Farbeinstellung führt, wenn mhchemes 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\mathtagcolorSAEblue

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

Bildbeschreibung hier eingeben

verwandte Informationen