¿Está mal usar \ clearpage en lugar de \ newpage?
On febrero 13, 2021 by admin Los comandos \newpage
y \clearpage
fuerzan un salto de página . Además, el último comando también «elimina» todos los flotantes pendientes de la pila, es decir, los obliga a componerse a partir de la página que sigue al salto de página.
Mi pregunta es: ¿Alguna vez es un error? para usar \clearpage
en lugar de \newpage
, excepto en los casos en los que uno podría no querer que haya flotantes pendientes enrojecido? De una inspección casual de las definiciones de los dos comandos (ver más abajo), no puedo decir si hay algún problema al acecho en usar siempre \clearpage
.
Para facilitar la referencia, aquí está la definición de \newpage
(de latex.ltx
):
\def \newpage {% \if@noskipsec \ifx \@nodocument\relax \leavevmode \global \@noskipsecfalse \fi \fi \if@inlabel \leavevmode \global \@inlabelfalse \fi \if@nobreak \@nobreakfalse \everypar{}\fi \par \vfil \penalty -\@M}
y aquí» está la definición de \clearpage
; tenga en cuenta que invoca \newpage
:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Responder
Técnicamente, no hay nada de malo en usar \clearpage
en lugar de \newpage
. Sin embargo, los dos comandos tienen una semántica diferente y la pregunta es cuál de las semánticas le interesa.
En primer lugar, como ya mencionó \clearpage
no solo finaliza la página (o columna en modo de dos columnas) pero, además, elimina todos los flotantes que se han aplazado. A primera vista, podría ser una buena idea, pero considere la siguiente situación: tiene un flotador esperando que es solo 1/3 del tamaño de la página. Ahora, con \newpage
inicia una nueva página y luego el algoritmo flotante ( consulte la descripción de este algoritmo para obtener más detalles ) iniciar e intentar colocar los flotadores en espera en la página siguiente (y lo más probable es que asigne el flotador en espera al área superior de la página siguiente. En contraste, \clearpage
también generaría este flotador pero en una página propia.
Por lo tanto, en situaciones como el comienzo de un capítulo, es recomendable terminar el capítulo anterior con un \clearpage
(o más bien comenzar el nuevo con él) para eliminar todos los flotantes, pero en otras situaciones esto puede resultar en páginas bastante vacías con solo flotantes en ellas que pueden ser deseadas o no.
Una segunda diferencia es \clearpage
en realidad siempre comienza una nueva «página» mientras que \newpage
realmente solo termina la columna actual — y esa es una gran diferencia en el modo de dos columnas. Solo intente lo siguiente para vea la diferencia:
\documentclass[twocolumn]{article} \begin{document} A test \newpage % ends first column but not page A second test \newpage A clearpage test \clearpage % ends page (which has one column) A second clearpage test \end{document}
Comentarios
Responder
En mi opinión, puede usar \clearpage
en cualquier lugar a menos que» haya «una razón especial para no hacerlo». Esta razón especial para mí es cuando usted (por este motivo o cualquier otra razón) realmente quiere tener:
- una página realmente vacía, entonces llamas, por ejemplo,
\newpage\leavevmode\thispagestyle{empty}\newpage
- algo colocado en una página específica o lo que sea (
\clearpage
puede agregar más de un salto de página si hay «muchos flotantes en cola, mientras que\newpage
agrega solo uno) - cuando desea tener dos páginas justo al lado de entre sí (me gusta cuando el título del capítulo está en la página izquierda sin texto, y el texto comienza en la página derecha; luego uso
\newpage
después de los tipos el título del capítulo).
Seguramente todo uso de cualquiera de estos dos comandos debe ser conceptual, quiero decir, no debería necesitar usarlos en un texto principal de su trabajo, úselos en definiciones de macros (como mi \chapter
mencionado anteriormente) o en el preámbulo / …
twocolumn
en mi respuesta. Pero honestamente: usar\newpage
o\clearpage
dentro de un bloque de texto como un capítulo está realmente mal visto en mi opinión y debe hacerse con mucho cuidado.\newpage
es probablemente más apropiado en ese caso.\newpage
fuerza una nueva columna mientras que\clearpage
fuerza una nueva página.