我正在撰写一份文件,我不希望在TOC中显示小节编号(我希望小节标题在TOC中可见)但我希望小节编号显示在实际文档标题中。
这就是我想要的
Table of Contents
1. Chapter One
1.1 Section One
SubSection One
Chapter 1
Chapter One
Some chapter text
1.1 Section One
Some text
1.1.1 Subsection One
Some text
我尝试使用\ setcounter {secnumdepth} {1},但这会从标题部分删除数字,所以我拥有的是
Table of Contents
1. Chapter One
1.1 Section One
SubSection One
Chapter 1
Chapter One
Some chapter text
1.1 Section One
Some text
Subsection One
Some text
是否可以在文档标题中获取节号但不在TOC条目中?
答案 0 :(得分:4)
在一个乳胶示例中(使用“article”类),我在.toc文件中得到了这个:
\contentsline {section}{\numberline {1}test section without number}{1}{section.1}
这里的重要部分是\numberline
宏。将它重新定义为空的,如
\def\numberline#1{}
将删除toc中的所有编号,而不是其他地方。
如果你在.toc中得到类似\tocsubsection
的内容(参见其他答案),那么你可以做类似的事情:
\let\oldtocsubsection=\tocsubsection
\def\tocsubsection#1#2#3{\oldtocsubsection{#1}{}{#3}}
但是,这会删除目录中的所有号码。如果您想控制编号消失的级别,\contentsline
宏会根据上下文扩展到不同的宏,例如\l@section
。这些宏反过来使用通用\@dottedtocline
宏。这是您需要修改的内容,我们将有条件地重新定义\numberline
。
要控制停止显示数字的深度,让我们定义一个新的计数器:
\newcounter{sectocnonumdepth}
\setcounter{sectocnonumdepth}{2}
然后条件重新定义将跟随行(从代码中提取以获得更多可读性)。
\ifnum #1>\c@sectocnonumdepth \def\numberline##1{}\fi%
我只是从\@dottedtocline
源文件中复制粘贴了latex.ltx
的定义,并在里面添加了检查。以下是整个示例的代码:
\newcounter{sectocnonumdepth}
\setcounter{sectocnonumdepth}{2}
\makeatletter
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
{\ifnum #1>\c@sectocnonumdepth \def\numberline##1{}\fi%
\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima #3\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#4}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
\par}%
\fi}
\makeatother
最后注意事项:这将使部分和子部分的标题从相同的水平位置开始,因为没有要显示的数字。如果您想要更多填充,可以将\quad
添加到\numberline
的新定义,或者甚至使用原始定义,只删除#1
:
\def\numberline##1{\hb@xt@\@tempdima{\hfil}}
答案 1 :(得分:2)
我不确定这样做的程序化方法,但我知道您可以进入生成的文档的* .toc文件,并删除要抑制的部分的section number参数。 / p>
你可以改变这个:
\contentsline {subsection}{\tocsubsection {}{1.1}{subsection one}}{1}
对此:
\contentsline {subsection}{\tocsubsection {}{}{subsection one}}{1}
哪个会产生你想要的东西。注意,每次编译tex源时都会重新生成。