对齐环境中的虚假水平空间

对齐环境中的虚假水平空间

aligned如果你编译下面的内容,你会发现和 的方程式之间存在轻微的水平错位align。有办法避免这种情况吗?

\documentclass[fleqn]{book}
\usepackage{amsmath}
\begin{document}
text
\begin{equation}
\begin{aligned}
&A\\
&B
\end{aligned}
\end{equation}
text
\begin{align}
&A\\
&B
\end{align}
text
\end{document}

答案1

这很奇怪,但可以修复。alignedamsmath包裹由命令控制\start@aligned。在amsmath.sty,该命令的开头类似于:

\newcommand{\start@aligned}[2]{%
    \RIfM@\else
        \nonmatherr@{\begin{\@currenvir}}%
    \fi
    \savecolumn@ % Assumption: called inside a group
    \null\,%
    ...

问题是使用which在后面\null\,添加了一个(虚假的)\thinspace\null,从而导致错位。使用etoolbox包裹修复\patchcmd/修补此问题。尝试

...
\usepackage{etoolbox}
\makeatletter
\patchcmd{\start@aligned}{\null\,}{\null}{}{}%
\makeatother
...

在加载后的序言中amsmath

修正了 amsmath 的 aligned 和 align 环境

相关内容