我希望\tableofcontents
仅以“真实列表”的形式生成元素列表,这意味着我可以在同一页面上的列表之前和之后键入文本,并且可以将列表移动到另一页。
我不希望该命令产生标题Table of Contents
。
我该怎么做,或者我应该在序言中添加什么?
先感谢您!
编辑我使用book
文档类:
\documentclass{book}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
\chapter{Chapter 2}
\end{document}
答案1
文档类的代码book
定义\tableofcontents
如下:
\newcommand\tableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
第一个位,\if@twocolumn ... \fi
如果您使用twocolumn
文档类选项,则切换到单列模式。如果您希望内容成为运行文本的一部分,您可能不希望这样做,因此我们可以排除这种情况。这还允许我们删除末尾的,如果是这种情况,则\if@restonecol\twocolumn\fi
切换回。\twocolumn
接下来我们有\chapter*{...}
。这会将章节标题添加到目录中。您明确要求删除它,因此……\@mkboth
中的\chapter*
负责页面标题TABLE OF CONTENTS
。如果您没有目录章节,您可能也不想要它,因此我们可以排除它。
现在我们只剩下\@starttoc{toc}
。这个命令基本上就是\@input{\jobname.toc}
,所以这就是我们要找的 :)
将其放入文档中:
\documentclass{book}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\makeatletter
\@starttoc{toc}
\makeatother
\lipsum[2]
\chapter{Chapter 1}
\chapter{Chapter 2}
\end{document}
第一页显示
如果你检查该.toc
文件,你会发现它包含
\contentsline {chapter}{\numberline {1}Chapter 1}{3}
\contentsline {chapter}{\numberline {2}Chapter 2}{5}
将其直接写入.tex
文件也可以。
此外,如果您仔细查看,您会发现该\contentsline{chapter}
命令在写入内容行之前执行了。如果您想使前后间距均匀,可以使用相同的空格:\l@chapter
book.cls
\vskip 1.0em \@plus\p@
\@starttoc
\documentclass{book}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\makeatletter
\@starttoc{toc}
\vskip 1.0em \@plus\p@
\makeatother
\lipsum[2]
\chapter{Chapter 1}
\chapter{Chapter 2}
\end{document}
答案2
我可能不应该重新提起这个老话题,但以下内容也有效:
{\renewcommand{\chapter}[2]{}\tableofcontents}
如同这个答案对于另一个问题,您可以重新定义\chapter
仅用于目录的内容(对于任何其他类型的标题也是如此)。