Equações individuais em múltiplas colunas com numeração individual

Equações individuais em múltiplas colunas com numeração individual

Tenho várias equações curtas e quero mostrá-las em duas colunas. Essencialmente:

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

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

Tentei primeiro o flalignambiente (prefiro isso align, mas não é necessário), mas não consegui numerar as equações da maneira que queria. O alignambiente trata cada linha como uma equação.

Exemplo:

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

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

Outra abordagem foi um multicolumnambiente simples, com quebra de coluna forçada:

\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}

No entanto, existem vários problemas:

  1. As equações parecem estar verticalmente mal colocadas
  2. A numeração é vertical e não horizontal (isso seria aceitável para mim)

Eu apreciaria qualquer ajuda sobre isso.

Responder1

Eu acho que você só deve numerar equações se pretende consultá-las mais tarde, então, alinhado com essa filosofia, por que não definir uma macro que insira o número da equação e também faça o rótulo:

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

Isso primeiro incrementa o equationcontador, imprime-o e depois há alguns truques para fazer o rótulo (os ambientes amsmath imprimem mensagens de erro quando vários rótulos aparecem em uma linha e precisamos evitar isso). Por causa disso @, isso precisa ser embrulhado dentro \makeatletter...\makeatother.

Possivelmente imprudentemente, incluí &'s dentro da macro e, portanto, assumi implicitamente que \Labelsempre será usado dentro de algo como um align*ambiente - observe que *você não deseja que o ambiente forneça rótulos adicionais. Por outro lado, foi necessário um pouco mais de esforço para impedir align*que ocorresse um erro (já que align*suprime os números das equações), portanto esta macro não funcionará fora de um ambiente de alinhamento ams.

Usar esta macro fornece:

insira a descrição da imagem aqui

Aqui está o código completo:

\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}

Como eu disse acima, provavelmente não é aconselhável colocar os dois &dentro da \Labelmacro, pois isso esconde parte da estrutura do align*ambiente, o que pode eventualmente confundir alguém.

Aliás, isso funciona igualmente bem com flalign*ambientes.

Responder2

Não consigo adicionar um comentário à resposta, então adiciono-o como uma resposta para qualquer pessoa que tenha um problema semelhante ao \Labelusar apenas a primeira letra.

Eu adicionei uma variável fictícia \tmpLabelusando primitivo \defpara que ela possa ser expandida adequadamente dentro de \ltx@label.

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

Tenho certeza de que existe uma solução mais elegante para isso, então comente ou edite esta resposta com uma solução adequada.

informação relacionada