如何使用 scrlayer-scrpage 获取 scrartcl 文档标题中的章节和小节标题?

如何使用 scrlayer-scrpage 获取 scrartcl 文档标题中的章节和小节标题?

在以下单面文档中,如何获取KOMA-Script 类section中左标题和subsection右标题的标题?scrartclscrlayer-scrpage

\documentclass{scrartcl}

\usepackage[automark]{scrlayer-scrpage}
\automark[subsection]{section}
\ohead{\leftmark}
\ihead{\rightmark}
\chead{}
\cfoot{\pagemark}

\usepackage{blindtext}

\begin{document}
\section{Section}
\subsection{Subsection}
\blindtext[3]
\subsection{Subsection}
\blindtext[3]

\section{Section}
\subsection{Subsection}
\blindtext[3]
\subsection{Subsection}
\blindtext[3]
\end{document}

答案1

例如:

\documentclass{scrartcl}

\usepackage[autooneside=false]{scrlayer-scrpage}
\automark[subsection]{section}
\ohead{\rightbotmark}
\ihead{\leftmark}
\chead{}
\cfoot{\pagemark}% Note: I would recommend to use `\cfoot*` instead of `\cfoot` here.

\usepackage{blindtext}

\begin{document}
\section{Section}
\subsection{Subsection}
\blindtext[3]
\subsection{Subsection}
\blindtext[3]

\section{Section}
\subsection{Subsection}
\blindtext[3]
\subsection{Subsection}
\blindtext[3]
\end{document}

在此处输入图片描述autooneside=false需要 选项,因为(参见scrguiden-en,第 17.6 节):

在单面打印中,通常只需要较高级别的章节提供连续标题。默认选项autooneside与此行为相对应。

\rightbotmark被使用,因为\rightmark\rightfirstmark(参见scrguide-en,第 17.6 节)并且\sectionmark使用\markboth。因此,同一页上的\sectiona 之前的每个\subsection也将支配右标记。另一个解决方案可能是使用如下构造:

\ohead{\Ifstr{\leftmark}{\rightmark}{\rightbotmark}{\rightmark}}

或者重新定义\sectionmark,例如:

\renewcommand*{\sectionmark}[1]{\markleft{\sectionmarkformat #1}}

有时甚至可以用来代替\automark[section]{subsection}\automark[subsection]{section}但通常情况下则不然。

注意:不同建议的结果在细节上有所不同,例如\section和(上一个或下一个)\subsection是否在同一页面或不在同一页面。

相关内容