用 titlesec 定义的标题格式:如何在 \chapter 之外使用它?

用 titlesec 定义的标题格式:如何在 \chapter 之外使用它?

我用它titlesec来定义章节标题的格式,例如:

\titleformat{\chapter}[hang]{\Large\bfseries}{}{0em}{\LARGE\bfseries}

我希望能够\LARGE\bfseries为普通文本的一部分指定相同的格式(即提取位)。

动机:我正在排版一本选集,其中一位作者偶尔会在图片旁边、表格中、段落之间等处开始新的一章。因此,虽然我的大多数章节都是从新页面开始的,而且我不想更改默认设置,但我需要在几个地方“伪造”一个新章节。我的想法是使用 定义的字体进行设置\titleformat,必要时增加计数器(这本书没有编号章节,所以可能没有),并使用 添加到内容中\addcontentsline

答案1

这是一个简单的解决方案。它定义了一个\nobreakchapter行为与 一样\chapter但抑制分页符的命令。为此,我创建了一个布尔值\ifnbchap,它由 设置为 true \nobreakchapter。然后,这个布尔值在修补的\chapter命令中用于跳过分页符代码。由于您的问题在更多细节上相当粗略,我没有做任何其他事情来格式化这种类型的章节。我\nbchap使用结束代码将条件重置为 false titlesec,以便您可以使用该条件来影响命令可能需要的任何格式要求(例如垂直间距)\nobreakchapter

为了回应该评论,我还\thispagestyle{plain}从章节中删除了该命令\nobreakchapter

\documentclass{book}
\usepackage{titlesec}
\titleformat{\chapter}[hang]{\Large\bfseries}{}{0em}{\LARGE\bfseries}[\global\nbchapfalse]
\usepackage{xpatch}
\usepackage{kantlipsum} % for dummy text
\newif\ifnbchap
\xpretocmd{\chapter}{\ifnbchap\else}{}{}
\xpatchcmd{\chapter}{\clearpage\fi}{\clearpage\fi\fi}{}{}
\xpatchcmd{\chapter}{\thispagestyle{plain}}{\ifnbchap\else\thispagestyle{plain}\fi}{}{}
\newcommand{\nobreakchapter}{\nbchaptrue\chapter}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{This is a regular chapter}
\kant
\chapter{This is another regular chapter}
\kant[1]
\nobreakchapter{This is a no break chapter}
\kant[2]
\nobreakchapter{This is another no break chapter}
\kant
\chapter{Another regular chapter}
\kant
\nobreakchapter{A nobreak chapter} 
\kant[1]
\chapter{Another regular chapter}
\kant
\end{document}

代码部分输出

相关内容