我的报告中有许多未编号的部分(超过 100 个),全部使用以下方式创建:
\section*{section name}
我想找到一种方法轻松地将它们全部添加到TOC
(特别是添加到minitoc
)。由于我使用*
删除编号,它们不会出现在中TOC
。我在文档中发现minitoc
我应该使用:
\addcontentsline{toc}{section}{repeat here section title}
但是,我不想在每个部分都有重复的标题,甚至不想更改所有相关文件以将那些已经写好的部分添加到TOC
。如何在minitoc
不使用命令的情况下将这些部分的名称添加到addcontentsline
?可能吗?
答案1
最简单的方法是使用\section
但进行更改,secnumdepth
以便它们不会被编号。
\documentclass{article}
\setcounter{secnumdepth}{0}
\begin{document}
\tableofcontents
\section{ADSF}
\section{Foo}
\end{document}
答案2
另一个解决方案\addcontentsline{toc}{section}{repeat here section title}
依赖于 nameref。事实上,我用标签给每个部分(章节等)编号。因此您可以使用:
% Package 'hyperref' needed for command '\nameref'
\section*{Introduction}
\label{sec:intro}
\addcontentsline{toc}{section}{\nameref{sec:intro}}
这只是一个局部变化,并且会对您所在部分的名称变化产生影响。
答案3
如果你正在使用KOMA 脚本最简单的方法是使用这些内置命令:
\addpart \addchap \addsec
其工作原理就像 \part* \chapter* \section*
被添加到目录中一样。
答案4
你可以做的是重新定义你的章节(或部分)。这里我复制了我为我的报告所做的工作。我重新定义了\chapter*
并定义了一个\chapter**
后者是旧的\chapter*
,而前者是未编号的章节,但已添加到目录中。
\let\@originalchapter\chapter
\def\chapter{
\@ifstar\chapterstar\@originalchapter
}
\def\chapterstar{
\@ifstar\chapter@nonum@notoc\chapter@nonum
}
\newcommand\chapter@nonum[2][]{
\ifthenelse{\isempty{#1}}{
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{\protect\numberline{}#2}
\@originalchapter*{#2}
\chaptermark{#2}
}{
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{\protect\numberline{}#1}
\@originalchapter*[#1]{#2}
\chaptermark{#1}
}
}
\newcommand\chapter@nonum@notoc[2][]{
\ifthenelse{\isempty{#1}}{
\@originalchapter*{#2}
\chaptermark{#2}
}{
\@originalchapter*[#1]{#2}
\chaptermark{#1}
}
}
\let\@originaltableofcontents\tableofcontents
\def\tableofcontents{
\let\@toclocaloriginalchapter\chapter
\def\chapter{\@toclocaloriginalchapter*}
\@originaltableofcontents
\def\chapter{\@toclocaloriginalchapter}
}