如何删除报告/书中 \part 后的分页符

如何删除报告/书中 \part 后的分页符

我尝试过查看,但找不到明确的解决方案。

我有一个文档,其中使用reportwith multiple \chapters in multiple \parts,如下所示:

\part{foo}
\chapter{uno}
\chapter{dos}
\part{bar}...

这样一来,整个页面就是“第一部分 Uno”。我想删除分页符,让部分 foo 和章节 uno 都位于同一页上,如下所示:

Part I foo
Chapter 1 Uno

我怎么做?

答案1

随着titlesec包中,你可以定义一个没有分页符的“标题类”:

\titleclass{\part}{top}
\titleclass{\chapter}{straight}

标题类别包括:

  • page:像书本分页一样的单页
  • top:开始页面并将标题置于顶部
  • straight:文本中的标题,例如\section

完整示例:

\documentclass{book}
\usepackage{titlesec}
\titleclass{\part}{top}
\titleformat{\part}[display]
  {\normalfont\huge\bfseries}{\centering\partname\ \thepart}{20pt}{\Huge\centering}
\titlespacing*{\part}{0pt}{50pt}{40pt}
\titleclass{\chapter}{straight}
\titleformat{\chapter}[display]
  {\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
\begin{document}
\part{foo}
\chapter{uno}
\end{document}

部分和章节标题

答案2

为了实现你的目标没有加载诸如 之类的包时titlesec,必须 (i) 修改命令\@endpart,并且 (ii) 更改命令,\chapter因为它也会默认插入分页符。虽然您没有明确指定这一点,但我进一步假设您 (iii) 想要将“第 xx 部分”材料放在顶部页面顶部,而不是中间。顺便说一句,我假设您的文档设置为“单列”模式,而不是“双列”模式。处理双列情况并不困难,但它确实增加了一些开销,我认为这里不需要。

以下代码显示了如何针对以下情况执行此操作报告文档类。请注意,我创建了一个名为的命令\nonewpagechapter,并保留了标准\chapter命令不变。这样,您仍然可以\chapter在所有这些场合使用该命令希望章节从新的一页开始。当然,如果\nonewpagechapter太冗长,不符合你的口味,你可以给它一个更简洁的名字,例如\nchapter...

\documentclass{report}   
\usepackage{etoolbox}

\makeatletter
% First, modify the \@endpart macro.
\def\@endpart{} 

% Next, copy the \chapter macro to \nonewpagechapter, and ...
% ... suppress page-breaking instructions in the modified macro
\let\nonewpagechapter\chapter 
\patchcmd\nonewpagechapter{\if@openright\cleardoublepage\else\clearpage\fi}{}{}{}

% Third, suppress vertical whitespace before "Part xx" material
\patchcmd{\part}{\null\vfil}{}{}{}

\makeatother

\begin{document}
\part{foo}
\nonewpagechapter{Uno} % starts on same page as "Part I ... foo" header
\chapter{Dos}          % starts on a new page
\part{bar}             % starts on a new page
\nonewpagechapter{Tres}% starts on same page as "Part II ... bar" header
\end{document}

附录如果有人使用记事本(Koma-Script 书)文档类,而不是报告文档类,他/她必须替换命令

\patchcmd{\part}{\null\vfil}{}{}{}

\patchcmd{\part}{\partheadstartvskip}{}{}{}

以抑制在“Part xx”行上方插入额外的空格。其他补丁命令无需修改即可使用。

相关内容