複数の列に個別の番号をつけて個別の方程式を表示する

複数の列に個別の番号をつけて個別の方程式を表示する

短い方程式がいくつかあるので、それを 2 つの列に表示したいと思います。基本的には次のようになります。

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

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

最初にflalign環境を試しましたが ( よりもこちらの方が好みですalignが、必須ではありません)、方程式に希望どおりに番号を付けることができませんでした。align環境では、すべての行が 1 つの方程式として扱われます。

例:

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

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

もう 1 つのアプローチは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カウンターを増分し、それを出力し、次にラベルを作成するためにいくつかのトリックを実行します (複数のラベルが 1 行に表示された場合は、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}

上で述べたように、マクロ&内に 2 つの を配置するのはおそらく賢明ではありません。環境\Label内の構造の一部が隠れてしまいalign*、最終的に誰かを混乱させる可能性があるからです。

ちなみに、これはflalign*環境でも同様に機能します。

答え2

回答にコメントを追加できないため、\Label最初の文字のみを使用して同様の問題を抱えている他の人への回答として追加します。

\tmpLabelプリミティブを使用してダミー変数を追加したので\def、内部で適切に展開できます\ltx@label

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

これにはもっとエレガントな解決策があるはずですので、適切な解決策をコメントまたは編集してこの回答を投稿してください。

関連情報