考虑一下这个MWE:
\documentclass[12pt%,oneside%
]{book}
\usepackage{setspace}
\setstretch{1.2}
\usepackage{lipsum}
\begin{document}
%\raggedbottom
\chapter{ABC}
See how this chapter heading is not in the same place as the following one? Try the oneside option of the book class, and the problem disappears!
\chapter{ABC}
\lipsum[1-3]
\end{document}
您会注意到第一章和第二章标题的位置不同。在阅读了一小章后从一个双页切换到另一个双页时,这非常烦人。
\raggedbottom
我怎样才能在不使用或的情况下解决这个问题oneside
?
答案1
这是book
类中的一个错误,呃,功能,其中\par
用于将“第 1 章”与标题分开,但未\parskip
设置为零。通常设置为\parskip
,0pt plus 1pt
以便 TeX 能够遵循\flushbottom
。
只需纠正不良行为:
\documentclass[
12pt,
openany,% just to be able to see both chapter heads side by side
]{book}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}
{\parindent}
{\parskip=\z@skip\parindent}
{}{}
\makeatother
\usepackage{setspace}
\setstretch{1.2}
\usepackage{lipsum}
\begin{document}
\chapter{ABC}
See how this chapter heading is not in the same place as the following one? Try the oneside
option of the book class, and the problem disappears!
\chapter{ABC}
\lipsum[1-3]
\end{document}
该设置\parskip=\z@skip
是局部的,因为 LaTeX 是分组打印章节标题的,所以它不会传播到文本排版。