![如何在章节中切换数字?](https://linux22.com/image/442485/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%AB%A0%E8%8A%82%E4%B8%AD%E5%88%87%E6%8D%A2%E6%95%B0%E5%AD%97%EF%BC%9F.png)
所以我希望我的章节是这样的:
Chapter 1
Chapter 2
Chapter 3+4
Chapter 6
是的,我想找到一种方法,将两个章节合并为一个,并跳过一个章节
答案1
可以通过使用增加章节计数器来跳过章节\refstepcounter{chapter}
。
合并两个章节有点困难。为此,您可以临时重新定义用于打印章节编号的宏,该宏称为\thechapter
。通常将其定义为\arabic{chapter}
,意思是“以阿拉伯数字打印章节计数器”。您可以将其重新定义为“打印章节计数器和章节计数器+1”,然后添加合并的章节,然后将计数器打印宏重置为原始定义。
可以使用\numexpr
(numeric expression)(用于执行算术的内置 LaTeX 宏)打印计数器加一。在这种情况下,您需要章节计数器的值 ( \value{chapter}
) 并加一。此表达式以 结尾\relax
并打印\the
。完整语句如下:
\the\numexpr\value{chapter}+1\relax
这可以用于重新定义\thechapter
:
\def\thechapter{\arabic{chapter}+\the\numexpr\value{chapter}+1\relax}
请注意,第一个 + 是作为标题的一部分打印的实际加号,而第二个 + 是要评估的算术表达式的一部分。
为了使此重新定义成为临时定义,应首先存储原始定义,然后恢复,如下所示:
% store old definition in helper macro \oldchapter
\let\oldchapter\thechapter
% redefinition
\def\thechapter{\arabic{chapter}\texttt{+}\the\numexpr\value{chapter}+1\relax}
% start a chapter which uses the new definition
\chapter{Two chapters}
% restore old definition by copying \oldchapter back into \thechapter
\let\thechapter\oldchapter
现在还有两个问题。首先,文本模式下的常规 + 符号看起来不太好看,太大而且不是垂直居中。我认为等宽字体\texttt
看起来更好,如下所示:
\arabic{chapter}\texttt{+}\the\numexpr %etc
然后,目录只为章节号保留了一小部分空间,因此 3+4 太宽并且与章节标题重叠。可以使用包更改章节号宽度tocloft
:
\usepackage{tocloft}
\setlength{\cftchapnumwidth}{15mm}
下面是完整的 MWE。请注意,章节计数器被跳过两次,因为它从 3 变为 6(计数器实际上从来不是 4,4 被打印为 3+1)。
\documentclass{report}
\usepackage{tocloft}
\setlength{\cftchapnumwidth}{15mm}
\begin{document}
\tableofcontents
\chapter{A chapter}
\chapter{Another chapter}
\label{single}
\let\oldchapter\thechapter
\def\thechapter{\arabic{chapter}\texttt{+}\the\numexpr\value{chapter}+1\relax}
\chapter{Two chapters}
\label{double}
\let\thechapter\oldchapter
\refstepcounter{chapter}
\refstepcounter{chapter}
\chapter{Last chapter}
see also chapters \ref{single} and \ref{double}
\end{document}
结果:
引用按预期工作: