列表后垂直空间过大

列表后垂直空间过大

我创建了一个宏,\piece将较长的部分组织成较小的、编号的部分。(我在一组讲义中使用了这个宏,我试图在每个部分中介绍一个概念。)这段代码基本上是从 中偷来的\@startsection,到目前为止运行良好,但现在我在与包相关的方面遇到了问题。当我在 之后立即listings开始 时,列表和新部分之间的垂直空间太大。\piecelstlisting

之前已经讨论过与垂直空间相关的类似问题lstlisting,但我无法从答案中得出我的问题的答案:

我怎样才能使代码\piece更加健壮,以便这个问题消失?


这是一个说明该问题的最小工作示例:

\documentclass{minimal}

\usepackage{listings}

\makeatletter
\newcounter{piece}
\def\thepiece{\arabic{piece}}
\newcommand*{\piece}{%
  \if@noskipsec \leavevmode \fi
  \par
  \@afterindentfalse
  \if@nobreak
    \everypar{}%
  \else
    \addvspace\belowdisplayskip
  \fi
  \refstepcounter{piece}%
  \@afterheading
  \makebox[0pt][r]{\thepiece\quad}%
}
\makeatother

\begin{document}

\piece Piece 1

\piece Piece 2

\begin{lstlisting}
Listing
\end{lstlisting}

\piece Piece 3

\end{document}

最小示例的输出:

MWE 的输出

相关内容