我看過很多類似這樣的帖子\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
你的命令按預期工作,但正如大衛已經寫的那樣,在段落內使用這種可拉伸的空間是一個非常糟糕的主意。
\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}