É errado usar \ clearpage em vez de \ newpage?
On Fevereiro 13, 2021 by admin Os comandos \newpage
e \clearpage
ambos forçam uma quebra de página . Além disso, o último comando também “esvazia” todos os floats pendentes da pilha, ou seja, força-os a serem editados começando na página que segue a quebra de página.
Minha pergunta é: Isso sempre é um erro para usar \clearpage
em vez de \newpage
, exceto nos casos em que não deseja-se que haja flutuadores pendentes ruborizado? A partir de uma inspeção casual das definições dos dois comandos (veja abaixo), não posso dizer se há algum problema oculto em usar sempre \clearpage
.
Para facilidade de referência, aqui está a definição 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}
e aqui está a definição de \clearpage
– observe que ele invoca \newpage
:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Resposta
Tecnicamente, não há nada de errado em usar \clearpage
em vez de \newpage
. No entanto, os dois comandos têm semânticas diferentes e a questão é em qual semântica você está interessado.
Em primeiro lugar, como você já mencionou \clearpage
não apenas termina a página (ou coluna no modo de duas colunas), mas, adicionalmente, elimina todas as flutuações que foram adiadas. Aparentemente, isso pode ser uma boa ideia, mas considere a seguinte situação: você tem um flutuante esperando que é apenas 1/3 do tamanho da página. Agora, com \newpage
você inicia uma nova página e o algoritmo flutuante ( veja a descrição deste algoritmo para obter detalhes ) inicie e tente colocar os flutuadores de espera na próxima página (e muito provavelmente atribuiria o flutuador de espera à área superior da próxima página. Em contraste, \clearpage
também geraria este flutuante, mas em uma página própria.
Portanto, em situações como o início de um capítulo, é aconselhável terminar o capítulo anterior com um \clearpage
(ou melhor, iniciar um novo com ele) para eliminar todos os floats, mas em outras situações isso pode resultar em páginas razoavelmente vazias com apenas floats neles, o que pode ou não ser desejado.
Uma segunda diferença é \clearpage
na verdade, sempre inicia uma nova “página”, enquanto \newpage
realmente só termina a coluna atual — e isso é uma grande diferença no modo de duas colunas. Tente o seguinte para veja a diferença:
\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}
Comentários
Resposta
Na minha opinião, você pode usar \clearpage
em qualquer lugar, a menos que” haja “um motivo especial para não fazê-lo”. Este motivo especial para mim é quando você (por motivos estéticos ou qualquer outro) realmente deseja:
- uma página realmente vazia, então você chama, por exemplo,
\newpage\leavevmode\thispagestyle{empty}\newpage
- algo colocado em uma página específica ou qualquer outra coisa (
\clearpage
pode adicionar mais de uma quebra de página se houver “muitos flutuadores enfileirados, enquanto\newpage
adiciona apenas uma) - quando você deseja ter duas páginas ao lado de um ao outro (gosto quando o título do capítulo entra na página esquerda sem texto e o texto começa na página direita – então uso
\newpage
após os tipos o título do capítulo).
Certamente, todo uso de qualquer um desses dois comandos deve ser conceitual, quer dizer, você não deve precisar usá-los em um texto principal do seu trabalho, você use-os em definições de macro (como meu \chapter
mencionado acima) ou no preâmbulo / …
twocolumn
em minha resposta. Mas, honestamente: usar\newpage
ou\clearpage
dentro de um bloco de texto como capítulo é realmente desaprovado em minha opinião e deve ser feito com muito cuidado.\newpage
é provavelmente mais apropriado nesse caso.\newpage
força uma nova coluna, enquanto\clearpage
força uma nova página.