我使用markboth
命令修改图表列表的页眉,如下面的代码所示。我希望页眉在页面的装订面上显示“图表列表”(我使用双面页)。我的图表列表有 3 页,第一页没有页眉(如所需),第二页在左右两侧显示“图表列表”,第三页在页面的装订面上显示“图表列表”(如所需)。我不明白为什么markboth
函数只适用于其中一页,而不适用于两页。有人能帮忙吗?
\documentclass[12pt,twoside,openright]{report}
\usepackage[english]{babel}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{{\chaptername}\ \thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\fancyhf{}
\fancyhead[LO,RE]{\leftmark}
\fancyhead[LE,RO]{\rightmark}
\fancyfoot[RO,LE]{\thepage}
\fancypagestyle{plain}{
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[RO,LE]{\thepage}}
\begin{document}
\clearpage{\pagestyle{empty}\cleardoublepage}
\pagenumbering{roman}
\tableofcontents
\markboth{Contents}{}
\listoffigures
\addcontentsline{toc}{chapter}{\listfigurename}
\markboth{List of Figures}{}
\listoftables
\addcontentsline{toc}{chapter}{\listtablename}
\markboth{List of Tables}{}
\end{document}
答案1
阶级report
问题
\@mkboth{\MakeUppercase\listfigurename}{\Make\listfigurename}
这是导致您出现问题的主要原因。\addcontentsline
无论如何,您应该早点发出。一种方法是进行修改\listoffigures
并\listoftables
执行所需的操作。
我还建议使用emptypage
以避免出现翻筋斗的情况\thispagestyle{empty}
。还请注意 的设置\headheight
,这是必需的;fancyhdr
日志文件会告诉您是否必须设置它以及将其设置为什么值。
\documentclass[12pt,twoside,openright]{report}
\usepackage[english]{babel}
\usepackage{emptypage}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\setlength{\headheight}{14.5pt}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{{\chaptername}\ \thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\fancyhf{}
\fancyhead[LO,RE]{\leftmark}
\fancyhead[LE,RO]{\rightmark}
\fancyfoot[RO,LE]{\thepage}
\fancypagestyle{plain}{
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[RO,LE]{\thepage}}
\makeatletter
%% patch \listoffigures not to issue \@mkboth but \markboth
%% and to issue \addcontentsline
\patchcmd{\listoffigures}
{\@mkboth{\MakeUppercase\listfigurename}{\MakeUppercase\listfigurename}}
{\addcontentsline{toc}{chapter}{\listfigurename}\markboth{\listfigurename}{}}
{}{}
\patchcmd{\listoftables}
{\@mkboth{\MakeUppercase\listtablename}{\MakeUppercase\listtablename}}
{\addcontentsline{toc}{chapter}{\listtablename}\markboth{\listtablename}{}}
{}{}
\makeatother
\begin{document}
\pagenumbering{roman}
\tableofcontents
\markboth{Contents}{}
\listoffigures
\listoftables
\cleardoublepage
\pagenumbering{arabic}
\chapter{X}
% create a bunch of items to fill pages in the lists of tables and figures
\def\z{
\begin{figure}[htp]
\caption{A}
\end{figure}
zz
\begin{table}[htp]
\caption{B}
\end{table}
zz
}
\z\z\z\z\z\z\z\z\z\clearpage
\z\z\z\z\z\z\z\z\z\clearpage
\z\z\z\z\z\z\z\z\z\clearpage
\z\z\z\z\z\z\z\z\z
\end{document}