includefoot nur für Kapitelseiten

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


Bananarama
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: So 22. Feb 2015, 11:35

Beitrag von Bananarama »

Noch eine abschließende Frage:

Wie stell ich nun sicher, dass mir dieses Layout erhalten bleibt? LaTeX nicht mehr updaten? Oder gibts noch eine weitere Lösung?

Besserwisser

Beitrag von Besserwisser »

Man könnte bei dem Patch, natürlich einfach einen String-Vergleich verwenden, der vor dem Vergleich expandiert, beispielsweise das von KOMA-Script mitgelieferte \ifstr:
\documentclass[a4paper,11pt,twoside,openright,pdftex]{scrbook}
\usepackage[showframe]{geometry}
\geometry{a4paper,left=1.0in,right=1.0in,top=1.0in,bottom=1.0in,
   includehead,
%includefoot
}

\usepackage{etoolbox}
%\patchcmd{\chapter}
% {\thispagestyle{\chapterpagestyle}}
% {\thispagestyle{\chapterpagestyle}\enlargethispage{-5cm}}%was auch immer
% {\message{patching chapter}}
% {\message{patching chapter failed!!}}
%
\apptocmd\thispagestyle{%
 \ifstr{#1}{plain}{\enlargethispage{-5cm}}{}}
 {\message{patching thispagestyle}}
 {{\message{patching thispagestyle failed!!}}}
 
 

 
\usepackage{blindtext}
\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
\cfoot[\pagemark]{}
\addtokomafont{pagenumber}{\small\scshape}

\begin{document}

\chapter{Minimalbeispiel}
\Blindtext
\Blindtext
\section{Kleiner Test}
\Blindtext

\end{document}
So hat man das Problem nicht, dass es eine Rolle spielt, wie tief das Argument von \thispagestyle in Makros verpackt ist. Patchen bedeutet aber immer, dass man das Risiko eingeht, dass es irgendwann nicht mehr funktioniert, weil man sich auf Interna verlässt.

Außerdem hat das Patchen von \thispagestyle mit dem Vergleich auf Seitenstil plain gleich zwei Probleme. Zum einen werden dadurch nicht Kapitelanfangsseiten verkürzt, sondern Seiten mit dem Seitenstil plain. Ändert man den Seitenstil von Kapitelanfangsseiten, dann muss man den Patch ändern. Das könnte man ändern, indem man auf den Stil von Kapitelanfangsseiten prüft:
\apptocmd\thispagestyle{%
 \ifstr{#1}{\chapterpagestyle}{\enlargethispage{-5cm}}{}}
 {\message{patching thispagestyle}}
 {{\message{patching thispagestyle failed!!}}}
Das hat außerdem den Vorteil, dass wenn man Alias-Seitenstile nutzt, wie sie von dem von Dir verwendeten scrlayer-scrpage bereitgestellt werden, tatsächlich auf den Seitenstil geprüft wird, der für Kapitelanfangsseiten an \thispagestyle übergeben wird, aber andere Namen für denselben Seitenstil ignoriert. Warum ist das ein Vorteil? Dazu komme ich jetzt.

Es ja noch das zweite Problem, dass u. U. nicht nur Kapitelanfangsseiten diesen Seitenstil (im Beispiel plain) verwenden. Wenn du irgend eine andere Seite hast, die aus irgend einem Grund denselben Seitenstil per \thispagestyle gesetzt hat, dann wird diese ebenfalls verkürzt. Wenn die Verkürzung also wirklich nur für die Kapitelanfangsseiten gelten soll und man über den Seitenstil patchen will, dann wäre es in der Tat geschickt, einen Alias-Seitenstil für Kapitelanfänge zu definieren, der wirklich nur für Kapitelanfänge verwendet wird:
\documentclass[a4paper,11pt,twoside,openright,pdftex]{scrbook}
\usepackage[showframe]{geometry}
\geometry{a4paper,left=1.0in,right=1.0in,top=1.0in,bottom=1.0in,
   includehead,
%includefoot
}

\usepackage{etoolbox}
%\patchcmd{\chapter}
% {\thispagestyle{\chapterpagestyle}}
% {\thispagestyle{\chapterpagestyle}\enlargethispage{-5cm}}%was auch immer
% {\message{patching chapter}}
% {\message{patching chapter failed!!}}
%
\apptocmd\thispagestyle{%
 \ifstr{#1}{\chapterpagestyle}{\enlargethispage{-5cm}}{}}
 {\message{patching thispagestyle}}
 {{\message{patching thispagestyle failed!!}}}

\usepackage{mwe} 
\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
\cfoot[\pagemark]{}
\addtokomafont{pagenumber}{\small\scshape}

\DeclarePageStyleAlias{chapter}{plain}
\renewcommand*{\chapterpagestyle}{chapter}

\begin{document}

\chapter{Minimalbeispiel}
\Blindtext
\Blindtext
\section{Kleiner Test}
\Blindtext

\clearpage
Ich habe hier eine Seite auf der aus irgendwelchen Gründen ebenfalls
Seitenstil \texttt{plain} verwendet wird, aber die nicht verkürzt werden soll.
\thispagestyle{plain}
\lipsum[1-5]
\blindtext

\end{document}
Alternativ – und das ist der Weg, den ich gehen würde – könnte man sich vom Seitenstil lösen und tatsächlich Kapitelanfangsseiten patchen:
\documentclass[a4paper,11pt,twoside,openright,pdftex]{scrbook}
\usepackage[showframe]{geometry}
\geometry{a4paper,left=1.0in,right=1.0in,top=1.0in,bottom=1.0in,
   includehead,
%includefoot
}

\usepackage{etoolbox}
\apptocmd\chapterheadendvskip{\enlargethispage{-5cm}}
 {\message{patching chapter starts}}
 {{\message{patching chapter starts failed!!}}}

\usepackage{mwe} 
\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
\cfoot[\pagemark]{}
\addtokomafont{pagenumber}{\small\scshape}

\begin{document}

\chapter{Minimalbeispiel}
\Blindtext
\Blindtext
\section{Kleiner Test}
\Blindtext

\clearpage
Ich habe hier eine Seite auf der aus irgendwelchen Gründen ebenfalls
Seitenstil \texttt{plain} verwendet wird, aber die nicht verkürzt werden soll.
\thispagestyle{plain}
\lipsum[1-5]
\blindtext

\end{document}
Bei diesem Patch ist nur eines zu beachten: Neuerdings erlaubt KOMA-Script weitere Gliederungsbefehle im Stil chapter zu definieren. Wenn man das macht, dann sind auch diese von dem Patch betroffen. Ich gehe aber davon aus, dass das dann tatsächlich auch gewünscht ist.

Antworten