Отдельные уравнения в нескольких столбцах с индивидуальной нумерацией

Отдельные уравнения в нескольких столбцах с индивидуальной нумерацией

У меня есть несколько коротких уравнений, и я хочу показать их в двух столбцах. По сути:

А = Б (1) || С = Г (2)

Э = Ж (3) || Г = Н (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 выводят сообщения об ошибках, когда в одной строке появляется несколько меток, и нам нужно обойти это). Из-за @' это должно быть заключено в \makeatletter...\makeatother.

Возможно, неразумно, я включил &'s внутрь макроса, и, следовательно, неявно предположил, что это \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

Я уверен, что есть более элегантное решение этой проблемы, поэтому, пожалуйста, прокомментируйте или отредактируйте этот ответ, указав подходящее решение.

Связанный контент