gracias a cfr¿Cómo puedo obtener números de ecuación con colores personalizados de la forma más sencilla posible?por proporcionar una pista sobre cómo hacer esto sin los paquetes mhchem/amsmath instalados. Para ver lo que quiero decir, aquí hay un MWE. Si comento la \usepackage[version=4]{mhchem}
línea, obtengo el resultado deseado. Parece que mhchem
hay que redefinir la \@eqnnum
macro de alguna manera.
\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}
Busqué en mhchem.sty
, mhchem.tex
, hpstatement.sty
y rsphrase.sty
. Está todo un poco por encima de mi cabeza, pero no vi nada obvio que pudiera causar este problema. Mi siguiente paso fue ver qué paquetes eran requeridos por mhchem
, y se me ocurrió la siguiente lista:
expl3, l3keys2e, l3regex, calc[1998/07/07], amsmath, chemgreek[2015/04/09], graphics, ifthen, textcomp, babel, twoopt
Ninguno de estos causa problemas excepto amsmath
. El siguiente MWE funciona bien hasta que descomentes la amsmath
línea:
\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}
Descomentar amsmath
hará que el color vuelva a ser negro (pero no hay ningún error).
En el amsmath.ins
, veo lo siguiente:
\iftagsleft@
\def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor
\hskip -\displaywidth\tagform@\theequation}}
\else
\def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}}
\fi
Pensaría que redefinir el \@eqnnum
parche no haría ninguna diferencia, pero sinceramente sólo tengo una pequeña idea de cómo funciona realmente todo esto.
En este punto, estoy buscando la orientación de miembros de la comunidad con más experiencia para que esto funcione con los paquetes amsmath
/ mhchem
en uso.
Respuesta1
Estás usando el parche equivocado porque, cuando amsmath
está cargado, la impresión del número de ecuación no se delega a\@eqnnum
ya no se delega o, al menos, es de otra forma. Véase, por ejemplo,ajustar la alineación de los números de ecuación con leqno
\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}
Si desea que también \eqref
se imprima el número de ecuación en azul, comente las dos líneas anteriores \def\@tagform@
.
Respuesta2
Tengo una solución 'hacky':
mhchem
loads amsmath
, por lo que omitirlo amsmath
provocará una configuración de color incorrecta de todos modos si mhchem
se incluye.
El culpable está \gdef\df@tag{\tagform@\theequation}
, \endmathdisplay@
bajo mi punto de vista, en omitir el cambio de color realizado por \@eqnnum
. Utilicé otro parche e introduje un general \mathtagcolor
, que se define como el SAEblue
color aquí.
\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}