有人知道在使用书籍文档类时如何更改章节标题(或目录标题等)与页面顶部之间的距离吗?我对其余的排版感到满意,所以我想用最少的干预来完成这项工作。
答案1
这titlesec
包裹提供
\titlespacing[*]{<command>}{<left>}{<before-sep>}{<after-sep>}[<right-sep>]
其中(根据包装文档)在分段命令 周围提供水平(via<left>
和<right-sep>
)和垂直(via<before-sep>
和)间距。带星号的版本会消除标题后段落的缩进。因此,例如,<after-sep>
<command>
*
\usepackage{titlesec}% http://ctan.org/pkg/titlesec
...
\titleformat{\chapter}{\Huge\bfseries}{\chaptername\ \thechapter}{0pt}{\vskip 20pt\raggedright}%
\titlespacing{\chapter}{0pt}{50pt}{<after-sep>}%
50pt
在章节标题前和章节标题后各留一个空格<after-sep>=40pt|50pt
。参数选择类似于Stefan 的回答。以下图表显示了40pt
左侧和100pt
右侧的差异:
根据包装文档,\part
间距\chapter
只能与\titleformat
命令一起指定。
答案2
由于最小干预意味着不改变类,也不添加诸如 之类的包titlesec
,因此您可以稍微调整原始定义。在文档序言中插入 的原始定义book.cls
:
\makeatletter
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\def\@makeschapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\makeatother
现在,看看这两行
\vspace*{50\p@}%
这些用于控制章节标题和顶部边距之间的空间。只需根据需要更改参数的值即可。这看起来像是很多行代码,但变化很小。