如果页面以标题开头,则不显示 \headmark

如果页面以标题开头,则不显示 \headmark

如果页面以章节或节开始,是否有办法隐藏 \headmark,但仍显示页眉中的图形?

\documentclass[12pt,DIV=10,ngerman,headings=normal,listof=totoc,bibliography=totoc,index=totoc]{scrreprt}
\usepackage{blindtext}
\usepackage[demo]{graphicx} 
\usepackage[automark,headsepline=1pt]{scrlayer-scrpage}
\clearpairofpagestyles

\automark{chapter}
\automark*{section}

\ihead{\headmark}
\rohead{\raisebox{0pt}[\ht\strutbox]{\includegraphics[width=3cm,height=1cm]{Test}}} 
\ofoot{\pagemark} 

\renewcommand*{\chapterpagestyle}{scrheadings}

\begin{document} 
\chapter{Chapter ONE}
\blindtext[5]
\section{Section ONE}
\blindtext[5]
\blindtext[1]
\section{Section TWO}
\blindtext[5]
\end{document}

示例第 1 页和第 4 页的标头应该被隐藏。

答案1

对于章节页面,可以通过以适当的方式设置plain页面样式轻松完成此操作。删除重新定义\chapterpagestyle并使用带星号的变体来设置您想要影响plain页面的页眉和页脚。

\documentclass[12pt, DIV=10, headings=normal]{scrreprt}

\usepackage{blindtext}
\usepackage[demo]{graphicx}

\usepackage[automark,headsepline=1pt]{scrlayer-scrpage}

%\automark{chapter} <- Doesn't do anything for one-sided documents.
\automark*{section}

\clearpairofpagestyles
\ihead{\headmark}
\rohead*{\raisebox{0pt}[\ht\strutbox]{\includegraphics[width=3cm,height=1cm]{Test}}} 
\ofoot*{\pagemark}

\begin{document}

\chapter{Chapter ONE}
\blindtext[5]

\section{Section ONE}
\blindtext[5]
\blindtext[1]

\section{Section TWO}
\blindtext[5]

\end{document}

现在,你希望对在新页面上开始的 s 执行相同的操作\section是不可取的,因为有时在部分开始的页面上找到标题(当它不在页面开头时),有时却找不到,这相当不一致。我建议不要这样做。

但是,如果你坚持的话,当然可以这样做,例如像这样。我在每个部分标题之前和之后使用标签来检测分页符,并如果是的话将页面添加到列表中(实际上是该部分之前的页面,但我们不要纠结于此)。在每一页上,我都会检查当前页面是否在该列表中,\thispagestyle如果是,则使用。

\documentclass[12pt, DIV=10, headings=normal]{scrreprt}

\usepackage{blindtext}
\usepackage[demo]{graphicx}

\usepackage[automark,headsepline=1pt]{scrlayer-scrpage}

\usepackage{refcount}
\usepackage{bophook}
\usepackage{etoolbox}

%\automark{chapter} <- Doesn't do anything for one-sided documents.
\automark*{section}

\clearpairofpagestyles
\ihead{\headmark}
\rohead*{\raisebox{0pt}[\ht\strutbox]{\includegraphics[width=3cm,height=1cm]{Test}}} 
\ofoot*{\pagemark}

\makeatletter
  \AtBeginPage{%
    \@maybe@current@page@plain
  }
  \def\@maybe@current@page@plain{%
    \begingroup
      \@check@if@current@page@plain
      \if@tempswa
        \thispagestyle{plain}%
      \fi
    \endgroup
  }
  \def\@check@if@current@page@plain{\@tempswafalse}
  \def\@check@if@ref@is@current@page@#1{%
    \ifnum\arabic{page}=\getpagerefnumber{#1}\relax
      \@tempswatrue
    \fi
  }
  \AddtoDoHook{heading/preinit/section}{\begingroup\advance\c@section 1\relax\label{before@section@\thesection}\endgroup}
  \AddtoDoHook{heading/endgroup/section}{%
    \label{at@section@\thesection}%
    \ifnum\getpagerefnumber{before@section@\thesection}<\getpagerefnumber{at@section@\thesection}\relax
      \xappto\@check@if@current@page@plain{\noexpand\@check@if@ref@is@current@page@{before@section@\thesection}}%
    \fi
  }
\makeatother

\begin{document}

\chapter{Chapter ONE}
\blindtext[5]

\section{Section ONE}
\blindtext[5]
\blindtext[1]

\section{Section TWO}
\blindtext[5]

\end{document}

答案2

章节页面解决方案:

删除\renewcommand*{\chapterpagestyle}{scrheadings}会将章节页面的页面样式从 更改plainscrheadings。然后,您可以调整plain样式添加选项plainheadsepline(如果普通页面上也应该有页眉分隔线)并使用带星号的命令\rohead*\ofoot*

\documentclass[12pt,DIV=10,ngerman,headings=normal,listof=totoc,bibliography=totoc,index=totoc]{scrreprt}
\usepackage{blindtext}
\usepackage[demo]{graphicx} 
\usepackage[automark,headsepline=1pt,
  plainheadsepline% <- head sepline also on plain pages
]{scrlayer-scrpage}
\clearpairofpagestyles

\automark{chapter}
\automark*{section}

\ihead{\headmark}
\rohead*{\raisebox{0pt}[\ht\strutbox]{\includegraphics[width=3cm,height=1cm]{Test}}}% * added
\ofoot*{\pagemark}% * added 

%\renewcommand*{\chapterpagestyle}{scrheadings}% <- remove this to use plain style for chapter pages

\begin{document} 
\chapter{Chapter ONE}
\blindtext[5]
\section{Section ONE}
\blindtext[5]
\blindtext[1]
\section{Section TWO}
\blindtext[5]
\end{document}

在此处输入图片描述


你的第二个愿望完全不寻常,因为章节不像章节那样有突出显示的标题。我猜很难自动知道某个章节是否开始新的一页。

相关内容