如何仅在“plain.scrheadings”页面而非“scrheadings”页面中使用“geometry”的“includefoot”?

如何仅在“plain.scrheadings”页面而非“scrheadings”页面中使用“geometry”的“includefoot”?

我有以下布局:

\documentclass{scrbook}
\usepackage{blindtext}
\usepackage[left=1.9cm, right=1.9cm, bottom=2.23cm, top=2.23cm]{geometry}% specific requirements
\usepackage[markcase=noupper]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearscrheadfoot
\lohead{\headmark}
\rohead{\pagemark}
\lehead{\pagemark}
\rehead{\headmark}
\rofoot[\pagemark]{}
\setkomafont{pageheadfoot}{\normalfont}

\begin{document}
\chapter{Chapter heading}
\blindtext[18]
\end{document}

在以新章节开始的页面上(例如上面 MWE 中的第 1 页),我希望页面底部和页码之间的间距与除新章节开始的页面(例如 MWE 中的第 2 页)以外的页面上页面底部和文本之间的间距相同(2.23 厘米)。如果我使用设置includefootgeometry那么所有页面的空间都会调整,而不仅仅是底部有页码的页面...

因此,本质上,我需要的是类似includefootbut 的东西,它只在plain.scrheadings页面(新章节开始)上有效,而不在 scrheadings页面(其他页面)上有效。如果有比使用几何图形更好的方法,那很好,但我必须使用这些精确的边距和标题(页码在章节开始的页面底部,否则在页眉中)。

答案1

要缩短\textheight章节页面,您可以\enlargethispage按照@Ulrike Fischer 在评论中的建议使用。因此您可以修补\chapterlinesformat

\usepackage{xpatch}
\xapptocmd\chapterlinesformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}
\xapptocmd\chapterlineswithprefixformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}

如果您添加类选项等,它的补丁\chapterlineswithprefixformat也会起作用。chapterprefixappendixprefix

要在普通页面上移动页码,您可以移动页面样式的所有页脚层plain

\ForEachLayerOfPageStyle*{plain.scrheadings}{%
  \ifstrstart{#1}{plain.scrheadings.foot}
    {\ModifyLayer[addvoffset=-\footskip]{#1}}
    {}%
}

例子:

\documentclass{scrbook}
\usepackage{blindtext}
\usepackage[hmargin=1.9cm, vmargin=2.23cm% specific requirements
  , showframe% to show the page layout
]{geometry}

\usepackage{scrlayer-scrpage}% <- sets style `scrheadings` automatically
\clearpairofpagestyles% <- scrlayer-scrpage macro  
\ihead{\headmark}
\ohead{\pagemark}
\ofoot[\pagemark]{}

\ForEachLayerOfPageStyle*{plain.scrheadings}{%
  \ifstrstart{#1}{plain.scrheadings.foot}
    {\ModifyLayer[addvoffset=-\footskip]{#1}}
    {}%
}
\setkomafont{pageheadfoot}{\normalfont}

\usepackage{xpatch}
\xapptocmd\chapterlinesformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}
\xapptocmd\chapterlineswithprefixformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}

\begin{document}
\chapter{Chapter heading}
\blindtext[18]
\end{document}

结果:

在此处输入图片描述

但是,页脚会使用plain样式在所有页面上移动,而文本高度只会在章节页面上自动更改。

因此我建议仅为章节页面声明一种新的页面样式:

\documentclass{scrbook}
\usepackage{blindtext}
\usepackage[hmargin=1.9cm, vmargin=2.23cm% specific requirements
  , showframe% to show the page layout
]{geometry}

\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
\ofoot[\pagemark]{}
\setkomafont{pageheadfoot}{\normalfont}

\DeclareNewLayer[
  clone=plain.scrheadings.foot.odd,
  addvoffset=-\footskip,
]{chapterpage.foot.odd}

\DeclarePageStyleByLayers{chapterpage}{chapterpage.foot.odd}
\renewcommand\chapterpagestyle{chapterpage}

\usepackage{xpatch}
\xapptocmd\chapterlinesformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}
\xapptocmd\chapterlineswithprefixformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}

\begin{document}
\chapter{Chapter heading}
\blindtext[18]
\end{document}

如果其他具有样式的页面plain不应该获取页码:

\documentclass{scrbook}
\usepackage{blindtext}
\usepackage[hmargin=1.9cm, vmargin=2.23cm% specific requirements
  , showframe% to show the page layout
]{geometry}

\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
\setkomafont{pageheadfoot}{\normalfont}

\DeclareNewLayer[
  clone=plain.scrheadings.foot.odd,
  addvoffset=-\footskip,
  contents=\hfill\pagemark
]{chapterpage.foot.odd}

\DeclarePageStyleByLayers{chapterpage}{chapterpage.foot.odd}
\renewcommand\chapterpagestyle{chapterpage}

\usepackage{xpatch}
\xapptocmd\chapterlinesformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}
\xapptocmd\chapterlineswithprefixformat
  {\enlargethispage{-\footskip}}{}{\PatchFailed}

\begin{document}
\chapter{Chapter heading}
\blindtext[18]
\end{document}

结果和上面一样。

相关内容