我有一系列方程式,我希望它们居中并与方程式的开头对齐,并以等号对齐。这是我到目前为止尝试过的:
\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
一种选择是将方程式的每个l
eft-h
和s
ides 放在大小相同的框中,并且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}