Ich habe folgendes Beispiel:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{scrlayer-scrpage}
\usepackage{lipsum}

\cfoot{Seite \thepage\ von \pageref{LastPage}}

\begin{document}
%\lipsum[1]  % keine Seitennummerierung
\lipsum   % Seitennummerierung
\label{LastPage}
\end{document}

Nun möchte ich, dass die Seitennummerierung nur dann gedruckt wird, wenn der Text auch mehr als eine Seite umfasst. Ich hab dies zunächst wie folgt probiert:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{scrlayer-scrpage}
\usepackage{lipsum}
\usepackage{ifthen}

\ifthenelse{\pageref{LastPage}>1}%
  {\cfoot{Seite \thepage\ von \pageref{LastPage}}}%
  {\cfoot{}}

\begin{document}
%\lipsum[1]  % keine Seitennummerierung
\lipsum   % Seitennummerierung
\label{LastPage}
\end{document}

Dies funktioniert nicht, es wird nun grundsätzlich keine Seitennummerierung mehr gedruckt.

Wenn ich die if-Abfrage aber statt in die Präambel in den Body schreibe, dann klappt es:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{scrlayer-scrpage}
\usepackage{lipsum}
\usepackage{ifthen}

\begin{document}
\ifthenelse{\pageref{LastPage}>1}%
  {\cfoot{Seite \thepage\ von \pageref{LastPage}}}%
  {\cfoot{}}
%\lipsum[1]  % keine Seitennummerierung
\lipsum   % Seitennummerierung
\label{LastPage}
\end{document}

Kann mir jemand bitte erklären, woran dies liegt und ob es andere Probleme/Seiteneffekte geben kann, wenn man \cfoot u.ä. Befehle in den Body statt in die Präambel schreibt?

Gibt es andere (einfache) Alternativen für eine optionale Seitennummerierung?

gefragt 18 Jun '15, 11:10

tom75's gravatar image

tom75
1.9k1445
Akzeptiert: 83%

bearbeitet 18 Jun '15, 11:42

saputello's gravatar image

saputello
18.4k22352


\pageref arbeitet mit Labels. Labels werden zwischen den LaTeX-Läufen in der aux-Datei gespeichert. Die aux-Datei wird während \begin{document} geladen. Daher liefert \pageref erst nach \begin{document} tatsächlich ein Seiten-Label.

Allerdings ist nicht gesagt, dass \pageref tatsächlich eine Zahl liefert. Es könnte beispielsweise auch eine Box mit einer Zahl liefern. Es ist daher etwas riskant eine Zahle mit \pageref{LastPage} zu vergleichen. Mit Hilfe des Pakets refcount gibt es allerdings eine sichere Möglichkeit. Durch geringe Umformung der Logik, kann man außerdem die gesamte Logik in die Präambel verschieben, also eine saubere Trennung von Form und Inhalt durchführen:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{scrlayer-scrpage}
\usepackage[ngerman]{babel}
\usepackage{refcount}
\usepackage{lipsum}
\usepackage{lastpage}
\cfoot{%
  \ifnum\getpagerefnumber{LastPage}>1
    Seite \thepage\ von \pageref{LastPage}%
  \fi
}
\begin{document}
\lipsum[1]  % keine Seitennummerierung
%\lipsum   % Seitennummerierung
\end{document}

Um noch die Nebenfrage zu beantworten: Es ist durchaus erlaubt \cfoot innerhalb des Dokuments zu verwenden.

Permanenter link

beantwortet 18 Jun '15, 11:31

saputello's gravatar image

saputello
18.4k22352

bearbeitet 18 Jun '15, 11:34

Vielen Dank, @saputello, für die Erklärung und den Alternativvorschlag!

(20 Jun '15, 07:12) tom75
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×20
×13
×10
×3

Frage gestellt: 18 Jun '15, 11:10

Frage wurde angeschaut: 1,694 Mal

Zuletzt aktualisiert: 20 Jun '15, 07:12