改变公式周围垂直空间的环境

改变公式周围垂直空间的环境

特别是在投影仪演示中,我使用自定义环境来更改公式周围的垂直空间。代码是:

\newenvironment{shrinkeq}[1]
{ \bgroup
  \addtolength\abovedisplayshortskip{#1}
  \addtolength\abovedisplayskip{#1}
  \addtolength\belowdisplayshortskip{#1}
  \addtolength\belowdisplayskip{#1}}
{\egroup}

但是,公式后面的文本前面添加了不必要的水平空格。例如,代码

Text before text before text before\dots
\[ \int_{a_1}^{b_1}f(x)dx+\int_{a_2}^{b_2}g(x)dx+\int_{a_3}^{b_3}h(x)dx=0 \]
Text after text after text after\dots
\bigskip

Text before text before text before\dots
\begin{shrinkeq}{-2ex}
\[ \int_{a_1}^{b_1}f(x)dx+\int_{a_2}^{b_2}g(x)dx+\int_{a_3}^{b_3}h(x)dx=0 \]
\end{shrinkeq}
Text after text after text after\dots

生产

替代文本

\null可以通过添加一个后缀来解决该问题\end{shrinkeq},但我不明白为什么这样做有效。

有一个更好的方法吗?

答案1

\end{shrinkeq}换行符会造成空白,就像空格一样。请注意和以下文本之间的换行符。

一个本地解决方案是注释掉换行符:\end{shrinkeq}%

一个全局解决方案是添加\ignorespacesafterend到您的环境定义的末尾:

\newenvironment{shrinkeq}[1]
{ \bgroup
  \addtolength\abovedisplayshortskip{#1}
  \addtolength\abovedisplayskip{#1}
  \addtolength\belowdisplayshortskip{#1}
  \addtolength\belowdisplayskip{#1}}
{\egroup\ignorespacesafterend}

这个定义导致环境后面的空格和换行符将被忽略。

相关内容