页眉中的节或章

页眉中的节或章

我正在写一份文档,我已经将其设置为在每个偶数页上,页眉显示当前章节,在每个奇数页上,页眉显示当前节。但是,如何根据当前页面是否已经属于某个节,在页眉中显示当前章节或当前节?

\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}      

enter image description here enter image description here enter image description here

\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}

相关内容