标题前的 Raggedbottom

标题前的 Raggedbottom

我正在使用 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 部分会产生一个新页面:

第 2 节之前

第 2 部分

但第 3 部分仍按常规放置:

第 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}

相关内容