据我所知,该\automark
命令 ( scrpage2
package) 只能标记两种不同的“标题类型”(例如节和章)。我正在寻找一种方法来标记额外的“标题”(例如部分)以将其用于标题中。
例如,用法如下:
\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}
答案2
这里还有另一个建议,没有etoolbox
和没有\makeatletter ... \makeatother
:每个 KOMA-Script 类scrartcl
,scrreprt
和scrbook
定义命令\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}
代码:
\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}