在目录中混合编号和未编号部分

在目录中混合编号和未编号部分

在我的目录中,我需要对一些条目进行编号,对一些条目进行编号,但对未编号的部分仍保留数字增量。

换句话说,我需要:

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}

A

但这会导致目录中“第四节标题”的数字为 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}

相关内容