如果页面以章节或节开始,是否有办法隐藏 \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}
会将章节页面的页面样式从 更改plain
为scrheadings
。然后,您可以调整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}
你的第二个愿望完全不寻常,因为章节不像章节那样有突出显示的标题。我猜很难自动知道某个章节是否开始新的一页。