合并章节枚举

合并章节枚举

在我的文档的某个部分的开头,我有一个包含一些价值观的表格,在后面的章节中我会解释它们。有些价值观需要组合;因此必须列举章节,例如:

1. A
2. B
3. - 5. C
6. - 7. D
8. E

我想到了一些类似于定义替代章节命令的事情\chapterA

例如:

\chapter{A}
\chapter{B}
\chapterA{3}{C} % combine 3 values
\chapterA{2}{D} % combine 2 values
\chapter{E}

这个命令应该是什么样的?

我发现但无法将其应用于\chapter命令。

答案1

一个选项是使用titlesec;该命令\standardchapter生成一个“正常”标题;\combinedchapter在每个标题中生成一个标题,编号的形式为<number>.-- <number>+#1,其中#1是强制参数中的整数:

\documentclass{book}
\usepackage{titlesec}

\newcommand\standardchapter{%
\titleformat{\chapter}[block]
  {\normalfont\huge\bfseries}{\thechapter.}{1em}{}
}
\newcommand\combinedchapter[1]{%
\titleformat{\chapter}[block]
  {\normalfont\huge\bfseries}{\thechapter.--\,\number\numexpr\thechapter+#1\relax.\addtocounter{chapter}{#1}}{1em}{}
}

\begin{document}

\let\cleardoublepage\relax% just for the example

\standardchapter
\chapter{A}
\chapter{B}
\combinedchapter{2}
\chapter{C}
\combinedchapter{3}
\chapter{D}
\standardchapter
\chapter{E}

\end{document}

在此处输入图片描述

答案2

以下示例定义了\chapterA一个范围作为章节编号。附录内的章节也受支持。由于数字较长,目录会相应调整。

\documentclass{scrreprt}

\let\savedthechapter\thechapter
\let\orgchapter\chapter
\renewcommand*{\chapter}{%
  \let\thechapter\savedthechapter
  \orgchapter
}
\newcommand*{\chapterA}[1]{%
  \stepcounter{chapter}%
  \edef\thechapterauxA{\savedthechapter}%
  \addtocounter{chapter}{#1}%
  \addtocounter{chapter}{-1}%
  \edef\thechapterauxB{\savedthechapter}%
  \edef\thechapter{\thechapterauxA.--\thechapterauxB}%
  \addtocounter{chapter}{-1}%
  \orgchapter
}

% \appendix changes \thechapter for uppercase letters
\makeatletter
\g@addto@macro\appendix{%
  \global\let\savedthechapter\thechapter
}
\makeatother

% patch \l@chapter to get room for the chapter number
\usepackage{etoolbox}
\makeatletter
\patchcmd{\l@chapter}{%
  \setlength\@tempdima{1.5em}%
}{%
  \setlength\@tempdima{3em}%
}{}{\errmessage{Patching \string\l@chapter\space failed}}
\patchcmd{\l@section}{{1.5em}}{{3em}}%
  {}{\errmessage{Patching \string\l@section\space failed}}
\patchcmd{\l@subsection}{{3.8em}}{{5.3em}}%
  {}{\errmessage{Patching \string\l@subsection\space failed}}
% analog: subsubsection, paragraph, subparagraph, ...
\makeatother

\begin{document}
  \tableofcontents
  \chapter{A}
  \chapter{B}
  \chapterA{3}{C} % combine 3 values
  \chapterA{2}{D} % combine 2 values
  \chapter{E}
  \section{Section}
  \subsection{Subsection}
  \appendix
  \chapter{Appendix 1}
  \chapterA{3}{Appendix 2-4}
  \chapter{Appendix 5}
\end{document}

结果

相关内容