是否有一个方便的钩子来修补所有 AMS 显示数学环境?

是否有一个方便的钩子来修补所有 AMS 显示数学环境?

如果我想修补所有amsmath显示数学环境以将其包装在另一个环境中(例如equation例如这个答案调整线宽),有没有一种方便的方法可以一次性修补所有这些环境?也就是说,这些环境中是否有任何通用钩子可用于此目的?还是我必须单独修补所有这些环境?

在下面的 MWE 中,我只修补了equation,但希望所有其他的也以相同的方式进行修补。

\documentclass{article}

\usepackage[
  showframe,
  includemp,
  margin=2cm,
  marginparwidth=5cm,
  marginparsep=.5cm,
  ]{geometry} % I know, terrible. It's just for illustration!
\usepackage{lipsum}

\usepackage{etoolbox}
\usepackage{amsmath}
\usepackage[strict]{changepage}

\newenvironment{fullwidth}
  {\begin{adjustwidth*}{}{\dimexpr-\marginparwidth-\marginparsep\relax}}
  {\end{adjustwidth*}}
\preto\equation{\fullwidth}
\appto\endequation{\endfullwidth}

\begin{document}

\def\longeq{\sum_{i=1}^{20} i = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20}
\def\alongeq{\sum_{i=1}^{20} i &= 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20}

\begin{equation}
  \longeq
\end{equation}

\begin{equation*}
  \longeq
\end{equation*}

\begin{multline}
  \longeq
\end{multline}

\begin{multline*}
  \longeq
\end{multline*}

\begin{gather}
  \longeq
\end{gather}

\begin{gather*}
  \longeq
\end{gather*}

\begin{align}
  \alongeq
\end{align}

\begin{align*}
  \alongeq
\end{align*}

\begin{flalign}
  \alongeq
\end{flalign}

\begin{flalign*}
  \alongeq
\end{flalign*}

\begin{alignat}{1}
  \alongeq
\end{alignat}

\begin{alignat*}{1}
  \alongeq
\end{alignat*}

\end{document}

相关内容