我有一个双列环境\baselinestretch
,并且想\vspace
在每个段落前插入一个带粘连的行。但是,不是将垂直间距调整到列的高度,而是将列延伸到底部。如果两列中只有一列有段落分隔符,则会导致一列比另一列长。
仅当行距已更改时才会发生此问题,无论是通过更改\baselinestretch
还是通过\linespread
。使用multicol
包时会发生这种情况,但使用twocolumn
documentclass 选项时也会发生这种情况。据我所知,它也与 所选择的值无关\vspace
。
由于该项目(字典的部分内容已经印刷完成)的格式规范非常严格,因此更改格式是不可能的。
这是一个最简单的例子:
\documentclass[a4paper,10pt]{book}
\usepackage{multicol}
\usepackage{lipsum}
\renewcommand{\baselinestretch}{1.05}
\newcommand{\spc}{\vspace{12pt plus 12pt}}
\begin{document}
\begin{multicols}{2}
\lipsum*[1-6]
\par\spc
\lipsum*[7-12]
\par\spc
\lipsum*[13-14]
\par\spc
\lipsum*[15-20]
\par\spc
\lipsum*[21-25]
\end{multicols}
\end{document}
结果中我们可以看到,每个带有 的列都\par\vspace
被延伸了,导致第 2 页和第 4 页的底部不平整。这里以第二页为例:
我希望有人能告诉我这里缺少什么。
答案1
并不是说左列被延长了,右列就一定短了,因为只能容纳那么多行,再多一行就太长了。相反,左列的高度是指定的,因为段落空间(应该通过设置来指定,\parskip
而不是在每次换行时添加\vspace
)会延伸到最后一行指定的高度\textheight
。
你应该总是让 textheight 成为(新的)baselineskip+topskip 的倍数
\documentclass[a4paper,10pt]{book}
\usepackage{multicol}
\usepackage{lipsum}
\renewcommand{\baselinestretch}{1.05}\normalfont
\setlength\textheight{\dimexpr\topskip+47\baselineskip}
\setlength\parskip{12pt plus 12pt}
\begin{document}
\begin{multicols}{2}
\lipsum*[1-6]
\lipsum*[7-12]
\lipsum*[13-14]
\lipsum*[15-20]
\lipsum*[21-25]
\end{multicols}
\end{document}