方程式自訂水平對齊和每行編號

方程式自訂水平對齊和每行編號

據我所知,「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}

產生如下。

在此輸入影像描述

然而,它只有一個編號標籤。它無法拆分每一行的數字。使用“對齊”並使用“\,”、“\phantom{}”、“\quad”或“\qquad”手動調整間距可能是一種糟糕的選擇。

對於這種情況,我們如何為每一行標記不同的數字?

答案1

由於您正在使用該amsmath包,我將使用該包的\DeclareMathOperator*指令創建兩個新的“運算符”:\argmax\midmax,其中後者顯示單字“max”,該單字居中於寬度等於“ ”的框中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} 

相關內容