Reactivar “\clearpage” en LaTeX después de desactivarlo con “\let\clearpage\relax”

Reactivar “\clearpage” en LaTeX después de desactivarlo con “\let\clearpage\relax”

Mi documento tiene una tabla de contenido. Como descubrí, después de insertar uno ( \tableofcontents), LaTeX lo hace \clearpagede forma predeterminada.

Un método a ignorar \clearpagees el comando \let\clearpage\relax, que lo ignora hasta el final del documento. Aunque no tengo ningún otro comando en mi documento, se borró mi última página. Entonces quiero reaccionar \clearpageinmediatamente después de que se generó el toc.

Estoy buscando algo como:

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

Un intento de hacerlo \begingroupfalló.

\begingroup
\let\clearpage\relax
\tableofcontents
\endgroup

¿Algunas ideas?

Respuesta1

Al menos con la clase de documento book, las pruebas rápidas sugieren que\tableofcontents noinserta un \clearpage, pero\chapter hace. Por lo tanto, debes colocar tu grupo \let\clearpage\relaxalrededor del primer \chaptercomando (o lo que sea similar) después de tu \tableofcontents. El siguiente ejemplo, por ejemplo, compone una página:

\documentclass{book}

\begin{document}

\tableofcontents

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

\end{document}

El documento anterior se representa en una página (sin el número de página).


La respuesta anterior, que responde a la pregunta formulada pero no resuelve el problema (y de todos modos, normalmente deberías usar \begingroup... \endgroupen su lugar).

Puedes guardar y restaurar \clearpage:

\let\oldclearpage\clearpage
\let\clearpage\relax
\tableofcontents
\let\clearpage\oldclearpage

\letsimplemente define un comando como un duplicado de uno existente, entonces:

  1. \let\oldclearpage\clearpagehace \oldclearpageequivalente a \clearpage.
  2. \let\clearpage\relaxhace \clearpageequivalente a \relax, que es un comando que no hace nada.
  3. \tableofcontentsse ejecuta, sin \clearpagehacer nada.
  4. Finalmente, \let\clearpage\oldclearpagehace \clearpageequivalente a \oldclearpage, que es equivalente al original \clearpage.

Respuesta2

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

información relacionada