Ist es falsch, \ clearpage anstelle von \ newpage zu verwenden?
On Februar 13, 2021 by admin Die Befehle \newpage
und \clearpage
erzwingen beide einen Seitenumbruch . Darüber hinaus „löscht“ der letztere Befehl auch alle ausstehenden Floats vom Stapel, dh erzwingt, dass sie ab der Seite gesetzt werden, die auf den Seitenumbruch folgt.
Meine Frage lautet: Ist es jemals ein Fehler? Verwenden Sie \clearpage
anstelle von \newpage
, außer in Fällen, in denen keine ausstehenden Floats sein soll gespült? Anhand einer gelegentlichen Überprüfung der Definitionen der beiden Befehle (siehe unten) kann ich nicht erkennen, ob es Probleme gibt, immer \clearpage
zu verwenden.
Zur Vereinfachung der Bezugnahme ist hier die Definition von \newpage
(von 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}
und hier ist die Definition von \clearpage
– beachten Sie, dass \newpage
aufgerufen wird:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Antwort
Technisch gesehen ist nichts falsch daran, anstelle von \newpage
. Die beiden Befehle haben jedoch unterschiedliche Semantiken und die Frage ist, an welcher Semantik Sie interessiert sind.
Zunächst einmal, wie Sie bereits erwähnt haben, \clearpage
nicht nur Beendet die Seite (oder Spalte im Zweispaltenmodus), löscht jedoch zusätzlich alle zurückgestellten Floats. Auf den ersten Blick mag das eine gute Idee sein, aber bedenken Sie die folgende Situation: Es wartet ein Float, der nur 1/3 der Seitengröße beträgt. Jetzt mit \newpage
starten Sie eine neue Seite und dann würde der float-Algorithmus ( siehe Beschreibung dieses Algorithmus für Details ) Treten Sie ein und versuchen Sie, wartende Floats auf der nächsten Seite zu platzieren (und würden den wartenden Float höchstwahrscheinlich dem oberen Bereich der nächsten Seite zuweisen. Im Gegensatz dazu würde \clearpage
diesen Float aber auch ausgeben auf einer eigenen Seite.
In Situationen wie dem Beginn eines Kapitels ist es daher ratsam, das vorherige Kapitel mit einem \clearpage
zu beenden (oder das neue zu starten) damit), um alle Floats auszuspülen, aber in anderen Situationen kann dies zu ziemlich leeren Seiten mit nur Floats führen, die möglicherweise erwünscht sind oder nicht.
Ein zweiter Unterschied ist startet eigentlich immer eine neue „Seite“, während \newpage
wirklich nur die aktuelle Spalte beendet — und das ist ein großer Unterschied im Zweispaltenmodus. Versuchen Sie einfach Folgendes siehe den Unterschied:
\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}
Kommentare
- Ok, ich muss behaupten, dass ich ' nicht an in meiner Antwort. Aber ehrlich gesagt: Die Verwendung von
\newpage
oder\clearpage
in einem Textblock wie Kapitel ist meiner Meinung nach wirklich verpönt und sollte sehr sorgfältig durchgeführt werden. - @tohecz sicher, aber die Frage war nicht ' t " sollte ich diese Befehle überhaupt verwenden (oder wann) " — Aus struktureller Sicht sollten sie mit Sicherheit nur direkt in einer letzten Bearbeitungsphase verwendet werden und selbst dann nur, wenn dies wirklich notwendig ist.
- Ja Ich weiß und stimme irgendwie zu. Und die Wahrheit ist, dass
\newpage
in diesem Fall wahrscheinlich angemessener ist. - Vielen Dank, Frank, für diese ausführliche Antwort. Ich war mir des Unterschieds im Verhalten der beiden Befehle überhaupt nicht bewusst, wenn sich LaTeX im Mehrspaltenmodus befindet, nämlich
\newpage
erzwingt eine neue Spalte, während\clearpage
erzwingt eine neue Seite.
Antwort
Meiner Meinung nach können Sie überall, es sei denn,“ es gibt einen besonderen Grund, dies nicht zu tun „. Dieser besondere Grund für mich ist, wenn Sie (aus ästhetischen oder aus irgendeinem Grund) wirklich Folgendes haben möchten:
- eine wirklich leere Seite, dann rufen Sie zum Beispiel
\newpage\leavevmode\thispagestyle{empty}\newpage
- etwas auf einer bestimmten Seite oder was auch immer auf (
\clearpage
kann mehr als einen Seitenumbruch hinzufügen, wenn „viele Floats in der Warteschlange stehen“, während\newpage
nur einen) - hinzufügt, wenn Sie zwei Seiten direkt daneben haben möchten einander (Ich mag es, wenn der Kapiteltitel auf der linken Seite ohne Text angezeigt wird und der Text auf der rechten Seite beginnt – dann verwende ich
\newpage
nach Typen (
Sicherlich sollte jede Verwendung dieser beiden Befehle konzeptionell sein. Ich meine, Sie sollten sie nicht in einem Haupttext Ihrer Arbeit verwenden müssen, Sie Verwenden Sie sie in Makrodefinitionen (wie meine oben erwähnte \chapter
) oder in der Präambel / …
Schreibe einen Kommentar