重新定义对齐以默认包含 SwapAboveDisplaySkip

重新定义对齐以默认包含 SwapAboveDisplaySkip

我有几篇文档,希望减少其中多余的空格,并希望重新定义对齐以默认包含 mathtools 中的 SwapAboveDisplaySkip。由于我想在几乎所有地方使用它,所以我宁愿不必手动在每个地方都包含它。

目前我有以下内容,它可以完成我想要的工作,除了新的环境而不是对齐,这本质上只是这里的解决方案:定义自定义 align 和 align* 环境

\documentclass{article}
\usepackage{amsmath, mathtools}

\makeatletter
\newenvironment{salign}
{\par\align \SwapAboveDisplaySkip}
{\endalign}
\newenvironment{salign*}
{\par
    \start@align\@ne\st@rredtrue\m@ne}
{\endalign}
\makeatother
\begin{document}

\section{Foo}
\begin{salign}
    a^2+b^2 & = c^2
\end{salign}
\end{document}

我不想使用这个,因为我需要定义额外的文件以便我的编辑器的语法高亮显示有效,这意味着代码将不可移植。

用 renewenvironment 替换会创建一个递归循环,我也试图\let\oldalign\align修复这个问题,但无法编译。

答案1

您可以使用\AtBeginEnvironmentfrometoolbox\useshortskipfrom获得您想要的内容nccmath(在 之前加载mathtools):

\documentclass{article}
\usepackage{nccmath, mathtools}
\usepackage{etoolbox}
\AtBeginEnvironment{align}{\useshortskip}
\AtBeginEnvironment{align*}{\useshortskip}
\begin{document}

\section{Foo}

\noindent\rule\textwidth{0.6pt}
\begin{align*}
    a^2+b^2 & = c^2
\end{align*}
\noindent\rule\textwidth{0.6pt}
\begin{align}
    a^2+b^2 & = c^2
\end{align}
\noindent\rule\textwidth{0.6pt}

\end{document} 

在此处输入图片描述

笔记:当然,我\SwapAboveDisplaySkip首先尝试了相同的代码,但出于某种原因,我收到了有关 \noalign 放错位置的错误消息。然后我尝试了 \useshortskip,它基本上做了同样的事情,而且成功了。

相关内容