Sie sind hier

Kopfzeile verschwindet mit scrpage2 mit subfiles Paket

Hallo,

ich habe diese Frage bereits bei tex.stackexchange.com gestellt (siehe hier), jedoch keine Antwort bisher erhalten.

Das Problem ist folgendes: Werden mehrere TeX-Dateien mittels des subfiles Pakets eingebunden, verschwindet die Kopfzeile auf der letzten Seite der eingebundenen Datei, wobei scrpage2 verwendet wird. Bei Verwendung von fancyhdr hingegen, tritt dieses Phänomen nicht auf.

Minimalbeispiel:

Root.tex Datei:

\documentclass[a4paper]{scrartcl}
\usepackage{subfiles}
\usepackage{scrpage2}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
\clearscrheadfoot
\pagestyle{scrheadings}
 
\begin{document}
\subfile{test1.tex}\newpage
\subfile{test2.tex}
\end{document}

test1.tex und test2.tex Dateien (identischer Inhalt jeweils):

\documentclass[Root.tex]{subfiles}
\clearscrheadfoot
\chead[Test]{Test}
 
\begin{document}
\Blindtext
\Blindtext
\end{document}

Wie kann ich auch auf den letzten Seiten der eingebundenen Dateien eine Kopfzeile stehen haben?

Vielen Dank und Grüße
Rafael Wörner

Bild von Markus Kohm

Das Paket subfiles lädt die Dateien innerhalb einer Gruppe. Zusätzlich ist \begin{document}…\end{document} der Unterdateien dann auch noch eine Gruppe (im Gegensatz dazu ist es das bei normalen Dokumenten nicht). Da die Seite noch nicht ausgegeben ist, wenn die Gruppe endet, scrpage2 Änderungen aber nicht global vornimmt, wird die mit \chead vorgenommene Änderung deaktiviert, bevor die letzte Seite der geladenen Datei ausgegeben ist.

Ich halte das für ein grundsätzliches Problem von subfiles, wobei das nicht das einzige Problem ist. Wenn Du in einem Unterdokument nach \end{document} noch Code hast, dann wird der beim Einbinden als Unterdatei ebenfalls ausgeführt. Normalerweise wird aber Code nach \end{document} gerade nicht mehr ausgeführt. Du solltest dem Autor des Pakets folgende Änderung vorschlagen:

\begin{filecontents}{test1.tex}
\documentclass[Root.tex]{subfiles}
\clearscrheadfoot
\chead[Test]{Test}
 
\begin{document}
\Blindtext
\Blindtext
\end{document}
\end{filecontents}
\begin{filecontents}{test2.tex}
\documentclass[Root.tex]{subfiles}
\clearscrheadfoot
\chead[Test]{Test}
 
\begin{document}
\Blindtext
\Blindtext
\end{document}
\end{filecontents}
 
\documentclass[a4paper]{scrartcl}
\usepackage{subfiles}
 
\makeatletter
% \skip@preamble so definieren, dann weder die externe Datei noch
% \begin{document}…\end{document} in einer eigenen Gruppe stehen:
\renewcommand{\skip@preamble}{%
  \expandafter\def\expandafter\document\expandafter{%
    \expandafter\endgroup
    \expandafter\def\expandafter\document\expandafter{\document}%
  }%
  \expandafter\def\expandafter\enddocument\expandafter{%
    \expandafter\endinput
    \expandafter\def\expandafter\enddocument\expandafter{\enddocument}%
    \begingroup
    \edef\@currenvir{document}%
  }%
  \renewcommand{\documentclass}[2][subfiles]{}%
}
\renewcommand*{\subfile}[1]{\skip@preamble\input{#1}}
\makeatother
 
\usepackage{scrpage2}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
 
\clearscrheadfoot
\pagestyle{scrheadings}
 
\begin{document}
\subfile{test1.tex}\newpage
\subfile{test2.tex}
\end{document}

Wenn er den Patch nicht akzeptiert und Du selbst auch keinen in der Präambel haben willst, solltest Du einfach am Ende der Unterdateien ein \clearpage einfügen. Das darf sogar nach dem \end{document} stehen.

Das ganze ist also insbesondere kein Fehler von scrpage2.

BTW: Ich lese TSX nicht. Dafür reicht meine Zeit einfach nicht auch noch.

Danke für die schnelle Antwort.

Ich habe deinen Patch eingefügt. Das Kopfzeilen Problem ist damit behoben, jedoch ist ein anderes Problem aufgetaucht:
In den eingebundenen Dateien wird eine KOMAoption einer Datei (z. B. \KOMAoptions{fontsize=12pt}¹) nun auch auf die nachfolgend eingebundenen Dateien angewendet.

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)

Bild von Markus Kohm

Du musst Dich entscheiden, entweder sind die Unterdateien lokal wie bei den Original-Definitionen von subfile oder sie sind global wie mit meinen Änderungen. Mal so, mal so geht nicht. Wie Du im lokalen Fall dafür sorgen kannst, dass erst die Seite ausgegeben und dann die Datei beendet wird, habe ich Dir ja erklärt.


Wie Du im lokalen Fall dafür sorgen kannst, dass erst die Seite ausgegeben und dann die Datei beendet wird, habe ich Dir ja erklärt.

Nur damit ich richtig mitkomme: Damit meinst du die Möglichkeit mit \clearpage, oder?

Bild von Markus Kohm

Logisch.

Ok, vielen Dank für deine Hilfe.

Comments for "Kopfzeile verschwindet mit scrpage2 mit subfiles Paket" abonnieren