对齐环境中的编号颜色

对齐环境中的编号颜色

我在环境中有一长串方程式align,我想使用 仅突出显示最后一个方程式(最终结果)\color{red}。但是,标签数字保持黑色(与环境中发生的情况不同equation)。我如何更改数字的颜色?

平均能量损失

\documentclass[11pt,a4paper]{report}

\usepackage{amsmath, amssymb}
\usepackage{color}

\newcommand{\colorlabel}[1]{%
  \refstepcounter{equation}%
  \tag{\textcolor{#1}{\theequation}}}

\begin{document}

\begin{equation}
\label{eq:equation}
\color{red} a = b + c
\end{equation}

\begin{align}
\label{eq:align}
a &= b + c \nonumber
\\
& \colorlabel{red}\color{red} = e + f
\end{align}
Eq~\eqref{eq:equation} shows that referencing using the equation environment gives black text.
Eq~\eqref{eq:align} shows that referencing using the align environment gives colored numbers with black brackets.

\end{document}

在此处输入图片描述

更新

基于 jarauh 的解决方案,我目前正在使用

\newcommand{\colorlabel}[1]{%
  \refstepcounter{equation}%
  \tag{\color{#1}{\theequation}}}

但是,这会使括号保持黑色。此外,引用时,数字会着色,但括号不会。此行为与使用显示的行为不同equation(引用时所有内容都是黑色)。我希望它们之间有一致的行为(如果有一个单一的命令,而无需手动修改等式之前/之后的颜色,那就太好了)。

答案1

我查看了 AMS LaTeX 文档amsmath.pdf以了解标签的处理方式,并找到了一种方法,可以将方程旁边的方程编号涂成红色,而任何参考的颜色保持不变。环境的所有其他部分都align必须单独涂成红色。需要注意的一点是:如果您\color{red}在环境中使用align,其效果只会持续到下一个&\\。显然,环境中的所有单元格都在不同的组中。

\makeatletter
\definecolor{johnnywalker}{rgb}{1,0,0}
\newcommand{\redlabel}{%
  \refstepcounter{equation}%
  \global\tag@true%
  \nonumber%
  \gdef\df@tag{\maketag@@@{{\color{johnnywalker}(\theequation)}}\def\@currentlabel{\theequation}}}
\makeatother

然后您可以按如下方式使用它:

\begin{align}
  a &  = b + c
  \\
  \redlabel
  &  = e + f
\end{align}

现在,\ref应该\eqref可以按预期运行。

解释

命令\tag\label不会立即创建标记和标签。相反,一切都会推迟到读取完所有行后。只有这样才会排版标记并创建标签。

上面的代码执行以下操作:

  1. 手动步进计数器(因为我们不能依赖自动标签生成)
  2. 告诉 AMSTeX 标签已手动设置。
  3. 告诉 AMSTeX 不要自动生成方程编号
  4. \df@tag使用生成标记和标签的内容初始化命令

    1. 和 3. 我从(在环境中处于活动状态\tag@in@align的版本)的定义中复制而来。 4. 来自(负责保存有关标签和标签的信息的命令)的定义。\tagalign\make@df@tag@@@

相关内容