titleps 的页面样式在章节开始前插入得太早了

titleps 的页面样式在章节开始前插入得太早了

下面的 MCE 和图像显示 titleps 的页面样式在章节开始之前插入得太早:头部规则以“测试”页面样式开始,该样式应仅在第 1 章结束后应用,因此也应在第 2 章开始时应用。

\documentclass{book}
\usepackage{lipsum}
\usepackage[pagestyles]{titlesec}
\usepackage{hyperref}
%
\newpagestyle{main}[]{%
  \sethead
  [\thepage][][\chaptertitlename\space\thechapter. \chaptertitle]
  {\ifthesection{\thesection\space\,\sectiontitle}
  {\chaptertitlename\space\thechapter. \chaptertitle}}{}{\thepage}
}
%
\newpagestyle{test}[]{%
  \sethead
  [\thepage][][\chaptertitlename\space\thechapter. \chaptertitle]
  {\ifthesection{\thesection\space\,\sectiontitle}
  {\chaptertitlename\space\thechapter. \chaptertitle}}{}{\thepage}
  \headrule
}
%
\begin{document}
\tableofcontents
\pagestyle{main}
\chapter{Main}
\lipsum[1-25]
\pagestyle{test}
\chapter{Test}
\lipsum[1-25]
\end{document}

输出如下: 在此处输入图片描述

如下图所示,\cleardoublepage在开头添加\newpagestyle{test}并没有帮助: 在此处输入图片描述

答案1

添加\cleardoublepage页面样式定义没有帮助,因为页面样式是在输出过程中应用的。

在页面样式改变之前添加\cleardoublepage;您可能需要定义一个\switchpagestyle命令:

\makeatletter
\newcommand{\switchpagestyle}{%
  \@ifstar{\clearpage\pagestyle}{\cleardoublepage\pagestyle}}
\makeatother

这样你就可以输入

\switchpagestyle{test}

如果你还想要一个\cleardoublepage

\switchpagestyle*{test}

如果只\clearpage需要a。

相关内容