scrpage2:标题的三个“标记”

scrpage2:标题的三个“标记”

据我所知,该\automark命令 ( scrpage2package) 只能标记两种不同的“标题类型”(例如节和章)。我正在寻找一种方法来标记额外的“标题”(例如部分)以将其用于标题中。

例如,用法如下:

\documentclass{scrbook}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\automark[section]{chapter}
\ihead{\leftmark}
\ohead{\rightmark}
\ifoot{Display part title here}

\begin{document}
    \part{Test}
    \chapter{Test 2}
    \section{Test 3}
\end{document}

有人知道有自动方法可以做到这一点吗?在此先感谢大家的帮助!

答案1

这是一个简单的补丁:我们添加到\@part存储在当前部分标题中的代码中\theparttitle。您还可以在任何地方\parttitle{whatever}(可能带有空参数)更改页脚。

\documentclass{scrbook}
\usepackage{scrpage2}

\usepackage{etoolbox}
\makeatletter
\apptocmd{\@part}{\parttitle{#2}}{}{}
\def\parttitle#1{\gdef\theparttitle{#1}}
\def\theparttitle{} % initialization
\makeatother

\pagestyle{scrheadings}
\clearscrheadfoot
\automark[section]{chapter}
\ihead{\leftmark}
\ohead{\rightmark}
\ifoot[\theparttitle]{\theparttitle} % on both sides of a spread, just for the example

\begin{document}
\part{Test}
\chapter{Test 2}
\section{Test 3}
\end{document}

enter image description here

答案2

这里还有另一个建议,没有etoolbox和没有\makeatletter ... \makeatother:每个 KOMA-Script 类scrartclscrreprtscrbook定义命令\partmark。因此我可以重新定义这个命令来设置一个新的定义标记。

\automark[section]{chapter}
\newmarks\currentpart
\renewcommand\partmark[1]{%
  \marks\currentpart{\ifnumbered{part}{\partname~\thepart\autodot\enskip}{}#1}}
\newcommand\partinheadfoot{\firstmarks\currentpart}

请注意,您必须\automark在重新定义之前进行设置\partmark,因为\automark会重置\...mark命令。但也有一个带星号的版本,它只会更改其参数的“级别”部分的行为。因此,以下也是可能的:

\newmarks\currentpart
\renewcommand\partmark[1]{%
  \marks\currentpart{\ifnumbered{part}{\partname~\thepart\autodot\enskip}{}#1}}
\newcommand\partinheadfoot{\firstmarks\currentpart}
\automark*[section]{chapter}

现在我可以part使用

\ifoot*{\partinheadfoot}

enter image description here

代码:

\documentclass{scrbook}
\usepackage{scrlayer-scrpage}
\automark[section]{chapter}
\newmarks\currentpart
\renewcommand\partmark[1]{%
  \marks\currentpart{\ifnumbered{part}{\partname~\thepart\autodot\enskip}{}#1}}
\newcommand\partinheadfoot{\firstmarks\currentpart}

\clearpairofpagestyles
\ihead{\leftmark}
\ohead{\rightmark}
\ifoot*{\partinheadfoot}
\ofoot*{\pagemark}

\renewcommand\partpagestyle{empty}
\usepackage{blindtext}% for dummy text
\begin{document}
\tableofcontents
\part{First Test (\KOMAScriptVersion)}
\blinddocument
\part{Second Test}
\blinddocument
\end{document}

相关内容