Är det fel att använda \ clearpage istället för \ newpage?
On februari 13, 2021 by admin Kommandona \newpage
och \clearpage
tvingar båda sidor . Dessutom ”spolar” det sistnämnda kommandot också alla väntande flytningar från stacken, dvs tvingar dem att sättas in från början på sidan som följer sidbrytningen.
Min fråga är: Är det någonsin ett misstag? att använda \clearpage
i stället för \newpage
, utom i fall där man kanske inte vill att några väntande flottör ska vara rodnad? Från en tillfällig inspektion av definitionerna av de två kommandona (se nedan) kan jag inte berätta om det finns några problem som lurar med att alltid använda \clearpage
.
För att underlätta referensen, här är definitionen av \newpage
(från 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}
och här är definitionen av \clearpage
– notera att den åberopar \newpage
:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Svar
Tekniskt är det inget fel med att använda \clearpage
istället för \newpage
. De två kommandona har dock olika semantik och frågan är vilken av semantiken du är intresserad av.
Först och främst, som du redan nämnde \clearpage
inte bara avslutar sidan (eller kolumnen i två kolumner) men dessutom spolar den bort alla flottörer som har skjutits upp. På det hela taget kan det vara en bra idé men överväga följande situation: du väntar en flottör som bara är 1/3 av sidstorleken. Nu med \newpage
startar du en ny sida och sedan kommer floatalgoritmen ( se beskrivningen av denna algoritm för detaljer ) sparka in och försök att placera väntande flottor på nästa sida (och skulle troligtvis tilldela väntande flottör till det övre området på nästa sida. Däremot skulle \clearpage
också mata ut denna flottör men på en egen sida.
Så i situationer som ett kapitel bör vi rekommendera att avsluta föregående kapitel med en \clearpage
(eller snarare starta det nya med det) för att spola ut alla flottörer, men i andra situationer kan detta resultera i ganska tomma sidor med bara flottörer på dem som kanske eller inte kan önskas.
En andra skillnad är \clearpage
startar faktiskt alltid en ny ”sida” medan \newpage
verkligen bara avslutar den aktuella kolumnen — och det är en stor skillnad i tvåkolumnläge. Försök bara följande för att se skillnaden:
\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}
Kommentarer
Svar
Enligt min mening kan du använda \clearpage
var som helst såvida inte” det finns en speciell anledning att inte göra det ”. Denna speciella anledning för mig är när du (av estetisk eller av någon anledning) verkligen vill ha:
- en riktigt tom sida, då ringer du till exempel
\newpage\leavevmode\thispagestyle{empty}\newpage
- något placerat på en viss sida eller vad som helst (
\clearpage
kan lägga till mer än en sidbrytning om det finns ”många flätor i kö, medan\newpage
bara lägger till en) - när du vill ha två sidor bredvid varandra (jag gillar det när kapitelrubrik in på vänster sida utan text och text börjar på höger sida – då använder jag
\newpage
efter typer att kapitelrubriken).
All användning av någon av dessa två kommandon borde helt enkelt vara begriplig, jag menar, du behöver inte använda dem i en huvudtext i ditt arbete, du använd dem i makrodefinitioner (som min \chapter
som nämns ovan) eller i inledningen / …
twocolumn
i mitt svar. Men ärligt talat: att använda\newpage
eller\clearpage
inuti ett textblock som kapitel är enligt min åsikt verkligen ogillad och bör göras mycket noggrant.\newpage
är mer lämpligt i så fall förmodligen.\newpage
tvingar en ny kolumn medan\clearpage
tvingar fram en ny sida.