Este greșit să folosiți \ clearpage în loc de \ newpage?
On februarie 13, 2021 by admin Comenzile \newpage
și \clearpage
forțează ambele o pauză de pagină . În plus, această din urmă comandă „elimină” toate flotările în așteptare din stivă, adică le obligă să fie compuse din pagina care urmează pauzei de pagină.
Întrebarea mea este: Este vreodată o greșeală să utilizați \clearpage
mai degrabă decât \newpage
, în afară de cazurile în care s-ar putea nu doriți să existe flotori în așteptare îmbujorat? Dintr-o inspecție ocazională a definițiilor celor două comenzi (a se vedea mai jos), nu pot să vă spun dacă există probleme la pândă folosind întotdeauna \clearpage
.
Pentru ușurință de referință, aici este definiția \newpage
(din 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}
și aici este definiția \clearpage
– rețineți că invocă \newpage
:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Răspuns
Tehnic nu este nimic în neregulă cu utilizarea \clearpage
în loc de \newpage
. Cu toate acestea, cele două comenzi au semantică diferită și întrebarea este care dintre semantice vă interesează.
În primul rând, așa cum ați menționat deja \clearpage
nu numai termină pagina (sau coloana în modul cu două coloane), dar, de asemenea, elimină toate plutitoarele care au fost amânate. În față, ar putea fi o idee bună, dar luați în considerare următoarea situație: aveți un float care așteaptă doar 1/3 din dimensiunea paginii. Acum cu \newpage
porniți o nouă pagină și apoi algoritmul float ( a se vedea descrierea acestui algoritm pentru detalii ) loviți-vă și încercați să plasați plutitoarele de așteptare pe pagina următoare (și cel mai probabil ar atribui plutitorul de așteptare în zona de sus a paginii următoare. În schimb, \clearpage
ar produce și acest float, dar pe o pagină proprie.
Deci, în situații precum un început de capitol, este recomandabil să încheiați capitolul anterior cu un \clearpage
(sau mai degrabă să începeți noul cu el) pentru a elimina toate flotările, dar în alte situații acest lucru ar putea duce la pagini destul de goale, cu numai flotări pe ele, care pot fi sau nu dorite.
O a doua diferență este \clearpage
începe de fapt întotdeauna o nouă „pagină” în timp ce \newpage
într-adevăr încheie doar coloana curentă — și aceasta este o mare diferență în modul de două coloane. Încercați următoarele la vezi 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}
Comentarii
Răspuns
În opinia mea, puteți utiliza \clearpage
oriunde, cu excepția cazului în care” există „un motiv special pentru a nu face acest lucru”. Acest motiv special pentru mine este atunci când tu (din motive estetice sau din orice motiv) vrei cu adevărat să ai:
- o pagină cu adevărat goală, apoi apelați de exemplu
\newpage\leavevmode\thispagestyle{empty}\newpage
- ceva plasat pe o anumită pagină sau orice altceva (
\clearpage
poate adăuga mai multe pagini în cazul în care există o mulțime de flotări în coadă, în timp ce\newpage
adaugă doar una) - atunci când doriți să aveți două pagini chiar lângă unul pe celălalt (îmi place când titlul capitolului este pe pagina din stânga fără text și textul începe pe pagina din dreapta – apoi folosesc
\newpage
după tipuri introducerea titlului capitolului).
Sigur că orice utilizare a oricăreia dintre aceste două comenzi ar trebui să fie concepțională, adică nu ar trebui să le folosiți într-un text principal al operei dvs., folosiți-le în definiții macro (cum ar fi \chapter
menționate mai sus) sau în preambul / …
twocolumn
în răspunsul meu. Dar sincer: folosirea\newpage
sau\clearpage
într-un bloc de text, cum ar fi capitolul, este cu adevărat rău în opinia mea și ar trebui făcută cu mare atenție.\newpage
este mai potrivit în acest caz, probabil.\newpage
forțează o nouă coloană, în timp ce\clearpage
forțează o pagină nouă.