markboth 未正确修改图片列表标题

markboth 未正确修改图片列表标题

我使用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}

在此处输入图片描述

相关内容