我正在使用 scrbook 类,它默认使用 flushbottom 段落。
通常这是可以的,因为当页面底部对齐时,书看起来会更好。但是当开始新的部分时,会在前一页中插入大量空间以对齐页面底部。
例子:
\documentclass[draft=true,fontsize=10pt,pagesize,paper=148mm:215mm]{scrbook}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\chapter{Chapter 1}
\section{Section 1}
\blindtext[1]
\blindtext[4]
\blindtext[1]
\blindtext[2]
\section{Section 2}
\blindtext[4]
\end{document}
\flushbottom
有没有办法默认使用段落,但\raggedbottom
在新的部分之前的页面上?
答案1
如果您有个别部分导致问题,您可以\clearpage
在该部分之前发出。否则,您可以尝试使用类似纯 TeX\filbreak
宏的东西。如果剩余的内容不足,下面的代码会将部分标题推到下一页,并使上一页基本上底部不平整,然后关闭,以便页面底部3cm
最多留有间隙。3cm
这里第 2 部分会产生一个新页面:
但第 3 部分仍按常规放置:
\documentclass[draft=true,fontsize=10pt,pagesize,paper=148mm:215mm]{scrbook}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{etoolbox}
\newskip\mfilskip
\mfilskip=0pt plus 3cm\relax
\newcommand{\mfilbreak}{\vspace{\mfilskip}\penalty -200%
\ifdim\lastskip<\mfilskip\vspace{-\lastskip}\else\vspace{-\mfilskip}\fi}
\pretocmd{\section}{\mfilbreak}{}{}
\begin{document}
\chapter{Chapter 1}
\section{Section 1}
\blindtext[1]
\blindtext[4]
\blindtext[1]
\blindtext[2]
\section{Section 2}
\blindtext[4]
\section{Section 3}
\blindtext[5]
\end{document}