Es handelt sich um eine Folgefrage zu dieser Frage. Eine eigene Dokumentenklasse (Oberklasse) definiert – neben anderem, was hier unwichtig ist – eine bestimmte Darstellung der Seitenzahl im Fuß. Dabei wird auf die Nummer der letzten Seite zugegriffen, wie in der Antwort auf die vorausgehende Frage vorgeschlagen. Eine Unterklasse soll – wiederum neben diversen anderen Definitionen, die hier ausgelassen sind – nun zusätzlich dafür sorgen, dass eine Aufzählung mit Das Problem dabei ist, dass die Unterklasse plötzlich nicht mehr auf das Label Öffne in Overleaf
\begin{filecontents}{meine-oberklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{meine-oberklasse} \LoadClass{article} \RequirePackage{scrlayer-scrpage} \AtBeginDocument{\textbf{Anfangstext der Oberklasse}\par} \BeforeClosingMainAux{\addtocounter{page}{-1}\label{LastPage}} \cfoot{Seite \pagemark{} von \pageref{LastPage}} \end{filecontents} \begin{filecontents}{meine-unterklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{meine-unterklasse} \LoadClass{meine-oberklasse} \AtBeginDocument{Es folgt eine Aufzählung.\begin{itemize}} \AtEndDocument{\end{itemize}Die Aufzählung ist beendet.} \end{filecontents} \documentclass{meine-unterklasse} \usepackage{blindtext} \begin{document} \item \blindtext \end{document} gefragt 24 Mär '19, 00:14 Cletus |
Das Problem ist, dass Du in zweifacher Weise gegen die Regeln für
und
Auf Deutsch sagt beides, dass man Zum anderen ist es ein (mehr oder weniger) ungeschriebenes Gesetz, dass man niemals das gesamte Dokument per Behebt man in deinem Beispiel wenigst das letzte Problem: Öffne in Overleaf
\begin{filecontents}{meine-oberklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{meine-oberklasse} \LoadClass{article} \RequirePackage{scrlayer-scrpage} \AtBeginDocument{\textbf{Anfangstext der Oberklasse}\par} \BeforeClosingMainAux{\addtocounter{page}{-1}\label{LastPage}} \cfoot{Seite \pagemark{} von \pageref{LastPage}} \end{filecontents} \begin{filecontents}{meine-unterklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{meine-unterklasse} \LoadClass{meine-oberklasse} \AtBeginDocument{Es folgt eine Aufzählung.\itemize} \AtEndDocument{\enditemize Die Aufzählung ist beendet.} \end{filecontents} \documentclass{meine-unterklasse} \usepackage{blindtext} \begin{document} \item \blindtext \end{document} so funktioniert das Beispiel zwar, es ist aber noch immer ein Verstoß gegen die explizit dokumentierte Verwendung von Übrigens stellt das Paket Was dagegen funktionieren würde: Öffne in Overleaf
\begin{filecontents}{meine-oberklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{meine-oberklasse} \LoadClass{article} \RequirePackage{scrlayer-scrpage} \RequirePackage{etoolbox} \AfterEndPreamble{\textbf{Anfangstext der Oberklasse}\par} \BeforeClosingMainAux{\addtocounter{page}{-1}\label{LastPage}} \cfoot{Seite \pagemark{} von \pageref{LastPage}} \end{filecontents} \begin{filecontents}{meine-unterklasse.cls} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{meine-unterklasse} \LoadClass{meine-oberklasse} \AfterEndPreamble{Es folgt eine Aufzählung.\begin{itemize}} \pretocmd{\enddocument}{\end{itemize}Die Aufzählung ist beendet.}{}{} \end{filecontents} \documentclass{meine-unterklasse} \usepackage{blindtext} \begin{document} \item \blindtext \end{document} Hier wird die beantwortet 24 Mär '19, 11:40 gast3 |
Soweit ich das sehen kann, ist das Verhalten nicht den zwei Klassen anzulasten, sondern liegt darin begründet, dass durch
\begin{itemize}...\end{itemize}
in\AtBeginDocument
/\AtEndDocument
eine implizite Gruppe erstellt wird, die die Anwendung von\BeforeClosingMainAux
unterdrückt (das liegt an der Implementation des Befehls). Das grundsätzliche Problem lässt sich auch in https://gist.github.com/moewew/3133afd014037a87099be17b0be98928 reproduzieren (dort lässt es sich eventuell durch Herumschieben der Gruppe beheben, bei Deiner Anwendung ist das wohl nicht ganz so einfach).Es ist keine gute Idee, eine Gruppe um alles zu packen (
\begin{document}
/\end{document}
vermeidet das bewusst), verwende\itemize
/\enditemize
.