特别是在投影仪演示中,我使用自定义环境来更改公式周围的垂直空间。代码是:
\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}
这个定义导致环境后面的空格和换行符将被忽略。