无法在 \align* 环境中用矩阵标记一行

无法在 \align* 环境中用矩阵标记一行

我尝试这样做

\begin{align*}
\label{labelname}\tag{$\begin{smallmatrix}0\\1\end{smallmatrix}$}a=b\\
c=d
\end{align*}

但它不允许我添加标签并弹出一条错误消息

\math@cr@@ 的使用与其定义不符。\new@ifnextchar ...ved@d = #1\def \reserved@a {#2} \def \reserved@b {#3}\futu...

如果我使用更普通的标签,例如

\tag{$e_2(x)$}

然后标签就可以起作用了。

有人能帮忙吗?谢谢!

答案1

您应该使用\protect脆弱的宏:\begin\\\end,因此

\tag{$\protect\begin{smallmatrix}0\protect\\1\protect\end{smallmatrix}$}

但是,您可以使用更清晰的宏来避免这种麻烦的方法:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\mathtag}[1]{%
  \tag{\unexpanded{\unexpanded{$#1$}}}%
}

\begin{document}
\begin{align*}
\label{labelname}\mathtag{\begin{smallmatrix}0\\1\end{smallmatrix}}a=b\\
c=d
\end{align*}
And \eqref{labelname}
\end{document}

在此处输入图片描述

答案2

我提前把标签保存在一个盒子里,然后在标签里面使用它。

\documentclass{article}
\usepackage{amsmath}
\newsavebox\tagA
\newsavebox\tagB
\begin{document}
\savebox\tagA{$\begin{smallmatrix}0\\1\end{smallmatrix}$}
\begin{align*}
\label{labelA}\tag{\usebox{\tagA}}a=b\\
c=d
\end{align*}

\savebox\tagB{$\begin{smallmatrix}2\\3\end{smallmatrix}$}
\begin{align*}
\label{labelB}\tag{\usebox{\tagB}}e=f\\
g=h
\end{align*}

Comparing \ref{labelA} and \ref{labelB}...
\end{document}

在此处输入图片描述

相关内容