我正在使用 gather 环境编写一堆方程式。当我尝试交叉引用这些方程式时,方程式编号不会显示出来。这是我的代码
\documentclass[12 pt]{article}
\usepackage{fullpage}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{float}
\usepackage{setspace}
\usepackage{longtable}
\usepackage{lscape}
\usepackage{color}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{caption}
\usepackage{array}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\doublespacing
\begin{document}
\begin{gather}\label{eq:1}
a=1 \nonumber \\
b=1
\end{gather}
Equation \ref{eq:1}
\end{document}
方程编号应该显示在“方程”后面,但它不见了。可能是什么问题?如果我删除它,\nonumber
那么一切似乎都正常,但我需要\nonumber
。
答案1
为此,您需要使用gathered
来自amsmath
并放置\label
外部该环境。另一种快速而粗略的实现此目的的方法(不使用amsmath
)是使用array
:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{equation}
\begin{gathered}
a = 1 \\ b = 2
\end{gathered}\label{eq:1}
\end{equation}
Equation~\eqref{eq:1} and~\eqref{eq:2}.
\begin{equation}
\begin{array}{c}
a = 1 \\[\jot] b = 2
\end{array} \label{eq:2}
\end{equation}
\end{document}
还可以考虑使用\eqref
而不是\ref
方程式,因为这完全支持amsmath
复制方程式编号的行为,即使在其他字体中也是如此。
答案2
如果您想用一个数字引用几个方程式,那么您可以按照 Werner 的建议使用,但在这种情况下gathered
我更愿意推荐以下环境:aligned
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}\label{eq:1}
\begin{aligned}
a &= 1 \\
b &= 1
\end{aligned}
\end{equation}
Equation~\eqref{eq:1}
\end{document}
的优点aligned
是您可以使用对齐制表符&
来对齐等号(巧合的是,在您的例子中这并非必需)。请注意,您应该使用\eqref
和而不是\ref
引用等式。此外,最好始终~
在单词“等式”和之间使用连字符\eqref
,这样您就不会在中间出现换行符。(显然,这在这里不会发生,因为我们在一行的开头,但只要养成习惯就行了。)
如果你想知道为什么你的代码以前能工作,那么我最好的猜测是你切换了\nonumber \\
:\\ \nonumber
它或多或少能工作,从那时起第一的方程有标签和第二一个没有数字:
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{gather}\label{eq:1}
a=1 \\ \nonumber
b=1
\end{gather}
Equation~\eqref{eq:1}
\end{document}