保持右侧标记清晰直到章节开始

保持右侧标记清晰直到章节开始

我希望将章节标题放在单面文档的左上角,将节标题放在右上角。只有当该面确实有一个节时,右上角才会填充。我的问题可以通过此 MWE 重现:

\documentclass{scrreprt}

\usepackage{lipsum}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\automark[section]{chapter}

\ihead[\leftmark]{\leftmark}
\chead{}
\ohead{\rightmark}

\begin{document}
\chapter{chapter}
\lipsum \lipsum

\section{section}
\lipsum

\end{document} 

\ohead{\rightmark}是有点故意为之,因为我不希望章节标题出现在新章节的第一页。

真正的问题出现在第 2 页,页眉显示为“1. 章节.... 1. 章节”。我怎样才能使右上角空白?

抱歉,问题的标题可能不太好,但如果我能说得更清楚一些,谷歌可能会帮助解决这个问题......

答案1

请注意scrpage2已贬值。后继者是scrlayer-scrpage

您可以\ifstrscrbase包中使用:

\ohead{\ifstr{\leftmark}{\rightmark}{}{\rightmark}}

包裹scrbase由 KOMA-Script 类加载,命令在 KOMA-Script 文档中有说明scrguien.pdf

\ifstr{<string>}{<string>}{<then instructions>}{<else instructions>}

两个<string>参数都会被展开,然后进行比较。如果展开相同,则<then instructions>执行,否则执行<else instructions>

这也适用于目录或\addchap\addsec

\documentclass{scrreprt}
\usepackage{blindtext}

\usepackage[autooneside=false]{scrlayer-scrpage}
\automark[section]{chapter}
\clearpairofpagestyles
\ihead[\leftmark]{\leftmark}
\ohead{\ifstr{\leftmark}{\rightmark}{}{\rightmark}}

\begin{document}
\tableofcontents

\chapter{chapter}
\Blindtext[10]
\section{section}
\Blindtext

\addchap{chapter}
\Blindtext[10]
\addsec{section}
\Blindtext

\Blinddocument\Blinddocument\Blinddocument
\Blinddocument\Blinddocument\Blinddocument
\end{document}

\ihead注意新版本中有KOMA-Script 版本 3.14允许使用\ihead*{\leftmark}而不是\ihead[\leftmark]{\leftmark}。不幸的是,此版本尚未在 CTAN 上推出。


被贬低的建议scrpage2

\documentclass{scrreprt}
\usepackage{blindtext}

\usepackage{scrpage2}
\automark[section]{chapter}
\pagestyle{scrheadings}
\clearscrheadfoot
\ihead[\leftmark]{\leftmark}
\ohead{\ifstr{\leftmark}{\rightmark}{}{\rightmark}}

\begin{document}
\tableofcontents

\chapter{chapter}
\Blindtext[10]
\section{section}
\Blindtext

\addchap{chapter}
\Blindtext[10]
\addsec{section}
\Blindtext

\Blinddocument\Blinddocument\Blinddocument
\Blinddocument\Blinddocument\Blinddocument
\end{document}

答案2

使用您当前的设置,只需修补要调用的文档的开头\chaptermark A并仅使用左侧标记即可;保持右侧标记为空:BD\@mkboth

\usepackage{etoolbox}
\makeatletter
\AtBeginDocument{%
  \patchcmd{\chaptermark}% <cmd>
    {\@mkboth}% <search>
    {\chaptermkboth}% <replace>
    {}{}% <success><failure>
  }
\newcommand{\chaptermkboth}[2]{\@mkboth{#1}{}}
\makeatother

\@mkbothinside还有其他用途\chaptermark,但在这种情况下,第一个用途似乎是最重要的。

在此处输入图片描述

\documentclass{scrreprt}

\usepackage{lipsum,etoolbox}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\automark[section]{chapter}

\ihead[\leftmark]{\leftmark}
\chead{}
\ohead{\rightmark}

\makeatletter
\AtBeginDocument{%
  \patchcmd{\chaptermark}% <cmd>
    {\@mkboth}% <search>
    {\chaptermkboth}% <replace>
    {}{}% <success><failure>
  }
\newcommand{\chaptermkboth}[2]{\@mkboth{#1}{}}
\makeatother

\begin{document}

\chapter{chapter}
\lipsum \lipsum

\section{section}
\lipsum

\end{document}

相关内容