使用 Fancyhdr 定义新的 \pagestyle

使用 Fancyhdr 定义新的 \pagestyle

使用花式高清包中,下面的代码完全符合我对页眉和页脚的要求。我使用空的页面样式,重新定义清楚的页面样式,并定义一个想要页面样式。

你定义的方式有些问题想要pagestyle 让我很困扰(没有括号表示定义的开始和结束)。因此,作为一个实验,我使用了\fancypagestyle定义一个愛情页面样式与想要页面样式。来自答案,我以为我走在正确的轨道上。

然而,在\frontmatter下面的部分,如果你注释掉\pagestyle{花式}并取消注释\pagestyle{我的Fancy},结果是不同的。在\主要内容,您不再能从页脚中获取章节信息(即,它应该出现在除章节首页以外的所有非空页面上)。毫无疑问,我遗漏了一些显而易见的东西,但我被难住了。

问题:我需要对我的代码进行哪些更改才能使用愛情页面样式作为想要页面样式?

\documentclass[11pt]{book}
\raggedbottom

\usepackage{lipsum}
\title{Some Book Name}
\author{Henry A. Smith}

\usepackage{emptypage}
\usepackage{fancyhdr} 
\pagestyle{fancy}
\fancyhf{}                             
\renewcommand{\headrulewidth}{0pt}     
\renewcommand{\footrulewidth}{0.2pt}   
\fancyfoot[RO, LE] {Page \thepage}
\makeatletter\fancyfoot[CE,CO]{\if@mainmatter \leftmark\fi}\makeatother

\fancypagestyle{plain}{ 
    \fancyhf{}           
    \renewcommand{\headrulewidth}{0pt}    
    \renewcommand{\footrulewidth}{0.2pt}   
    \fancyfoot[RO, LE] {Page \thepage}}

\fancypagestyle{MyFancy}{%              
    \fancyhf{}%                            
    \renewcommand{\headrulewidth}{0pt}%    
    \renewcommand{\footrulewidth}{0.2pt}%
    \fancyfoot[RO, LE] {Page \thepage}%
    \makeatletter\fancyfoot[CE,CO]{\if@mainmatter \leftmark\fi}\makeatother}

\begin{document}

\frontmatter
\pagestyle{empty}
\maketitle
\cleardoublepage
Copyright 2018, Henry A. Smith
\chapter{Acknowledgments}
\pagestyle{fancy}    % COMMENT THIS OUT
%\pagestyle{MyFancy} % UNCOMMENT THIS
\lipsum[1-5]
\chapter{Preface}
\lipsum[1-5]

\mainmatter
\chapter{The First Chapter}
\lipsum[1-10]
\chapter{The Second Chapter}
\lipsum[1-20]

\backmatter
\chapter{BackMatter Chapter}
\lipsum[1-10]

\end{document}

答案1

无关fancyhdr

{\makeatletter\fancyfoot[CE,CO]{\if@mainmatter \leftmark\fi}\makeatother} 

无法工作,将其\make...移出论点,只在序言中用一个接\makeatletter一个\makeatother地定义所有需要的定义。@

它无法工作的原因与\verb另一个命令的参数无法工作的原因相同。正如您所看到的,参数被扫描,而@不是字母,因此参数与

{\makeatletter\fancyfoot[CE,CO]{\if @mainmatter \leftmark\fi}\makeatother}

\makeatletter直到该参数被执行用过的到那时已经太晚了,catcode 的变化对已经标记的文本没有影响,它们只会影响从文件读取字符时创建的标记。

相关内容