像 css 一样合并连续跳过

像 css 一样合并连续跳过

我有一系列由我的命令生成的图形段落,并且希望在这些图形段落的上方和下方留出最小的垂直空间,但我不希望当其中两个段落彼此相连时空间加倍。

使用 css 时,我会使用以下代码,因为 CSS 会合并两个连续的边距并且只留下相当于最大边距的空间:

.myclass { margin-top: 1cm; margin-bottom: 1cm; }

我可以使用以下 LaTeX 代码实现我想要的结果(第一个 上方\mycommand、两个 之间\mycommand以及第二个 之后的空间相同\mycommand),但我想避免在第二个 之后手动添加的 \vskip 1cm \mycommand :

\documentclass{article}
\usepackage{lipsum}
\def\mycommand{
  \bgroup
  \vskip 1cm
  \rule{10cm}{2cm}
  \par
  \egroup
}
\begin{document}
\lipsum[1]
\mycommand
\mycommand
\vskip 1cm
\lipsum[2]
\lipsum[3]
\end{document}

手动添加空间

如果我选择像这样重新定义,那么第一个和第二个\mycommand之间的空间将是原来的两倍:\mycommand

\def\mycommand{
  \bgroup
  \vskip 1cm
  \rule{10cm}{2cm}
  \par
  \vskip 1cm
  \egroup
}

双倍行距

我曾尝试摆弄 TeX 的胶水(例如 1cm 减 1cm),但没有得到我想要的结果。

答案1

LaTeX 规定\addvspace{<len>}仅在需要时添加垂直空间,最多为<len>。这似乎就是你想要的:

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\def\mycommand{
  \bgroup
  \addvspace{1cm}
  \rule{10cm}{2cm}
  \par
  \addvspace{1cm}
  \egroup
}
\begin{document}
\lipsum[1]
\mycommand
\mycommand
\lipsum[2]
\lipsum[3]
\end{document}

一个常用的领域\addvspace是目录条目(如“图片列表”/LoF),用于表示章节条目(在bookreport文档类别中)之间的间隙。例如,如果某些章节没有图片,您不希望 LoF 条目之间有额外的(或更大的)间隙。以下是命令的\chapter摘录book.cls

\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%

这增加了10pt

相关内容