假设您有一份双面文档。偶数页的页眉包含当前章节的标题;奇数页的页眉包含当前节的标题。没有什么特别的,使用 scr* 类和 scrpage2 很容易完成。
\documentclass[paper=a5,headinclude=true,pagesize,twoside=true]{scrreprt}
\usepackage[automark]{scrpage2}
\usepackage{blindtext}
\pagestyle{scrheadings}
\begin{document}
\chapter{Chapter one}
%\renewcommand*{\sectionmarkformat}{} %removes section number
%\sectionmark{\thechapter\enskip Chapter one} %sets odd header
\Blindtext\Blindtext\Blindtext\Blindtext
\section{Section one}
\Blindtext\Blindtext\Blindtext\Blindtext
\end{document}
在章节的介绍段落中,事情变得困难起来。假设您在章节开头有三页或更多页的文字,然后才\section
开始第一章,我经常这样做,以便为读者提供一些指示。现在,在上述设置中,奇数页的页眉将保持空白,这是您所期望的,但我想改变它——因此奇数页的页眉将包含章节的标题,直到有可用的部分。
我知道如何手动修改\sectionmark
,我可以用它来插入任何我想要的内容。请参阅 MWE 中的两行注释。但当然,您通常想要一个更自动化的解决方案。例如,有没有办法“抓取”当前章节标题并将其传递给\sectionmark
?我试过了
\sectionmark{\leftmark},
我也试过,但无济于事。提前谢谢!
答案1
简单的想法:设置\chaptermark
为写入两个标头。下一次调用\section
将再次设置其标头。因此类似于
\renewcommand*\chaptermark[1]{%
\markboth
{\MakeMarkcase{\chaptermarkformat#1}}
{\MakeMarkcase{\chaptermarkformat#1}}}
应该做。
答案2
scrpage2
用其后继者替换scrlayer-scrpage
并使用新的带星号的版本\automark
:
\documentclass[paper=a5,headinclude=true,pagesize,twoside=true]{scrreprt}
\usepackage{scrlayer-scrpage}% sets pagestyle scrheadings automatically
\automark[chapter]{chapter}
\automark*[section]{}
\usepackage{blindtext}
\begin{document}
\chapter{Chapter one}
\Blindtext[20]
\section{Section one}
\Blindtext[20]
\end{document}