为什么环境中没有出现方程编号引用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