将方程式对齐,使其从同一位置开始

将方程式对齐,使其从同一位置开始

我有一系列方程式,我希望它们居中并与方程式的开头对齐,并以等号对齐。这是我到目前为止尝试过的:

\begin{align*}
\mathcal{L}_{a2c} &= \mathbb{E}_{s_t,a_t\sim\pi_{\theta}}[\mathcal{L}_{a2c_{policy}} + \frac{1}{2}\mathcal{L}_{a2c_{value}}]\\
\mathcal{L}_{a2c_{policy}} &= -\log{\pi_{\theta}(a_t|s_t)}(V_t^n-V_\theta(s_t)) - \alpha\mathcal{H}_t^{\pi_\theta}\\
\mathcal{L}_{a2c_{value}} &= {(V_t^n-V_\theta(s_t))}^2 
\end{align*}

但不幸的是,我得到:

在此处输入图片描述

如图所示,方程式以“=”对齐,但起始位置不同。

答案1

一种选择是将方程式的每个left-hsides 放在大小相同的框中,并且eft.<align>的每个元素(如下所定义)将有助于实现这一点:l\eqmathbox[LHS][l]{<lhs>}

在此处输入图片描述

\documentclass{article}

\usepackage{eqparbox,xparse,amsmath,amsfonts}

% https://tex.stackexchange.com/a/34412/5764
\makeatletter
% \eqmathbox[<tag>][<align>]{<math>}
\NewDocumentCommand{\eqmathbox}{o O{c} m}{%
  \IfValueTF{#1}
    {\def\eqmathbox@##1##2{\eqmakebox[#1][#2]{$##1##2$}}}
    {\def\eqmathbox@##1##2{\eqmakebox{$##1##2$}}}
  \mathpalette\eqmathbox@{#3}
}
\makeatother

\begin{document}

\begin{align*}
  \eqmathbox[LHS][l]{\mathcal{L}_{a2c}} &= 
    \mathbb{E}_{s_t, a_t \sim \pi_{\theta}}[\mathcal{L}_{a2c_{\text{policy}}} + \tfrac{1}{2}\mathcal{L}_{a2c_{\text{value}}}] \\
  \eqmathbox[LHS][l]{\mathcal{L}_{a2c_{\text{policy}}}} &= 
    -\log{\pi_{\theta}(a_t|s_t)}(V_t^n - V_\theta(s_t)) - \alpha\mathcal{H}_t^{\pi_\theta} \\
  \eqmathbox[LHS][l]{\mathcal{L}_{a2c_{\text{value}}}} &= {(V_t^n - V_\theta(s_t))}^2 
\end{align*}

\end{document}

答案2

一个解决方案alignat,以及一些改进(特别是,在我看来,中等大小的分数系数看起来更好):

\documentclass[11pt]{book}
\usepackage{mathtools, amssymb, nccmath}

\begin{document}

\begin{alignat*}{2}
 & \mathcal{L}_{a2c} & &= \mathbb{E}_{s_t,a_t\sim\pi_{\theta}}\Bigl[\mathcal{L}_{a2c_\text{policy}} + \mfrac{1}{2}\mathcal{L}_{a2c_\text{value}}\Bigr]\\
 & \mathcal{L}_{a2c_\text{policy}} & &= -\log{\pi_{\theta}(a_t\mid s_t)}\bigl(V_t^n-V_\theta(s_t)\bigr) - \alpha\mathcal{H}_t^{\pi_\theta}\\
 & \mathcal{L}_{a2c_\text{value}} & &= \bigl(V_t^n-V_\theta(s_t)\bigr)^2
\end{alignat*}

\end{document} 

在此处输入图片描述

相关内容