方程编号引用未出现在 empheq/array 环境中?

方程编号引用未出现在 empheq/array 环境中?

为什么环境中没有出现方程编号引用empheq/array?在这个例子中,我省略了empheq环境中的公式(添加公式后问题仍然存在)。

\documentclass{article}
\usepackage{amsmath}
\usepackage{empheq}

\begin{document}

\begin{empheq}{align}
\label{eq:1}
\left\{\!\!\begin{array}{l}
\text{An equation reference should appear after the question mark, but doesn't ? \eqref{eq:2}}\\
\text{This doesn't work either : \eqref{eq:2}}
\end{array}\right.
\end{empheq}

I can definitely refer to the equation though, like this : \eqref{eq:2}.

\begin{empheq}{align}
\label{eq:2}
1+1=2
\end{empheq}


It compiles without throwing an error.

\end{document}

答案1

(\ref{whatever})如果您使用代替 ,问题就会消失\eqref{whatever}。不过,我不知道为什么会发生这种情况。

答案2

主要问题是empheq重新定义,\maketag@@@因为它需要将显示与方程式数字分开。但\eqref也利用这个宏来排版对方程式数字的引用。下面的修复似乎可以解决问题,并将内置到下一个empheq版本中

\makeatletter
\MHInternalSyntaxOn
\renewenvironment{empheq}[2][]{%
  \let\savedmaketag\maketag@@@
  \renewcommand\eqref[1]{\textup{%
      \let\maketag@@@\savedmaketag%
      \tagform@{\ref{##1}}}%
  }
  \setkeys{EmphEqEnv}{#2}\setkeys{\EQ_options_name:}{#1}%
  \EmphEqMainEnv}{\endEmphEqMainEnv}
\MHInternalSyntaxOff
\makeatother

相关内容