2
1

Das folgende Dokument hat das Problem, dass vor dem Ausgeben des Textes durch den \AtEndDocument-Befehl ein unerwünschter Seitenumbruch eingefügt wird.

Öffne in Overleaf
\documentclass{article}
\usepackage{blindtext}
\usepackage{scrlayer-scrpage}
\usepackage{lastpage}

\cofoot{Seite \pagemark{} von \pageref{LastPage}}

\AtEndDocument{Text am Ende des Dokuments (soll nicht auf einer neuen Seite stehen)}

\begin{document}
\blindtext
\end{document}

Das Problem wird offensichtlich vom Paket lastpage verursacht. Wenn ich lastpage erst nach dem \AtEndDocument-Befehl lade, funktioniert zwar alles wie gewünscht, doch ist dies in der Praxis nicht möglich, da meine Realsituation komplexer ist: Der Seitenfuß wird von einer eigenen Klasse gesetzt, der Code in \AtEndDocument erst im konkreten Dokument selber (genauer gesagt in einer weiteren Klasse, die auf der ersten aufsetzt, was hier aber irrelevant sein dürfte). Das sieht dann etwa so aus:

Öffne in Overleaf
\begin{filecontents}{meineklasse.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{meineklasse}

\LoadClass{article}

\usepackage{scrlayer-scrpage}
\usepackage{lastpage}

\cofoot{Seite \pagemark{} von \pageref{LastPage}}
\end{filecontents}
\documentclass{meineklasse}
\usepackage{blindtext}

\AtEndDocument{Text am Ende des Dokuments (soll nicht auf einer neuen Seite stehen)}

\begin{document}
\blindtext
\end{document}

Wie kann der unerwünschte Seitenumbruch unterdrückt werden?

gefragt 19 Mär '19, 22:38

Cletus's gravatar image

Cletus
1.4k14257
Akzeptiert-Rate: 83%


Das ist ein altbekanntes Problem mit Paketen, die via \AtEndDocument explizit ein \clearpage ausführen. Sowohl scrlfile als auch atveryend bieten dafür seit vielen Jahren Alternativlösungen, nämlich die Ausführung von Code nach dem letzten \clearpage innerhalb von \AtEndDocument. Leider gibt es noch immer Pakete wie lastpage, die davon keinen Gebrauch machen, obwohl sie es gut gebrauchen konnten. Eventuell würde es helfen, wenn möglichst viele Anwender, das Problem dem jeweiligen Paketautoren melden.

Jedenfalls ist die Lösung einfach: Verzicht auf lastpage und Implementierung der benötigten Funktionalität mit Hilfe von einem der beiden genannten Pakete. Da scrlfile auch \protected@write innerhalb von \AtEndDocument durch eine \immediate-Version ersetzt, ist es damit recht einfach:

Öffne in Overleaf
\begin{filecontents}{meineklasse.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{meineklasse}

\LoadClass{article}

\RequirePackage{scrlayer-scrpage}% In Klassen verwendet man \RequirePackage
                                 % statt \usepackage.
\BeforeClosingMainAux{%
  \addtocounter{page}{-1}% Nach der letzten Seite, also Zähler korrigieren.
  \label{LastPage}%
}
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{\pagename~\thepage~\ofname~\pageref{LastPage}}}}
\providecaptionname{english}{\pagename}{Page}
\providecaptionname{english}{\ofname}{of}
\providecaptionname{ngerman,german,nswiss,swiss,naustrian,austrian}{\pagename}{Seite}
\providecaptionname{ngerman,german,nswiss,swiss,naustrian,austrian}{\ofname}{von}
\end{filecontents}
\documentclass{meineklasse}
\usepackage{blindtext}

\AtEndDocument{Text am Ende des Dokuments (soll nicht auf einer neuen Seite stehen)}

\begin{document}
\blindtext
\end{document}

Wie du siehst, ist jetzt ggf. noch nicht einmal der letzte Absatz beendet, bevor der Code aus \AtEndDocument ausgeführt wird.

Permanenter link

beantwortet 20 Mär '19, 08:07

Ijon%20Tichy's gravatar image

Ijon Tichy
9.4k31227
Akzeptiert-Rate: 54%

bearbeitet 20 Mär '19, 08:11

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×17
×1
×1

gestellte Frage: 19 Mär '19, 22:38

Frage wurde gesehen: 1,064 Mal

zuletzt geändert: 20 Mär '19, 08:11