在新页面上开始章节(第一页除外)

在新页面上开始章节(第一页除外)

所以,我见过,但我需要部分仅在第一页之后开始新的一页

我尝试了很多不同的方法,我想我可以在某个地方创建一个 if 语句,如果部分编号超过 2,它就会开始添加\clearpage。但理论上,我需要这个 if 语句在创建每个新部分时运行

我的主要尝试是在我已经存在的命令中执行此操作\titleformat,因为我认为它将在每个新部分运行if,它看起来像这样:

\newcommand{\sectionbreak}{} % create it empty at first to modify later
\titleformat{\section}
{\large\bfseries}
{\thesection}
{0pt}
{
\ifnum\value{section} > 1
{\renewcommand{\sectionbreak}{\clearpage}}
\else{\renewcommand{\sectionbreak}{}}
\fi
}
{}

我认为它会在每个部分之后运行if,因为在另一个文档中,我还有另一个\ifnum与此类似的语句\hspace,如果部分号大于 10,则分隔符中的值会变小

book但是,这不管用,我不知道还能尝试什么。那么,有什么解决办法吗?这将在和 documentclass 中都用到article。所以,class 不太相关

答案1

只需\sectionbreak正确定义:

\documentclass{book}

\usepackage{titlesec}

\titleformat{\section}
  {\large\bfseries}
  {\thesection}
  {1em}
  {}
\newcommand{\sectionbreak}{\ifnum\value{section}>0 \clearpage\fi}

\begin{document}

\tableofcontents

\chapter{One:}

\section{on same page}

Some text

\section{On new page}

Some text

\section{On new page}

Some text

\chapter{Two:}

\section{on same page}

Some text

\section{On new page}

Some text

\section{On new page}

Some text

\end{document}

在此处输入图片描述

答案2

该解决方案适应了您已经很有前景的方法\ifnum

但是,我发现(在我制作的 MWE 中),将条件代码放在 的第 5 个参数中\titleformat,就像您所做的那样,会弄乱节标题。也就是说,所需的分页符被放置在之间章节编号和标题。第五个参数正式before-code执行“标题正文之前”但显然章节编号。

在这些情况下,我喜欢的方法是使用\pretoetoolbox,因为条件语句 then 会变为有效就在之前全部的的运作\section

\usepackage{etoolbox}
\preto\section{\ifnum\value{section}=0
\else\clearpage\fi}

假设您正在处理的文档类除了章节外还有章节(例如book),并且“第一”节指的是第一节在每一章中,这将是一个 MWE:

\documentclass{book}

\usepackage{etoolbox}

\usepackage{titlesec}

\titleformat{\section}
{\large\bfseries}
{\thesection}
{0pt}
{}
{}

\preto\section{\ifnum\value{section}=0
\else\clearpage\fi}

\begin{document}
\tableofcontents

\chapter{One:}

\section{on same page}

\section{On new page}

\section{On new page}

\chapter{Two:}

\section{on same page}

\section{On new page}

\section{On new page}

\end{document}

带页码的目录

相关内容