如何自动收缩对齐块中的线以适合水平盒子?

如何自动收缩对齐块中的线以适合水平盒子?

我写了以下乳胶


\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{amsmath}
\renewcommand{\P}{\mathcal{P}}
\date{May 2019}

\begin{document}

\begin{align*}
    &H_{n + 1}= \\
    &-\sum_{x_{n + 1}} \P(x_{n + 1} | x_n) \sum_{x_1, x_2, \dots, x_{n}} \P(x_1, x_2, \dots, x_n) \log(\P(x_1, x_2, \dots, x_n)\P(x_{n + 1} | x_n)) =\\
    &-\sum_{x_{n + 1}} \P(x_{n + 1} | x_n) \sum_{x_1, x_2, \dots, x_{n}} \P(x_1, x_2, \dots, x_n) (\log(\P(x_1, x_2, \dots, x_n)) + \log(\P(x_{n + 1} | x_n))) =\\
    &-\sum_{x_{n + 1}} \P(x_{n + 1} | x_n) H_n - \sum_{x_1, x_2, \dots, x_{n + 1}} \P(x_1, x_2, \dots, x_{n + 1}) \log(\P(x_{n + 1} | x_n))) =
\end{align*}

\end{document}

这给了我一个水平盒子过满的警告。有没有办法自动缩小每一行,使其适合水平盒子?

注意:我愿意接受一个告诉我如何缩小对齐内容中的所有内容的解决方案,但我更喜欢一个可以自动动态缩小每一行的答案,并且我很乐意接受一个可以解释如何同时完成这两件事的答案。

答案1

最简单的解决方案是加载geometry包,获得更合理的边距并使用命令\smashoperatormathtools在这种情况下无需加载 amsmath)。如果没有几何图形,您将不得不打破第二行,例如multlined

\documentclass{article}
\usepackage{showframe}
\renewcommand*{\ShowFrameLinethickness}{0.3pt}
\usepackage[utf8]{inputenc}%
\usepackage{mathtools}

\renewcommand{\P}{\mathcal{P}}
\date{May 2019}

\begin{document}

\begin{align*}
    &H_{n + 1}= \\
    &-\sum_{x_{n + 1}} \P(x_{n + 1}\mid x_n) \smashoperator{\sum_{x_1, x_2, \dots, x_{n}}} \P(x_1, x_2, \dots, x_n) \log(\P(x_1, x_2, \dots, x_n)\P(x_{n + 1} \mid x_n)) =\\
    &-\begin{multlined}\smash[b]{\sum_{x_{n + 1}}} \P(x_{n + 1}\mid x_n) \smash[b]{\smashoperator{\sum_{x_1, x_2, \dots, x_{n}}}} \P(x_1, x_2, \dots, x_n)\bigl (\log(\P(x_1, x_2, \dots, x_n)) \\+ \log(\P(x_{n + 1}\mid x_n))\bigr) =
    \end{multlined}\\
    &-\sum_{x_{n + 1}} \P(x_{n + 1}\mid x_n) H_n -\smashoperator{ \sum_{x_1, x_2, \dots, x_{n + 1}}} \P(x_1, x_2, \dots, x_{n + 1}) \log(\P(x_{n + 1}\mid x_n))) =
\end{align*}

\end{document}

不相关:我用|概率替换了出现的概率,以\mid获得更好的水平间距。

在此处输入图片描述

相关内容