addvspace
我有一个新的环境,在开始和结束时用 定义。如果它被文本包围,则效果很好。现在,smallskipamount
如果这些环境直接相连,我希望它们之间的空间更小( )。换句话说,我希望环境之间的空间小于环境和文本之间的空间。如何实现?
\documentclass{article}
\usepackage{blindtext}
\newenvironment{env}
{\addvspace{\bigskipamount}\bfseries}
{\par\addvspace{\bigskipamount}}
\begin{document}
\blindtext
\begin{env}
Bla bla bla.
\end{env}
\blindtext
\begin{env}
Bla bla bla.
\end{env}
\begin{env}
Bla bla bla.
\end{env}
\blindtext
\end{document}
答案1
您可以使用非常具体的惩罚值将有关前一个环境结束的“消息”存储在主垂直列表中。您可以在环境开始时读取此值。
\newenvironment{env}
{\ifnum\lastpenalty=12345 \vskip-\bigskipamount \penalty0 \fi
\addvspace{\bigskipamount}\bfseries}
{\par\addvspace{\bigskipamount}\penalty12345 }
在进行 vskip 校正的情况下,将其\penalty0
插入到之前\addvspace
以便能够工作。\addvspace