scrlayer-scrpage 的标头存在问题

scrlayer-scrpage 的标头存在问题

我不知怎么地错过了一些标题,这不是由于页面样式错误。以下是一个例子:

\documentclass[twoside]{scrartcl}
\usepackage[headsepline]{scrlayer-scrpage}
\automark[subsection]{section}
\pagestyle{scrheadings}
\usepackage{lipsum}
\begin{document}
\title{Test with \KOMAScript}
\author{John Doe}
\maketitle
\lipsum[5-9]
\section{Section 1}
\subsection{Sub 1}
\lipsum[5]
\subsection{Sub 2}
\lipsum[5-7]
\section{Section 2}
\subsection{Sub 3}
\lipsum[5]
\subsection{Sub 4}
\lipsum[1-10]
\subsection{Sub 5}
\lipsum[5]
\section{Section 3}
\subsection{Sub 6}
\lipsum[1]
\end{document}

我只是想在页眉中交替显示子节和节。而且大多数时候它都能正常工作。不知何故,如果我开始一个新节(如示例中的第 2 节),它会忽略该子节。其他时候,它工作正常(第 3 节)。我不知道为什么。页面样式不简单,这真的让我很烦。当通过 将新节移到另一个页面时\newpage,它工作正常。

任何想法都值得赞赏。干杯!

答案1

在您的示例中\section,并\subsection设置一个二分标记:\section清除标记的右侧部分,并将左侧部分设置为当前部分条目。\subsection将右侧部分设置为当前小节,并保存左侧部分不变。

标记有三种类型:\botmark是页面上的最后一个有效标记、\firstmark是页面上设置的第一个标记以及\topmark是最后一页的内容\botmark。如果页面上没有新的标记\botmark,并且\firstmark的内容与 相同\topmark

请注意\leftmark使用\botmark\rightmark使用\firstmark

在您的示例中,第 3 页上的第一个标记设置为,\section{Section 2}因此该页上第一个标记的右侧部分为空。第 5 页上的第一个标记设置为,\subsection{Sub 5}因此该第一个标记的右侧部分包含此子部分。

现在你可以尝试类似

\documentclass[twoside]{scrartcl}
\usepackage[headsepline,automark]{scrlayer-scrpage}
\lehead{\leftmark}
\rohead{\rightbotmark}
\usepackage{lipsum}
\begin{document}
\title{Test with \KOMAScript}
\author{John Doe}
\maketitle
\lipsum[5-9]
\section{Section 1}
\subsection{Sub 1}
\lipsum[5]
\subsection{Sub 2}
\lipsum[5-7]
\section{Section 2}
\subsection{Sub 3}
\lipsum[5]
\subsection{Sub 4}
\lipsum[1-10]
\subsection{Sub 5}
\lipsum[5]
\section{Section 3}
\subsection{Sub 6}
\lipsum[1]
\end{document}

因此,页面上设置的最后一个标记的右侧部分位于奇数页的页眉中。但如果这个最后一个标记是通过命令设置的,\section您又会遇到同样的问题。

您可以切换到

\rohead{\ifstr{\rightmark}{}{\rightbotmark}{\rightmark}}

\section但是,在具有 a和 no命令的奇数页上,页眉仍然为空\subsection

另一种可能性是使用

\documentclass[twoside]{scrartcl}
\usepackage[headsepline]{scrlayer-scrpage}
\automark[section]{section}
\automark*[subsection]{}
\usepackage{lipsum}
\begin{document}
\title{Test with \KOMAScript}
\author{John Doe}
\maketitle
\lipsum[5-9]
\section{Section 1}
\subsection{Sub 1}
\lipsum[5]
\subsection{Sub 2}
\lipsum[5-7]
\section{Section 2}
\subsection{Sub 3}
\lipsum[5]
\subsection{Sub 4}
\lipsum[1-10]
\subsection{Sub 5}
\lipsum[5]
\section{Section 3}
\subsection{Sub 6}
\lipsum[1]
\end{document}

然后,节名将出现在奇数页的页眉中,例如示例中的第 3 页,其中第一个标记由命令设置\section

相关内容