
私の知る限り、「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
また、の代わりに環境を、の代わりに環境を、の代わりに環境を使用します。\midmax
arg max
split
array
equation
gather
\mid
\
各行に個別に番号を付ける必要がある場合は、ネストされた/環境align
の代わりに環境を使用します。equation
split
\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}