目录在页脚和页眉中显示章节名称

目录在页脚和页眉中显示章节名称

有一个book文档类,我试图实现不同的每章第一页的页脚/页眉。

基于这个答案说明,我定义了以下自定义样式,使用titlesec

\newpagestyle{pageHeaderStyle}{%
  \setfoot
  {}
  {\vcenteredhbox{\confidentialClause}}
  {\thepage}
}

然后使用以下命令更改章节首页样式:

\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
      \thispagestyle{pageHeaderStyle}
      \global\@topnum\z@
      \@afterindentfalse
      \secdef\@chapter\@schapter} 

每一章都运行良好,除了目录,在页眉和页脚处输出CONTENTS,如下所示:

在此处输入图片描述

而预期的行为(在其余章节中运行良好)是:

在此处输入图片描述

答案1

\thispagestyle这是一种在命令中“动态”调整的方法,\chapter方法是将其替换为\@currentthispagestyle,其设置为\SetCurrentPageStyle

我使用过fancyhdr(因为我更熟悉该包)并且tcolorbox(因为我不知道它\vcenteredhbox来自哪里)

由于\@currentthispagestyle默认为plain,因此 ToC 将使用普通样式。

\documentclass{book}

\usepackage{xpatch}
\usepackage{xparse}
\usepackage[most]{tcolorbox}

\tcbset{confbox/.style={nobeforeafter,
    enhanced jigsaw,
    sharp corners, 
    boxrule=2pt,
    colframe=red,
    leftrule=0pt,
    rightrule=0pt,
    colback=white,
    colupper=red,
    fontupper=\large\bfseries}
}

\usepackage[headheight=35pt]{geometry}
\usepackage{blindtext}
\usepackage{fancyhdr}


\newcommand{\confidentialClause}{CONFIDENTIAL}


%Define a page style
\fancypagestyle{confidentialheader}{%
  \renewcommand{\headrulewidth}{0pt}
  \fancyhf{}
  \fancyhead[R]{\tcbox[confbox]{\confidentialClause}}
  \fancyfoot[C]{\thepage}
}
\makeatletter

\newcommand{\@currentthispagestyle}{plain}

\NewDocumentCommand{\SetCurrentPageStyle}{om}{%
  \cleardoublepage%
  \IfValueTF{#1}{%
    \renewcommand{\@currentthispagestyle}{#1}%
  }{%
    \renewcommand{\@currentthispagestyle}{#2}%
  }%
  \pagestyle{#2}%
}

% Perform a patch to change 'plain' to `\@currentthispagestyle`
\AtBeginDocument{%
   \xpatchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{\@currentthispagestyle}}{}{}
}



\makeatother


\begin{document}
\tableofcontents
\SetCurrentPageStyle{confidentialheader}
\chapter{Foo}
\blindtext[20]

\end{document}

在此处输入图片描述

相关内容