据我所知,“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}
下面产生。
但是,它只有一个编号标签。它无法为每行拆分数字。使用“align”并使用“\,”、“\phantom{}”、“\quad”或“\qquad”手动调整间距可能是一个糟糕的选择。
对于这种情况,我们如何为每一行标记不同的数字?
答案1
由于您正在使用amsmath
包,我将使用该包的\DeclareMathOperator*
指令来创建两个新的“操作符”:\argmax
和\midmax
,其中后者在宽度等于“ arg max
”的框中居中显示单词“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}