我见过很多类似的帖子\parskip 延伸超出预期里面使用了一些胶水。我想知道在所有情况下,\vspace
定义一个带有胶水的新命令来替换正常命令是否是个好主意。比如\vspace
\newcommand{\vspacewithglue}[3]{\vspace{#1\baselineskip plus #2\baselineskip minus #3\baselineskip }}
我试图说服自己,这样的命令对于简单的情况很有用,但没有成功。例如,我使用了
some test line ffppp \vspacewithglue{2}{0}{0}\\
some test line ffppp \vspacewithglue{2}{-1}{1}\\
some test line ffppp \vspacewithglue{2}{1}{1}\\
没有任何区别。所以我有点困惑。也许有一些“特殊”情况(如上面的帖子)确实需要这样的命令,但通常没有必要。\\[...ex]
如果真的需要,也许最好使用众所周知的命令并让 TeX 放置一些胶水。
我知道这个问题有点模糊,或者可能已经回答过了。欢迎在评论中编辑或提出建议。
答案1
像问题中那样,在段落的行之间设置可伸缩的粘连几乎从来都不是一个好主意。段落应设置为一致的块。根据文档设计,您可能希望或不希望显示单元(例如段落、列表等)之间的粘连是可伸缩的。特别是在两列模式下,段落之间的可伸缩粘连可能会造成干扰,因为两列中的段落空间会有所不同,并且文本的基线根本不会对齐。
此外,如果像您在段落中使用的问题一样\vspace
,效果定义明确但略显奇怪:空格不是在命令处添加的,\vspace
而是在段落分成几行之后,在添加的行之后添加的vspace
。
some test line ffppp \vspace{10pt}\\
是相同的
some test \vspace{10pt}line ffppp\\
如果像在文章文档类中常见的那样,\raggedbottom
则 fil
在页面末尾添加粘连,因为这是无限可拉伸的,所以添加的任何有限拉伸粘连都不会拉伸,并且只会使用自然长度组件。
在某些文档类别(包括默认文档类别)中,段落之间的一些小延伸有助于分页(LaTeX 将默认值设置\parskip
为0pt plus 1pt
),但通常这应该是文档范围的设置,而不是在每种情况下手动调整。
请注意,如果你在某些特殊情况下确实需要在换行符处进行拉伸,则不需要使用新命令\\[5pt plus 5pt]
答案2
您的命令按预期工作,但正如 David 已经写过的,在段落内使用这种可伸缩空间是一个非常糟糕的主意。
\documentclass[12pt]{book}
\usepackage{lipsum}
\newcommand{\vspacewithglue}[3]{\vspace{#1\baselineskip plus #2\baselineskip minus #3\baselineskip }}
\textheight=10cm
\begin{document}
xxxxx
some test line ffppp \\
some test line ffppp \vspacewithglue{0}{1}{1}\\
some test line ffppp \\
xxxxx
\pagebreak %to force the page to stretch
xxxx
\end{document}