使用“\let\clearpage\relax”關閉 LaTeX 中的“\clearpage”後重新啟動它

使用“\let\clearpage\relax”關閉 LaTeX 中的“\clearpage”後重新啟動它

我的文檔中有一個目錄。正如我所發現的,插入一個 ( \tableofcontents) LaTeX後\clearpage預設會執行 a 操作。

忽略的方法\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

相關內容