我在环境中有一长串方程式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
不会立即创建标记和标签。相反,一切都会推迟到读取完所有行后。只有这样才会排版标记并创建标签。
上面的代码执行以下操作:
- 手动步进计数器(因为我们不能依赖自动标签生成)
- 告诉 AMSTeX 标签已手动设置。
- 告诉 AMSTeX 不要自动生成方程编号
\df@tag
使用生成标记和标签的内容初始化命令- 和 3. 我从(在环境中处于活动状态
\tag@in@align
的版本)的定义中复制而来。 4. 来自(负责保存有关标签和标签的信息的命令)的定义。\tag
align
\make@df@tag@@@
- 和 3. 我从(在环境中处于活动状态