Je špatné použít \ clearpage místo \ newpage?
On 13 února, 2021 by admin Příkazy \newpage
a \clearpage
přinutí konec stránky . Druhý příkaz navíc také „vyprázdní“ všechny čekající plováky ze zásobníku, tj. Vynutí je, aby byly vysázeny počínaje stránkou, která následuje za koncem stránky.
Moje otázka zní: Je někdy chyba použít \clearpage
spíše než \newpage
, kromě případů, kdy by člověk nechtěl chtít, aby byly všechny nevyřízené plováky propláchnout? Z náhodného prozkoumání definic těchto dvou příkazů (viz níže) nemohu zjistit, zda existují nějaké problémy, které se skrývají vždy při použití \clearpage
.
Pro snazší orientaci je zde definice \newpage
(z latex.ltx
):
a zde je definice \clearpage
– všimněte si, že vyvolá \newpage
:
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }
Odpověď
Technicky není nic špatného na použití \clearpage
místo \newpage
. Tyto dva příkazy však mají odlišnou sémantiku a otázkou je, která ze sémantiky vás zajímá.
Nejprve, jak jste již zmínili \clearpage
nejen ukončí stránku (nebo sloupec v režimu dvou sloupců), ale navíc vyprázdní všechny plováky, které byly odloženy. Na první pohled to může být dobrý nápad, ale zvažte následující situaci: čeká vás jeden float, který má pouze 1/3 velikosti stránky. Nyní s \newpage
spustíte novou stránku a pak by floatový algoritmus ( podrobnosti viz popis tohoto algoritmu ) by nastartujte a zkuste umístit čekající plováky na další stránku (a pravděpodobně by přidělil plovoucí plovák horní oblasti další stránky. Naproti tomu \clearpage
by také vypustil tento plovák, ale na vlastní stránce.
Takže v situacích, jako je začátek kapitoly, je vhodné ukončit předchozí kapitolu \clearpage
(nebo spíše spustit novou) s ním) vyprázdnit všechny plováky, ale v jiných situacích by to mohlo vést k poměrně prázdným stránkám, na nichž by byly pouze plováky, což může nebo nemusí být žádoucí.
Druhým rozdílem je \clearpage
ve skutečnosti vždy spustí novou „stránku“, zatímco \newpage
ve skutečnosti ukončí pouze aktuální sloupec — a to je velký rozdíl v režimu dvou sloupců. Zkuste následující podívejte se na rozdíl:
\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}
Komentáře
Odpověď
Podle mého názoru můžete použít \clearpage
kdekoli, pokud„ tam není zvláštní důvod, proč tak neučinit „. Tímto zvláštním důvodem pro mě je, když vy (z estetického nebo jakéhokoli důvodu) opravdu chcete mít:
- opravdu prázdná stránka, pak zavoláte například
\newpage\leavevmode\thispagestyle{empty}\newpage
- něco umístěného na konkrétní stránku nebo cokoli jiného (
\clearpage
může přidat více než jedno zalomení stránky, pokud je ve flotile mnoho front, zatímco\newpage
přidává pouze jednu) - pokud chcete mít dvě stránky hned vedle navzájem (líbí se mi, když je nadpis kapitoly na levé stránce bez textu a text začíná na pravé stránce – poté použiji
\newpage
po typech a nadpis kapitoly).
Určité použití kteréhokoli z těchto dvou příkazů by mělo být koncepční, to znamená, že byste je neměli používat v hlavním textu své práce. použít je v definicích maker (jako je moje \chapter
zmíněno výše) nebo v preambuli / …
twocolumn
v mé odpovědi. Ale upřímně: použití\newpage
nebo\clearpage
uvnitř textového bloku, jako je kapitola, je podle mého názoru opravdu odsuzováno a mělo by být provedeno velmi opatrně.\newpage
je v tom případě pravděpodobně vhodnější.\newpage
vynutí nový sloupec, zatímco\clearpage
vynutí novou stránku.