使用收集环境进行交叉引用的问题

使用收集环境进行交叉引用的问题

我正在使用 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}

相关内容