我的文档中有目录。我发现,插入一个 ( ) 后, LaTeX默认\tableofcontents
会执行。\clearpage
忽略的方法\clearpage
是命令\let\clearpage\relax
,它会忽略它直到文档结束。虽然我的文档中没有其他命令,但我的最后一页被删除了。所以我想\clearpage
在目录生成后立即做出反应。
我正在寻找类似的东西:
\let\clearpage\relax
\tableofcontents
\*reactive it*
一次尝试,但\begingroup
失败了。
\begingroup
\let\clearpage\relax
\tableofcontents
\endgroup
有任何想法吗?
答案1
至少对于文档类book
,快速测试表明\tableofcontents
没有插入一个\clearpage
,但是\chapter
做。因此,您必须将 放在之后的\let\clearpage\relax
第一个\chapter
命令(或任何类似的命令)周围\tableofcontents
。例如,以下示例排版在一页上:
\documentclass{book}
\begin{document}
\tableofcontents
\begingroup
\let\clearpage\relax
\chapter{Hello, world!}
\endgroup
And goodbye.
\end{document}
旧答案,它回答了提出的问题,但并没有解决问题(无论如何,您通常应该使用\begingroup
...\endgroup
来代替)。
您可以保存和恢复\clearpage
:
\let\oldclearpage\clearpage
\let\clearpage\relax
\tableofcontents
\let\clearpage\oldclearpage
\let
只是将命令定义为现有命令的重复,因此:
\let\oldclearpage\clearpage
使其\oldclearpage
等同于\clearpage
。\let\clearpage\relax
相当于,这是一个不执行任何操作的命令\clearpage
。\relax
\tableofcontents
运行,但其\clearpage
s 不执行任何操作。- 最后,
\let\clearpage\oldclearpage
使得\clearpage
相当于\oldclearpage
,也就是相当于原来的\clearpage
。
答案2
\let\standardclearpage\clearpage
\let\clearpage\relax
\tableofcontents
%\*reactive it*
\let\clearpage\standardclearpage