Er det galt å bruke \ clearpage i stedet for \ newpage?
On februar 13, 2021 by admin Kommandoene \newpage
og \clearpage
tvinger begge sider . I tillegg «slynger» sistnevnte kommando også alle ventende flyter fra stabelen, dvs. tvinger dem til å settes inn fra siden som følger sideskiftet.
Mitt spørsmål er: Er det noen gang en feil å bruke \clearpage
i stedet for \newpage
, annet enn i tilfeller der man kanskje ikke vil at noen ventende flyter skal være rødmet? Fra en tilfeldig inspeksjon av definisjonene av de to kommandoene (se nedenfor), kan jeg ikke fortelle om det er noen problemer som lurer med å alltid bruke \clearpage
.
For å gjøre det lettere å referere, er her definisjonen av \newpage
(fra 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}
og her er definisjonen av \clearpage
– merk at den påkaller \newpage
:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Svar
Teknisk sett er det ikke noe galt med å bruke \clearpage
i stedet for \newpage
. Imidlertid har de to kommandoene forskjellig semantikk, og spørsmålet er hvilken av semantikken du er interessert i.
Først og fremst, som du allerede nevnte \clearpage
ikke bare avslutter siden (eller kolonnen i to kolonnemodus), men i tillegg skyller den ut alle flyter som er utsatt. På forsiden kan det være en god ide, men vurder følgende situasjon: du har en flottør som bare venter på 1/3 av sidestørrelsen. Nå med \newpage
starter du en ny side, og deretter vil flottøralgoritmen ( se beskrivelsen av denne algoritmen for detaljer ) sparke inn og prøv å plassere ventende flottører på neste side (og mest sannsynlig vil tilordne ventende flottør til det øverste området på neste side. I kontrast vil \clearpage
også sende ut denne flottøren, men på en egen side.
Så i situasjoner som et kapittelstart anbefales det å avslutte forrige kapittel med en \clearpage
(eller rettere sagt starte det nye med den) for å skylle ut alle flottører, men i andre situasjoner kan dette føre til ganske tomme sider med bare flottører på seg som kanskje eller ikke kan være ønsket.
En annen forskjell er \clearpage
starter alltid alltid en ny «side» mens \newpage
egentlig bare avslutter den nåværende kolonnen — og det er stor forskjell i tokolonnemodus. Bare prøv følgende for å se forskjellen:
\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
Etter min mening kan du bruke \clearpage
hvor som helst med mindre» det «er en spesiell grunn til ikke å gjøre det». Denne spesielle grunnen for meg er når du (av estetisk eller annen grunn) virkelig vil ha:
- en virkelig tom side, så ringer du for eksempel
\newpage\leavevmode\thispagestyle{empty}\newpage
- noe plassert på en bestemt side eller hva som helst (
\clearpage
kan legge til mer enn en sidebryt hvis det «er mange køer, mens\newpage
bare legger til en) - når du vil ha to sider like ved siden av hverandre (jeg liker det når kapitteltittel på venstre side uten tekst, og tekst starter på høyre side – så bruker jeg
\newpage
etter typer å definere kapitteltittelen).
All bruk av noen av disse to kommandoene burde helt sikkert være begrepsmessig. bruk dem i makrodefinisjoner (som min \chapter
nevnt ovenfor) eller i innledningen / …
twocolumn
i svaret mitt. Men ærlig talt: å bruke\newpage
eller\clearpage
i en tekstblokk som et kapittel er virkelig mislikt etter min mening og bør gjøres veldig nøye.\newpage
er mer passende i så fall sannsynligvis.\newpage
tvinger en ny kolonne mens\clearpage
tvinger en ny side.