我正在写一份文档,我已经将其设置为在每个偶数页上,页眉显示当前章节,在每个奇数页上,页眉显示当前节。但是,如何根据当前页面是否已经属于某个节,在页眉中显示当前章节或当前节?
\documentclass[a4paper, 12pt, twoside]{scrreprt}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[headsepline]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles
\rohead{\chaptername :\ \rightmark}
\lehead{\chaptername :\ \leftmark}
\automark[section]{chapter}
\ofoot[\pagemark]{\pagemark}
\begin{document}
\chapter{1}
\blindtext
\chapter{2}
\section{2.1}
\blindtext
\chapter{3}
\blindtext
\section{3.1}
\blindtext
\end{document}
答案1
您可以使用附加星号版本\automark*
:
\documentclass[a4paper, 12pt, twoside]{scrreprt}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[headsepline]{scrlayer-scrpage}
\automark[chapter]{chapter}
\automark*[section]{}% Add odd side marks without removing previous marks
\renewcommand*{\chaptermarkformat}{\chapapp~\thechapter:\enskip}% Put "chapter" oder "appendix" in front of the chapter number in running head
\clearpairofpagestyles
\ohead{\headmark}
\ofoot*{\pagemark}
\begin{document}
\chapter{Erstes Kapitel}
\Blindtext\Blindtext
\chapter{Zweites Kapitel}
\section{Erster Abschnitt des zweiten Kapitels}
\Blindtext\Blindtext
\chapter{Drittes Kapitel}
\Blindtext\Blindtext
\section{Erster Abschnitt des dritten Kapitels}
\Blindtext\Blindtext
\end{document}
第一个\automark[chapter]{chapter}
激活自动运行头并定义\chaptermark
设置左和右标记并重置\sectionmark
等。第二个\automark*[section]{}
仅定义\sectionmark
设置右标记(奇数语法:左参数 → 右标记;右参数 → 左标记)。因此,您在左页和右页上都有章节,直到您有一个将\section
右页的运行头更改为节。
答案2
您应该重新定义 \sectionmark,以便它也设置左标记。在 KOMA 语法中,例如像这样(简单的语法\renewcommand\sectionmark[1]{\markboth{#1}{#1}}
也应该有效,但会丢失一些 KOMA 内部结构):
\documentclass[a4paper, 12pt, twoside]{scrreprt}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[headsepline]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles
\renewcommand\chaptermarkformat{Kapitel~}
\rohead{\leftmark}
\lehead{\leftmark}
\automark{chapter}
\automark*{section}
\ofoot[\pagemark]{\pagemark}
\begin{document}
\chapter{Erstes Kapitel}
\Blindtext\Blindtext
\chapter{Zweites Kapitel}
\section{Erster Abschnitt des zweiten Kapitels}
\Blindtext\Blindtext
\chapter{Drittes Kapitel}
\Blindtext\Blindtext
\section{Erster Abschnitt des dritten Kapitels}
\Blindtext\Blindtext
\end{document}
答案3
您可以检查是否\rightmark
扩展为可打印的内容(使用这个答案)。
\rohead{\setbox0=\hbox{\rightmark\unskip}\ifdim\wd0=0pt\chaptername\ \leftmark\else Abschnitt \rightmark\fi}
\lehead{\chaptername\ \leftmark}
\documentclass[a4paper, 12pt, twoside]{scrreprt}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[headsepline]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles
\rohead{\setbox0=\hbox{\rightmark\unskip}\ifdim\wd0=0pt\chaptername\ \leftmark\else Abschnitt \rightmark\fi}
\lehead{\chaptername\ \leftmark}
\automark[section]{chapter}
\ofoot[\pagemark]{\pagemark}
\begin{document}
\chapter{Erstes Kapitel}
\Blindtext\Blindtext
\chapter{Zweites Kapitel}
\section{Erster Abschnitt des zweiten Kapitels}
\Blindtext\Blindtext
\chapter{Drittes Kapitel}
\Blindtext\Blindtext
\section{Erster Abschnitt des dritten Kapitels}
\Blindtext\Blindtext
\end{document}