komascript/scrpage2:段落中没有 \section 的奇数页眉(双面文档)

komascript/scrpage2:段落中没有 \section 的奇数页眉(双面文档)

假设您有一份双面文档。偶数页的页眉包含当前章节的标题;奇数页的页眉包含当前节的标题。没有什么特别的,使用 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}

相关内容