在 LaTeX 中使用“\let\clearpage\relax”关闭“\clearpage”后重新激活“\clearpage”

在 LaTeX 中使用“\let\clearpage\relax”关闭“\clearpage”后重新激活“\clearpage”

我的文档中有目录。我发现,插入一个 ( ) 后, 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只是将命令定义为现有命令的重复,因此:

  1. \let\oldclearpage\clearpage使其\oldclearpage等同于\clearpage
  2. \let\clearpage\relax相当于,这是一个不执行任何操作的命令\clearpage\relax
  3. \tableofcontents运行,但其\clearpages 不执行任何操作。
  4. 最后,\let\clearpage\oldclearpage使得\clearpage相当于\oldclearpage,也就是相当于原来的\clearpage

答案2

\let\standardclearpage\clearpage
\let\clearpage\relax
\tableofcontents
%\*reactive it*
\let\clearpage\standardclearpage

相关内容