我已经找到了解决方案,可以定义一个新环境,而无需在段落上方留出额外空间。但是为什么“普通”定义方法不起作用呢?
图片
平均能量损失
\documentclass[
fontsize=11pt,
DIV=12,
paper=a4,
]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
%%% the GOOD definition
\newenvironment{goodgood}{\ignorespaces\par\centering\begin{minipage}{0.8\linewidth}\small\sffamily}{\end{minipage}\par\ignorespacesafterend}
%%% the PROBLEMATIC definition
\newenvironment{asdf}{\begin{center}\begin{minipage}{0.8\linewidth}\small\sffamily}{\end{minipage}\end{center}}
\begin{document}
ABC
\begin{asdf}
bad vertical spacing
\end{asdf}
DEF
\begin{goodgood}
GOOD VERTICAL SPACING
\end{goodgood}
AAA
\end{document}
答案1
正如解释的那样何时应使用 \begin{center} 而不是 \centering? \begin{center}...\end{center}
通过列表()实现\trivlist
,并在居中文本之前和之后造成垂直空间。\centering
另一方面不会添加额外的垂直空间。
这意味着您的asdf
环境会获得显示环境的“通常”垂直间距,同时goodgood
仅获得移动到下一段时获得的间距(由于\par
)。
您不需要在:\ignorespaces
开头使用,正如 David Carlisle 在评论中指出的那样。由于环境以 结尾,因此我也不认为是必需的。goodgood
\ignorespaces\par
\par
\par
\ignorespacesafterend