当 \[ 和 \] 被重新定义为 \begin{equation*} 和 \end{equation*} 时,会出现额外的垂直空格(涉及 ntheorem)

当 \[ 和 \] 被重新定义为 \begin{equation*} 和 \end{equation*} 时,会出现额外的垂直空格(涉及 ntheorem)

这个答案,建议进行如下重新定义:

\DeclareRobustCommand{\[}{\begin{equation*}}
\DeclareRobustCommand{\]}{\end{equation*}}

但是,正如下面的 MCE 所指出的,这会导致额外的垂直空间。

您知道如何去掉这些多余的空格吗?

\documentclass[fleqn]{article}
\usepackage[step=1cm]{pagegrid}
\usepackage[margin=0pt,papersize=2.5cm]{geometry}
%
\usepackage{amsmath}
\usepackage[amsmath,fleqn,thmmarks]{ntheorem}
%
\newcommand{\test}{%
  \noindent%
  Foo
  \[
    a=a
  \]
  Bar
}
%
\begin{document}
\test
%
\DeclareRobustCommand{\[}{\begin{equation*}}%
\DeclareRobustCommand{\]}{\end{equation*}}%
\newpage
\test
\end{document}

在此处输入图片描述 在此处输入图片描述

答案1

在第一种情况下,前后间距由\topsep(从 a 开始trivlist)提供,而在 amsmath 情况下,间距由\abovedisplayskip和提供\belowdisplayskip。将最后两个设置为\topsep可获得相同的间距:

示例输出

\documentclass[fleqn]{article}
\usepackage[step=1cm]{pagegrid}
\usepackage[margin=0pt,papersize=2.5cm]{geometry}
%
\usepackage{amsmath}
\usepackage[amsmath,fleqn,thmmarks]{ntheorem}
%
\newcommand{\test}{%
  \noindent%
  Foo
  \[
    a=a
  \]
  Bar
}
%
\begin{document}
\test
%
\DeclareRobustCommand{\[}{\begin{equation*}}%
\DeclareRobustCommand{\]}{\end{equation*}}%
\setlength{\abovedisplayskip}{\topsep}%
\setlength{\belowdisplayskip}{\topsep}%
\newpage
\test
\end{document}

相关内容