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