我有一系列由我的命令生成的图形段落,并且希望在这些图形段落的上方和下方留出最小的垂直空间,但我不希望当其中两个段落彼此相连时空间加倍。
使用 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),用于表示章节条目(在book
和report
文档类别中)之间的间隙。例如,如果某些章节没有图片,您不希望 LoF 条目之间有额外的(或更大的)间隙。以下是命令的\chapter
摘录book.cls
:
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
这增加了10pt
。