![在目录中混合编号和未编号部分](https://linux22.com/image/323409/%E5%9C%A8%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%B7%B7%E5%90%88%E7%BC%96%E5%8F%B7%E5%92%8C%E6%9C%AA%E7%BC%96%E5%8F%B7%E9%83%A8%E5%88%86.png)
在我的目录中,我需要对一些条目进行编号,对一些条目进行编号,但对未编号的部分仍保留数字增量。
换句话说,我需要:
1 - First Section Title
2 - Second Section Title
Third Section Title (un-numbered)
4 - Fourth Section Title
我的代码如下:
\documentclass{article}
\begin{document}
\tableofcontents
\section{First Section Title}
\section{Second Section Title}
\section*{Third Section Title}
\addcontentsline{toc}{section}{Third Section Title}
\section{Fourth Section Title}
\end{document}
但这会导致目录中“第四节标题”的数字为 3。我该如何让它的数字为 4?
答案1
一种快速而粗略的方法是修补\@startsection
命令,该命令负责启动一个部分并查找内部的宏。仅当部分级别为时才在那里\@ifstar
添加(在我看来,\refstepcounter 毫无用处)。\stepcounter{section}
section
\tableofcontents
由于所有类似 ToC 的命令都\section*{}
用于 ToC 标题,因此必须完成此操作。
小心\printindex
等\bibliography
。
\documentclass{article}
\usepackage{xpatch}
\begin{document}
\tableofcontents
\makeatletter
\xpatchcmd{\@startsection}{%
\@ifstar
{\@ssect{#3}{#4}{#5}{#6}}%
}{%
\@ifstar
{%
\ifstrequal{#1}{section}{\stepcounter{section}}{}%
\@ssect{#3}{#4}{#5}{#6}}%
}{\typeout{Yes}}{\typeout{No!}}
\makeatother
\section{First Section Title}
\section{Second Section Title}
\section*{Third Section Title}
\addcontentsline{toc}{section}{Third Section Title}
\section{Fourth Section Title}
\subsection*{Test subsection}
\section{Another section}
\end{document}
答案2
您可以切换到 KOMA 类并进行修补\addsec
。这样也可以消除对 的需求\addcontentsline
。但我认为编号很奇怪。看起来好像排字员犯了一个错误并忘记了一个数字。
\documentclass{scrartcl}
\usepackage{etoolbox}
\pretocmd\addsec{\refstepcounter{section}}{}{}
\begin{document}
\tableofcontents
\section{First Section Title}
\section{Second Section Title}
\addsec{Third Section Title}
\section{Fourth Section Title}
\end{document}
答案3
只需定义一个特殊命令,而不是滥用\section*
。当您改变主意并决定不再做这样有趣的事情时,您只需将其替换\specialsection
为\section
。
\documentclass{article}
\begin{document}
\tableofcontents
\section{First Section Title}
\section{Second Section Title}
\section*{Third Section Title}
\addcontentsline{toc}{section}{Third Section Title}
\section{Fourth Section Title}
\end{document}
高级版本\specialsection
采用与以下相同的语法\section
(带有可选的条目参数toc
):
\documentclass{article}
\makeatletter
\newcommand{\specialsection}{\@dblarg\special@section}
\def\special@section[#1]#2{%
\stepcounter{section}%
\section*{#2}%
\addcontentsline{toc}{section}{#1}%
}
\makeatother
\begin{document}
\tableofcontents
\section{First Section Title}
\section{Second Section Title}
\specialsection{Third Section Title}
\section{Fourth Section Title}
\end{document}