多列中的各个方程式具有单独的编号

多列中的各个方程式具有单独的编号

我有许多简短的方程式,我想将它们显示在两列中。本质上:

A = B (1) || C = D (2)

E = F (3)|| G = H (4)

我首先尝试了flalign环境(我更喜欢这个align,但这不是必需的),但我无法按照我想要的方式对方程进行编号。align环境将每一行视为一个方程。

例子:

\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}

\begin{document}
\begin{flalign}
A = & B & C = & D \\
E = & F & G = & H
\end{flalign}
\end{document}

另一种方法是使用简单的multicolumn环境,强制分栏:

\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{multicol}

\begin{document}
\begin{multicols}{2}
\begin{align}
A = & B \\
E = & F
\end{align}
\columnbreak
\begin{align}
C = & D \\
G = & H
\end{align}
\end{multicols}

\end{document}

然而存在多个问题:

  1. 这些方程式似乎垂直放置错误
  2. 编号是垂直的,而不是水平的(这对我来说是可以接受的)

我将非常感激任何对此提供帮助的帮助。

答案1

我认为,如果您打算稍后引用方程式,则应该对其进行编号,因此,按照这种理念,为什么不定义一个宏,既插入方程式编号又制作标签呢:

\newcommand\Label[1]{&\refstepcounter{equation}(\theequation)\ltx@label{#1}&}

这首先会增加equation计数器,然后打印它,然后使用一些技巧来制作标签(当一行中出现多个标签时,amsmath 环境会打印错误消息,我们需要避开这一点)。因为 ' @s ,所以这需要包装在 中\makeatletter...\makeatother

可能不太明智,我将 包括&在宏中,因此隐式假设\Label总是在类似环境的东西中使用align*——请注意 ,*因为您不希望环境给出额外的标签。另一方面,需要付出一些额外的努力才能避免align*出现错误(因为align*抑制了方程式编号),因此这个宏在 ams 对齐环境之外不起作用。

使用此宏可以得到:

在此处输入图片描述

完整代码如下:

\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}
\makeatletter
\newcommand\Label[1]{&\refstepcounter{equation}(\theequation)\ltx@label{#1}&}
\makeatother
\begin{document}
\begin{align*}
  A &= B \Label{one}& C &= D \Label{two}\\
  E &= F \Label{three}& G &= H \Label{four}
\end{align*}
See equations \ref{one}, \ref{two}, \ref{three} and \ref{four}.
\end{document}

&正如我上面所说,将两个放在宏中可能是不明智的,\Label因为它隐藏了环境中的某些结构align*,最终可能会使某些人感到困惑。

flalign*顺便说一句,这对于环境同样有效。

答案2

我无法在答案中添加评论,因此我将其作为答案添加给遇到类似问题的其他人,并且\Label仅使用首字母。

\tmpLabel我已经使用原始添加了一个虚拟变量\def,以便它可以在内部正确扩展\ltx@label

\makeatletter
\newcommand{\allignLabel}[1]{&\refstepcounter{equation}(\theequation)\def\tmplab{#1}\ltx@label\tmplab&}
\makeatother

我确信有一个更优雅的解决方案,因此请使用适当的解决方案来评论或编辑此答案。

相关内容