书籍文档类中章节标题和顶部之间的垂直间距

书籍文档类中章节标题和顶部之间的垂直间距

有人知道在使用书籍文档类时如何更改章节标题(或目录标题等)与页面顶部之间的距离吗?我对其余的排版感到满意,所以我想用最少的干预来完成这项工作。

答案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@}%

这些用于控制章节标题和顶部边距之间的空间。只需根据需要更改参数的值即可。这看起来像是很多行代码,但变化很小。

相关内容