\thepage vs. Floats

\thepage vs. Floats

Ich schreibe einen Bericht und möchte sicherstellen, dass jedes neue Kapitel auf einer ungeraden Seite beginnt. Daher habe ich das folgende Skript geschrieben, das ich vor jedes Kapitel setze:

...    
%-- to make sure that a new chapter starts on the right side (odd page) %
\ifodd \thepage
{\newpage
\thispagestyle{empty}
\mbox{}
}
\else
{}
\fi
%-----------------------------------------------------------------------%
\chapter{Chap_name}
...

Es funktioniert wie folgt:

Wenn die Seite vor meinem neuen Kapitel ungerade ist, bedeutet das, dass ich eine leere Seite hinzufügen muss, um mit dem neuen Kapitel auf der nächsten ungeraden Seitenzahl beginnen zu können.

Es funktioniert einwandfrei, wenn die vorherige Seite eine normale Seite ist.

Wenn ich aber auf der Seite davor eine Abbildung habe, die auf eine neue Seite verschoben wurde, da sie nicht auf die Seite passte und auf der Seite neben dem Float kein Text vorhanden ist, funktioniert dieses Skript nicht.

Der Befehl \thepagegibt eine falsche Seitenzahl zurück (offenbar wird sie nicht erhöht, wenn die Seite nur einen Float enthält) und fügt daher keine leere Seite hinzu, falls die letzte Seite tatsächlich ungerade war.

Ich weiß nicht, wie ich dieses Problem lösen soll. Irgendwelche Ideen?

Danke fürs Helfen.

Antwort1

Bemerkungen:

  • \thepagekann alles sein, römische Zahlen, komplexe Seitenzahlen ( 1-2), … Erwartet jedoch \ifoddnur eine arabische Zahl. Besser ist die Verwendung des Zählerwertes \value{page}.

  • Die Ausgaberoutine wird als asynchron bezeichnet. Daher \ifoddist zum Zeitpunkt der Ausgabe nicht klar, was auf den Seiten erscheinen wird. Viel sicherer ist die Platzierung am Anfang einer Seite.

  • Viele Dokumentklassen bieten Optionen twosideund Befehle \cleardoublepage. KOMA-Script-Klassen bieten beispielsweise viele Optionen und Befehle. Außerdem beginnt ein Kapitel normalerweise mit, \cleardoublepagewenn twosidedies angegeben ist.

Für die Standardklassen \cleardoublepagekann neu definiert werden, um leere Kopf- und Fußzeilen für leere Seiten festzulegen:

\makeatletter
\renewcommand*{\cleardoublepage}{%
  \clearpage % output floats if necessary
  % new page starts here
  \if@twoside
    \ifodd\value{page}%
    \else
      \begingroup
        \pagestyle{empty}%
        \hbox{}\newpage
        \if@twocolumn
          \hbox{}\newpage
        \fi
      \endgroup
    \fi
  \fi
}
\makeatother

verwandte Informationen