我正在使用该titlesec
包重新定义章节格式,并且我注意到在添加导致分页符的部分时存在间距问题。本质上,我希望标题显示在两条水平线之间。但是,如下面的 MWE 所示,如果我不在调用命令\newpage
之前手动添加右对齐,第一行和标题之间会有一个额外的间隙\section
。
这是一个有效的例子:
\documentclass[11pt]{book}
\usepackage{titlesec}
\titleformat
{\chapter}
[display]
{\sffamily\LARGE}
{\filcenter\rmfamily\bfseries\fontsize{4cm}{1cm}\selectfont\thechapter}
{6ex}
{\titlerule\vspace{1.5ex}\filcenter}
[\vspace{1.5ex}\titlerule]
\usepackage{lmodern}
\begin{document}
\chapter{Introduction}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce gravida nunc et
posuere condimentum. Nullam pretium, enim a iaculis vehicula, mauris dui
interdum arcu, ac egestas mi diam vitae nibh. Etiam at scelerisque ex, a
fringilla augue. Fusce leo diam, bibendum ut aliquam et, gravida at justo. Nam
rutrum augue in elit congue, vehicula tristique sem malesuada. Nulla porttitor
massa eget mollis accumsan. Aenean eu dolor ac ex congue auctor. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac turpis
egestas. Sed et felis accumsan, congue magna eu, placerat quam. Aenean lobortis
maximus facilisis. Sed tristique vestibulum sodales. Suspendisse potenti. Nunc
eget nibh a libero dictum eleifend finibus at est. In hac habitasse platea
dictumst.
Pellentesque et tempor nisl. Proin aliquet tristique elit vitae lacinia.
Praesent accumsan nisl eu sapien sodales, ut hendrerit purus interdum. Praesent
eget viverra magna. Praesent non tincidunt neque. Vivamus fermentum maximus
porttitor. Integer vitae lacus dapibus, vulputate purus non, lacinia orci.
Aenean sodales, massa ut tincidunt iaculis, nulla velit mattis nibh, in aliquam
lectus lectus quis sapien.
% \newpage % Commenting in this line fixes the issue.
\section{Overview}
\end{document}
我应该提到,编译器确实会抱怨 vbox 未满,但如果我手动中断页面,这个问题就会消失。这个问题可以自动修复吗?还是我必须手动修复这些问题?
答案1
在twoside
-模式下(这是 的默认模式book
),LaTeX 会尝试在相同的垂直位置结束每一页。这对于避免“跳过最后一行”很有用。
由于章节标题定义的高度不是正常行高的一个整数倍,因此 LaTeX 只能通过扩展现有的垂直空间才能达到此值。这会导致行和标题文本之间出现额外的空间。
正如 Bernhard 在评论中提到的,您可以使用 来切换此功能\raggedbottom
。但是,这不仅会切换带有章节的页面的垂直刷新,还会切换所有页面的垂直刷新。例如,参见\flushbottom
对比\raggedbottom
了解更多信息。还有一个问题如何将范围限定\raggedbottom
在一个页面. 还有一个问题为什么书籍通常使用\flushbottom
而不是\raggedbottom
。
那么,还能做什么呢?您可以允许 LaTeX 收缩或拉伸特定的垂直空间,方法是添加胶水。垂直距离(TeX 称之为跳跃)可以包含由plus
-值定义的允许拉伸的附加信息以及由minus
-值定义的收缩的附加信息。请参阅“什么是胶水拉伸?“ 了解更多信息。
在你的情况下,你可以添加这样的胶水,例如,在文本之前的标题之后:
\documentclass[11pt]{book}
\usepackage{titlesec}
\titleformat
{\chapter}
[display]
{\sffamily\LARGE}
{\filcenter\rmfamily\bfseries\fontsize{4cm}{1cm}\selectfont\thechapter}
{6ex}
{\titlerule\vspace{1.5ex}\filcenter}
[\vspace{1.5ex}\titlerule\vspace{0pt plus .5\baselineskip minus .5\baselineskip}]
\usepackage{lmodern}
\begin{document}
\chapter{Introduction}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce gravida nunc et
posuere condimentum. Nullam pretium, enim a iaculis vehicula, mauris dui
interdum arcu, ac egestas mi diam vitae nibh. Etiam at scelerisque ex, a
fringilla augue. Fusce leo diam, bibendum ut aliquam et, gravida at justo. Nam
rutrum augue in elit congue, vehicula tristique sem malesuada. Nulla porttitor
massa eget mollis accumsan. Aenean eu dolor ac ex congue auctor. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac turpis
egestas. Sed et felis accumsan, congue magna eu, placerat quam. Aenean lobortis
maximus facilisis. Sed tristique vestibulum sodales. Suspendisse potenti. Nunc
eget nibh a libero dictum eleifend finibus at est. In hac habitasse platea
dictumst.
Pellentesque et tempor nisl. Proin aliquet tristique elit vitae lacinia.
Praesent accumsan nisl eu sapien sodales, ut hendrerit purus interdum. Praesent
eget viverra magna. Praesent non tincidunt neque. Vivamus fermentum maximus
porttitor. Integer vitae lacus dapibus, vulputate purus non, lacinia orci.
Aenean sodales, massa ut tincidunt iaculis, nulla velit mattis nibh, in aliquam
lectus lectus quis sapien.
\section{Overview}
\end{document}
这样,在标题后添加了所需的额外空间: