方程式自定义水平对齐和每行编号

方程式自定义水平对齐和每行编号

据我所知,“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} 

相关内容