Fancyhdr 包和页码问题

Fancyhdr 包和页码问题

我正在使用该fancyhdr软件包,但在页码方面遇到了很大的问题。确实,每个新标题都会显示页面,但是我没有页码了,这是软件包提供的代码,我希望有人可以向我解释哪里出了问题:

\usepackage{fancyhdr}
\lhead[\rm\thepage]{\fancyplain{}{\sl{\rightmark}}}
\rhead[\fancyplain{}{\sl{\leftmark}}]{\rm\thepage}
\chead{}
\lfoot{}
\rfoot{}
\cfoot{}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\btypeout{\thechapter\space #1}\markboth{\@chapapp\ \thechapter\ #1}{\@chapapp\ \thechapter\ #1}}  
\renewcommand{\sectionmark}[1]{} \renewcommand{\subsectionmark}[1]{} \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else \hbox{} \thispagestyle{empty}
\newpage
\if@twocolumn\hbox{}
\newpage\fi\fi\fi}

答案1

fancyhdr该代码比您的代码更高效、更易于维护,因为它使用了预期工作的“现代”语法(或者按照我对您的代码的解释)。

\documentclass{book}

\usepackage{fancyhdr}
\usepackage{emptypage}  % avoids the need to redefine \cleardoublepage
\usepackage{kantlipsum} % to provide mock text for the example

%%% set up the headers
\pagestyle{fancy}
\fancyhf{} % clear all fields
\fancyhead[RO,LE]{\thepage} % the page number goes on the outer part
\fancyhead[LO,RE]{\slshape\leftmark} % the chapter title in the inner part

%% change how \chaptermark sets the marks
\makeatletter % we need to use \@chapapp
\renewcommand{\chaptermark}[1]{%
  \typeout{\thechapter\space #1}%
  \markboth{\@chapapp\ \thechapter\ #1}{}}
\makeatother
\renewcommand{\sectionmark}[1]{}
%\renewcommand{\subsectionmark}[1]{} % useless

\begin{document}

\mainmatter

\chapter{Xyz}
\kant[1-30]

\chapter{A new one}
\kant[31-60]

\end{document}

相关内容