如果标题上没有显示文本,则删除标题行

如果标题上没有显示文本,则删除标题行

我是新来的,我遇到了一个问题,尽管使用了 Google 和 Co,但我自己还是无法解决。

到目前为止,我创建了一个标题,它由双面文档左侧的当前章节名称和右侧页面上的节名称以及标题分隔线组成。

下面的代码显示了使用的 KomaOptions\usepackage{scrlayer-scrpage}

\KOMAoptions{automark
    headsepline=true,   % header line
    footsepline=false,          % footer line
    cleardoublepage=plain,  % set empty pages to style 'plain'
    plainheadsepline=false, % activate header line for plain pages
    plainfootsepline=false} % activate footer line for plain pages


\pagestyle{scrheadings}
\clearscrheadfoot

\lehead{\headmark{}}
\rohead{\headmark{}}
\ofoot*{\pagemark}

但是,如果文档左页没有打印章节名称,该如何去掉页首分隔线呢?下面的图片可以说明这个问题。

第一个没问题,因为它至少包含一个部分名称。

完美的

第二张图,打印头分离线。如何去除它?

不完美

这里是 MWE

\documentclass[twoside]{scrbook}

\usepackage{lipsum}
\usepackage[automark]{scrlayer-scrpage} % Koma header and footer package

\KOMAoptions{headsepline=true,  % header line
    footsepline=false,          % footer line
    cleardoublepage=plain,  % set empty pages to style 'plain'
    plainheadsepline=false, % activate header line for plain pages
    plainfootsepline=false} % activate footer line for plain pages


\pagestyle{scrheadings}
\clearscrheadfoot

\lehead{\headmark{}}
\rohead{\headmark{}}
\ofoot*{\pagemark}


\begin{document}
\chapter{Test}
\lipsum
\lipsum
\chapter{Anhang}
\lipsum
\section{Infos}
\lipsum
\end{document}

答案1

下面检查\headmark宽度是否为 0pt,如果是,则将颜色更改headsepline为白色:

\documentclass[twoside]{scrbook}

\usepackage[automark]{scrlayer-scrpage}
\usepackage{xcolor}

\KOMAoptions{%
    headsepline=true,   % header line
    footsepline=false,          % footer line
    cleardoublepage=plain,  % set empty pages to style 'plain'
    plainheadsepline=false, % activate header line for plain pages
    plainfootsepline=false} % activate footer line for plain pages


\pagestyle{scrheadings}
\clearscrheadfoot

\newcommand*{\specialheadmark}{%
    \setbox0\hbox{\headmark}%
    \ifdim\wd0=0pt\relax%
        \global\setkomafont{headsepline}{\color{white}}%
    \else%
        \global\setkomafont{headsepline}{\color{black}}%
    \fi%
    \unhbox0%
}

\lehead{\specialheadmark}
\rohead{\specialheadmark}
\ofoot*{\pagemark}

\usepackage{blindtext}


\begin{document}
\blinddocument
\chapter{Foo}
\clearpage
\blindtext
\clearpage
\blindtext
\clearpage
\blindtext
\end{document}

第 6 和 7 页:

在此处输入图片描述

答案2

以下是另一个建议,headsepline即在页面\headmark为空时禁用该功能:

\documentclass[twoside]{scrbook}
\usepackage[automark]{scrlayer-scrpage}% sets pagestyle scrheadings automatically

\KOMAoptions{headsepline=true}
\AddToLayerPageStyleOptions{scrheadings}
  {oninit={% will be excecuted whenever the output of the layers is initialized
    \ifstr{\headmark}{}{\KOMAoptions{headsepline=false}}{}%
  }}

\clearpairofpagestyles

\ohead{\headmark}
\ofoot*{\pagemark}

\usepackage{blindtext}% only for dummy text
\begin{document}
\blinddocument
\chapter{Foo}
\Blindtext[20]
\blinddocument
\end{document}

请注意\clearscrheadfoot是过时软件包的命令scrpage2。它仅出于兼容性原因才起作用。我已将其替换为\clearpairofpagestyles

相关内容