如何将章节组织成未编号的超章节?

如何将章节组织成未编号的超章节?

我正在写一本分为两部分的书。当然,每部分都由几章组成,每章又由几节组成。很棒,对吧?当然!

但....

出于逻辑原因,我们希望将章节组织成部分内的“块”。因此:

  • 第一部分:甜点
  • [第一部分简介]

  • 冰淇淋

  • [ 介绍]
  • 第一章:巧克力冰淇淋
  • 第二章:香草冰淇淋

  • 馅饼

  • [ 介绍]

  • 第 3 章:苹果派
  • 第 4 章:蓝莓派

但当然,“冰淇淋”和“馅饼”并不是章节,就像“香草冰淇淋”和“蓝莓馅饼”不是章节一样。

我怎样才能将这两个“超章节”组织到其他章节的级别之上,但不给它们赋予章节编号?

答案1

也许这是最简单的方法:使用wrapper执行\chapter*{}并自动将行添加到目录的命令。

\frontmatter\chapter{foo}\mainmatter也是可能的,但这也会改变页码,这很可能不是我们所希望的。

我提供了两种变体,效果相同。\addcontentsline不过,我更喜欢第二种没有显式的变体!

第二种变体使用secnumdepth计数器的临时更改来控制分区单元是否在显示中编号。将其设置为-1只会保留\part计数器,suprachapter使用后恢复将提供正常行为。

\documentclass{book}

\usepackage{xparse}
\usepackage{hyperref}
\newcounter{oldsecnumdepth}



\NewDocumentCommand{\suprachapter}{som}{%
  \IfBooleanTF{#1}{%
    \chapter*{#1}%
  }{%
    \chapter*{#3}%
    \IfValueTF{#2}{%
      \addcontentsline{toc}{chapter}{#2}%
    }{%
      \addcontentsline{toc}{chapter}{#3}%
    }%
  }%
}

\NewDocumentCommand{\suprachapterother}{som}{%
  \IfBooleanTF{#1}{%
    \chapter*{#1}%
  }{%
    \setcounter{oldsecnumdepth}{\value{secnumdepth}}%
    \setcounter{secnumdepth}{-1}%
    \IfValueTF{#2}{%
      \chapter[#2]{#3}%
    }{%
      \chapter{#3}%
    }%
    \setcounter{secnumdepth}{\value{oldsecnumdepth}}%
  }%
}

\begin{document}

\tableofcontents
\part{Foo}

\suprachapter{Ice scream}

\chapter{Vanilla flavour}

\chapter{Albatross flavour}

\suprachapterother{PIE}

\chapter{Apple Pie}

\chapter{Black Forest Cherry Tarte}


\end{document}

在此处输入图片描述

相关内容