LaTeX で「\let\clearpage\relax」で無効にした後、「\clearpage」を再度有効にする

LaTeX で「\let\clearpage\relax」で無効にした後、「\clearpage」を再度有効にする

私の文書には目次があります。調べたところ、1 つの ( \tableofcontents) を挿入すると、LaTeX は\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。たとえば、次の例は 1 ページにタイプセットされます。

\documentclass{book}

\begin{document}

\tableofcontents

\begingroup
\let\clearpage\relax
\chapter{Hello, world!}
\endgroup
And goodbye.

\end{document}

上記のドキュメントは 1 ページに表示されます (ページ番号なし)。


古い回答。質問には答えますが、問題は解決しません (いずれにしても、通常は代わりに\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

関連情報