如何在不破坏 \sectionmark 的情况下重置 \markright?

如何在不破坏 \sectionmark 的情况下重置 \markright?

我将其用于scrbook收集论文。每章都有不同的作者,并使用自定义命令进行排版。我希望标题在章节和作者之间交替(而不是任何部分)——所以我重新定义\markright并在之后使用\rightmarkinscrlayer-scrpage\cohead

以下是 MWE:

\documentclass[a4paper,10pt,headings=optiontohead,version=last,openany]{scrbook}
\author{Immanuel Kant}
\title{Doubling section titles}
\usepackage{kantlipsum}\date{}
%% make individual papers chapters
\usepackage{suffix}
\renewcommand{\sectionmark}{}%prevent rewriting \markright 
\renewcommand{\subsectionmark}{}%prevent rewriting \markright 
\newcommand{\chapterauthor}[1]{\authortoc{#1}\printchapterauthor{#1}\markright{#1}}% setting \markright to author

\makeatletter
\newcommand{\printchapterauthor}[1]{%
 {\parindent0pt\vspace*{-10pt}%
 \linespread{1.1}\large\scshape#1%
 \par\nobreak\vspace*{30pt}}
 \@afterheading%
}
\newcommand{\authortoc}[1]{%
 \addtocontents{toc}{\vskip-10pt}%
 \addtocontents{toc}{%
 \protect\contentsline{chapter}%
 {\hskip1.3em\mdseries\scshape\protect\scriptsize#1}{}{}}
 \addtocontents{toc}{\vskip5pt}%
}
\makeatother
%% put authors in headers
%% http://tex.stackexchange.com/a/228219/12934
\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\renewcommand{\chaptermarkformat}{}
 \cohead{\small{\rightmark}}
 \cehead{\small{\leftmark}}
 \cfoot*{\pagemark}

\begin{document}
\maketitle
\chapter{Erst}
\chapterauthor{Auguste Comte}
\kant[2]
\section{Quite positive}
\kant[3]
\end{document}

由于摆弄 ,发生了一些事情\sectionmark,并且部分标题打印了两次。我的问题是:是什么原因导致标题重复以及如何避免这种情况?感谢您的建议!

答案1

\sectionmark和都\subsectionmark应该采取一个论点:

\renewcommand{\sectionmark}[1]{}%prevent rewriting \markright 
\renewcommand{\subsectionmark}[1]{}%prevent rewriting \markright 

\section命令产生

\sectionmark{<title>}

如果您重新定义\sectionmark为没有参数,{<title>}则不会删除标记。

答案2

因为您正在加载scrlayer-scrpage:删除和的(不必要的)重新定义\sectionmark\subsectionmark使用的可能性scrlayer-scrpage

\usepackage{scrlayer-scrpage}
\automark{chapter}% -> section does not rewrite \markright
\clearpairofpagestyles
\renewcommand{\chaptermarkformat}{}
\addtokomafont{pagehead}{\small}
\chead{\headmark}% -> \rightmark on odd pages, \leftmark on even pages
\cfoot*{\pagemark}

然后,章节位于偶数页的页眉中,而您设置为参数的任何内容都\markright位于奇数页的页眉中。

以下是简短的 MWE:

\documentclass[openany]{scrbook}
%\documentclass[openany]{book}
\usepackage{kantlipsum}
\newcommand{\chapterauthor}[1]{\markright{#1}}
%
\usepackage{scrlayer-scrpage}
\automark{chapter}
\clearpairofpagestyles
\renewcommand{\chaptermarkformat}{}
\addtokomafont{pagehead}{\small}
\chead{\headmark}
\cfoot*{\pagemark}
%
\begin{document}
\tableofcontents
\chapter{Erst}
\chapterauthor{Auguste Comte}
\kant[2]
\section{Quite positive}
\kant[1-10]
\chapter{Next}
\chapterauthor{Other author}
\section{Quite positive}
\subsection{Test}
\kant[1-10]
\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容