方程式のカスタム水平配置と各行の番号付け

方程式のカスタム水平配置と各行の番号付け

私の知る限り、「align」は固定の水平配置(右-左-右-左-...)を持ち、この配置を変更することはできません。したがって、式をカスタムの水平配置(右-中央-中央-左など)で配置したい場合は、「equation」または「gather」、「array」、「arraycolsep」(「align」のように「=」の間隔を設定するため)、「displaystyle」(「frac」または「lim」を適切に処理するため)を使用できます。

例えば、

\newcommand{\argmax}{\operatornamewithlimits{arg\,max}}
...
\begin{gather}
\arraycolsep=1.4pt\def\arraystretch{2.2}
\begin{array}{rccl}
p_{\mathrm{MLE}}(x) & = & \displaystyle \max_{m} &P(X = x | \theta = m) \\
m_{\mathrm{MLE}}(x) & = & \displaystyle \argmax_{m} &P(X = x | \theta = m)
\end{array}
\end{gather}

以下を生成します。

ここに画像の説明を入力してください

ただし、これには番号ラベルが 1 つしかありません。行ごとに番号を分割することはできません。「align」を使用し、「\,」、「\phantom{}」、「\quad」、または「\qquad」を使用して手動で間隔を調整するのは、1 つの悪い選択かもしれません。

この場合、各行に異なる番号をラベル付けするにはどうすればよいでしょうか?

答え1

パッケージを使用しているのでamsmath、そのパッケージの\DeclareMathOperator*ディレクティブを使用して と という 2 つの新しい「演算子」を作成します。後者は、幅が「 」のボックスの中央に「max」という単語を表示します。\argmaxまた、の代わりに環境を、の代わりに環境を、の代わりに環境を使用します。\midmaxarg maxsplitarrayequationgather\mid\

各行に個別に番号を付ける必要がある場合は、ネストされた/環境alignの代わりに環境を使用します。equationsplit

ここに画像の説明を入力してください

\documentclass{article}
\usepackage{amsmath}
%% Create two new math opertors: \argmax and \midmax
\DeclareMathOperator*{\argmax}{arg\,max}
\newlength\mylen
\settowidth\mylen{arg\,max}
\DeclareMathOperator*{\midmax}{\parbox{\mylen}{\centering\upshape max}} % center-set "max"
\begin{document}

%% Single equation number for both rows:
\begin{equation}
\begin{split}
p_{\mathrm{MLE}}(x) &= \midmax_{m} P(X = x \mid \theta = m) \\
m_{\mathrm{MLE}}(x) &= \argmax_{m} P(X = x \mid \theta = m)
\end{split}
\end{equation}

% Separate equation numbers, one per row:
\begin{align}
p_{\mathrm{MLE}}(x) &= \midmax_{m} P(X = x \mid \theta = m) \\
m_{\mathrm{MLE}}(x) &= \argmax_{m} P(X = x \mid \theta = m)
\end{align}
\end{document} 

関連情報