Graças ao CFRComo eu obteria números de equações com cores personalizadas da maneira mais simples possível?por fornecer uma dica sobre como fazer isso sem os pacotes mhchem/amsmath instalados. Para entender o que quero dizer, aqui está um MWE. Se eu comentar a \usepackage[version=4]{mhchem}
linha, obtenho o resultado desejado. Parece que mhchem
devemos redefinir a \@eqnnum
macro de alguma forma.
\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}
Eu pesquisei mhchem.sty
, mhchem.tex
, hpstatement.sty
e rsphrase.sty
. Está tudo um pouco acima da minha cabeça, mas não vi nada óbvio que pudesse causar esse problema. Minha próxima etapa foi ver quais pacotes eram exigidos pelo mhchem
, e criei a seguinte lista:
expl3, l3keys2e, l3regex, calc[1998/07/07], amsmath, chemgreek[2015/04/09], graphics, ifthen, textcomp, babel, twoopt
Nada disso causa problemas, exceto amsmath
. O seguinte MWE funciona bem até você descomentar a amsmath
linha:
\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}
Remover o comentário amsmath
fará com que a cor volte ao preto (mas não há erro).
No amsmath.ins
, vejo o seguinte:
\iftagsleft@
\def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor
\hskip -\displaywidth\tagform@\theequation}}
\else
\def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}}
\fi
Eu pensaria que se eu redefinisse o \@eqnnum
patch, isso não faria diferença, mas honestamente tenho apenas uma pequena ideia de como tudo isso realmente funciona.
Neste ponto, estou buscando a orientação de membros mais experientes da comunidade para que isso funcione com os pacotes amsmath
/ mhchem
em uso.
Responder1
Você está usando o patch errado, pois, ao amsmath
carregar, a impressão do número da equação não é \@eqnnum
mais delegada ou, pelo menos, é de forma diferente. Veja, por exemplo,ajustar o alinhamento dos números das equações com 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}
Se você quiser que também \eqref
imprima o número da equação em azul, comente as duas linhas antes \def\@tagform@
.
Responder2
Eu tenho uma solução 'hackeada':
mhchem
carrega amsmath
, portanto, a omissão amsmath
causará a configuração de cor incorreta de qualquer maneira, se mhchem
estiver incluída.
O culpado está \gdef\df@tag{\tagform@\theequation}
, \endmathdisplay@
no meu ponto de vista, em omitir a mudança de cor feita por \@eqnnum
. Usei outro patch e introduzi um general \mathtagcolor
, que é definido como a SAEblue
cor aqui.
\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}