Stellen Sie sich ein Dokument mit einigen ganzseitigen Floats vor. Diesen Float-Seiten haben Sie den empty
Seitenstil zugewiesen, da Sie es für unnötig und störend hielten, auf diesen Seiten die vollständigen, ausführlichen Überschriften beizubehalten, die Sie auf den normalen Textseiten verwenden.
Eine Konsequenz davon ist allerdings, dass der Float nun im Verhältnis zum Satzspiegel der Textseiten etwas zu tief platziert erscheint. Mit den ~zwei zusätzlichen Zeilen, die durch das Weglassen der Kopfzeilen auf den Floatseiten verfügbar geworden sind, ist es ziemlich merkwürdig, dass die Oberkante des Floats auf der ersten Zeile des Textkörpers (auf den Textseiten) ausgerichtet ist:
Sie möchten den Satzspiegel (auf Float-Seiten) so ändern, dass er so hoch ist wie die Fläche, die von Textkörper und Kopfzeilen eingenommen wird. Denn es ist dieser letztgenannte Bereich (zumindest wenn unsere Kopfzeile lang genug ist und eine richtige Textzeile bildet), den wir visuell als „den“ Satzspiegel wahrnehmen (daher die headinclude
Option, siehe scrguide.pdf, Kapitel 2).
Was koma-script uns ermöglicht, ist, den Textbereich mitten im Dokument zu ändern. Mit diesem Code-Schnipsel:
\KOMAoptions{
footinclude=false,
headinclude=false
}
\recalctypearea
... können wir zwischen einem Satzspiegel, der die Kopfzeilen enthält, und einem, der sie nicht enthält, hin- und herschalten. In der zweiten Hälfte meines MWE erhalten wir damit so ziemlich den gewünschten Effekt auf der Float-Seite, aber das ist natürlich noch lange keine Lösung, denn die Frage bleibt:
Wie können wir auf sinnvolle und robuste Weise automatisch einen Satzspiegelwechsel auslösen, wenn ein ganzseitiger Float aufgerufen wird?
\documentclass[12pt,DIV=9]{scrartcl}
\usepackage{blindtext,floatpag}
\usepackage[automark]{scrlayer-scrpage}
%include header in type area calculation
\KOMAoptions{
footinclude=false,
headinclude=true
}
\recalctypearea
%setup headers/footers
\pagestyle{scrheadings}
\clearscrheadings
\ihead{\headmark}
\ohead{\thepage}
%make sure figure starts at top of text area
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
%no headers/footers on float pages
\floatpagestyle{empty}
\begin{document}
\section{Text with regular type area}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with regular typearea; no headings, float could be taller (using the space taken by the headers}
\end{figure}%
\Blindtext
%changing type area in mid-document. Not very elegant
\KOMAoptions{
footinclude=false,
headinclude=false
}
\recalctypearea
\section{Text with taller type area (no headers)}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with tall typearea, as it should be; no headings, float uses the space taken by the headers}
\end{figure}%
\Blindtext
\end{document}
PS
Es gibt natürlich auch einen Brute-Force-Ansatz. Wenn wir die @fptop
Änderung sowieso verwenden (was ich tue), können wir diesen Wert auch auf einen negativen Wert setzen, wie zum Beispiel:
\makeatletter
\setlength{\@fptop}{-2\baselineskip}
\makeatother
Dies scheint zu funktionieren und macht sogar die Nutzung der Funktionen von Koma-Script überflüssig. Es handelt sich also um eine klassenunabhängige Lösung. Aber es ist sehr brutal.
Antwort1
Diese Lösung verwendet \afterpage
und \newgeometry
zum Aktivieren der Abbildung auf der gesamten Seite und nicht umgekehrt.
Hinweis: Das Einfügen der Beschriftung in eine Savebox außerhalb von dient \afterpage
der Gewährleistung einer korrekten Nummerierung der Beschriftungen (Overkill).
\documentclass[12pt,DIV=9]{scrartcl}
\usepackage{blindtext,floatpag}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{geometry}
\usepackage{afterpage}
\newsavebox{\tempbox}
%include header in type area calculation
\KOMAoptions{
footinclude=false,
headinclude=true
}
\recalctypearea
%setup headers/footers
\pagestyle{scrheadings}
\clearscrheadings
\ihead{\headmark}
\ohead{\thepage}
%make sure figure starts at top of text area
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother
%no headers/footers on float pages
\floatpagestyle{empty}
\begin{document}
\section{Text with regular type area}
\Blindtext
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\caption{Float with regular typearea; no headings, float could be taller (using the space taken by the headers}
\end{figure}%
\Blindtext
\section{Text with taller type area (no headers)}
\Blindtext
\setbox\tempbox=\vbox{\expandafter\def\csname @captype\endcsname{figure}% increment caption counter NOW
\caption{Float with tall typearea, as it should be; no headings, float uses the space taken by the headers}%
}
\afterpage{\newgeometry{noheadfoot}% automatic \clearpage
\begin{figure}[p]
\rule{\textwidth}{\textheight}
\unvbox\tempbox
\end{figure}%
\restoregeometry}
\Blindtext
\end{document}