fancyhdr 和目录很难使用

fancyhdr 和目录很难使用

前提:我是 fancyhdr 的新手。我定义了以下 fancy 样式:

\lhead{}
\chead{\slshape\leftmark}
\rhead{}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}

在每个章节除第一页之外的所有页面中正确地绘制章节号和名称、顶线、底线和页码。

因此,我按照以下方式重新定义了普通样式:

\fancypagestyle{plain}{
\lhead{}
\chead{}
\rhead{}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.4pt}}

正确绘制了每章首页的顶线、底线和页码(注意:普通样式缺少花式样式的章节号和名称)

现在,我的目录出现了问题。目录的第一页是普通样式(没有章节编号和名称),但后面的页面是花哨样式(有章节编号和名称)。我该如何将普通样式应用于目录中的所有页面?

答案1

由于您正在使用该类book,我推测前言中的所有内容都应属于plain页面样式:

\documentclass[a4paper,oneside]{book}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\usepackage{lipsum} % just for the example

\pagestyle{fancy}
\fancypagestyle{main}{%
  \fancyhf{}%
  \fancyhead[C]{\slshape\leftmark}%
  \fancyfoot[C]{\thepage}%
  \renewcommand{\headrulewidth}{0.4pt}%
  \renewcommand{\footrulewidth}{0.4pt}%
}
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyfoot[C]{\thepage}%
  \renewcommand{\headrulewidth}{0pt}%
  \renewcommand{\footrulewidth}{0.4pt}%
}

\appto\frontmatter{\pagestyle{plain}}
\appto\mainmatter{\pagestyle{main}}

\begin{document}

\frontmatter
\tableofcontents

\mainmatter

%%% fill with some mock text
\def\testsec{\section{B}\lipsum}
\def\test{\chapter{A}
  \testsec
  \testsec
  \testsec
  \testsec
  \testsec
  \testsec
  \testsec
  \testsec
  \testsec
  \testsec
}
\test
\test
\test
\test
\test
\test
\test
\test
\end{document}

然而,我不建议遵循这条规则。

答案2

在实际文档的序言中尝试一下

\usepackage{etoc}
\renewcommand{\etocaftertitlehook}{\pagestyle{plain}}
\renewcommand{\etocaftertochook}{\thispagestyle{plain}}

(编辑替换\pagestyle上面\thispagestyle的行)

梅威瑟:

\documentclass{book}

\usepackage{fancyhdr}
\lhead{}
\chead{\slshape\leftmark}
\rhead{}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\fancypagestyle{plain}{
\lhead{}
\chead{}
\rhead{}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.4pt}}


\usepackage{etoc}
\renewcommand{\etocaftertitlehook}{\pagestyle{plain}}
\renewcommand{\etocaftertochook}{\thispagestyle{plain}}

\begin{document}

\tableofcontents

\chapter{ONE}

\section {A}

\chapter{TW0}

\section {B}

\newcount\cnta
\loop
\chapter{\the\cnta}

\ifnum\cnta<50
\advance\cnta 1
\repeat
\end{document}

相关内容