我的书籍类文档仅在 LE 和 RO 页面上有章节标题,我也希望在目录页中也有相同的标题。我尝试使用 完全删除标题并\makeatletter \let\@mkboth\relax \makeatother
添加\fancyhead[LE,RO]{\leftmark}
,但这导致单词 Contents 以大写形式出现在目录标题旁边。下面给出了 MWE,并添加了我得到的图像:
\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{lipsum}% used to get dummy text
\begin{document}
\pagestyle{fancy}
\makeatletter
\let\@mkboth\relax
\makeatother
\tableofcontents%
\fancyhead[LE,RO]{\leftmark}
\cleardoublepage
\chapter{Chapter 1}
\section{Section 1.1}
\lipsum[1]% used to get dummy text
\cleardoublepage
\chapter{Chapter 2}
\section{Section 2.1}
\lipsum[2]% used to get dummy text
\chapter{Chapter 3}
\section{Section 3.1}
\lipsum[3]% used to get dummy text
\end{document}
任何指向解决方案的指示都值得赞赏。
答案1
编辑评论后:我想我终于明白你真正想要回答的问题是什么了。
我以前
fancyhdr
在页眉中显示章节和节标题。但是,对于目录页面,章节标题“CONTENTS”出现在页眉的两侧,即也作为节标题出现。我怎样才能将其从页眉的一侧删除?
答案很简单:用来\markright{}
清除页眉的“章节标题”部分。您可以通过将其包装到\addtocontents{toc}
(使其紧跟\markboth
在目录第一页的章节标题调用之后)和\AtBeginDocument
(使其位于目录中的第一个“条目”处)来实现此目的。
\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{lipsum}% used to get dummy text
\AtBeginDocument{\addtocontents{toc}{\protect\markboth{\textsl{CONTENTS}}{}}}
\begin{document}
\pagestyle{fancy}
\tableofcontents%
\cleardoublepage
\chapter{Chapter 1}
\section{Section 1.1}
\lipsum[1]% used to get dummy text
\cleardoublepage
\chapter{Chapter 2}
\section{Section 2.1}
\lipsum[2]% used to get dummy text
\chapter{Chapter 3}
\section{Section 3.1}
\lipsum[3]% used to get dummy text
\end{document}
旧答案:
无需人工干预,目录后续页面的默认页眉左右两侧均有大写字母“CONTENTS”。目录第一页没有任何页眉,其他所有章节的开头页也是如此。
\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{lipsum}% used to get dummy text
\begin{document}
\pagestyle{fancy}
\tableofcontents%
\cleardoublepage
\chapter{Chapter 1}
\section{Section 1.1}
\lipsum[1]% used to get dummy text
\cleardoublepage
\chapter{Chapter 2}
\section{Section 2.1}
\lipsum[2]% used to get dummy text
\chapter{Chapter 3}
\section{Section 3.1}
\lipsum[3]% used to get dummy text
\end{document}
要修改目录页眉中的内容,您必须调用,\markboth
这将覆盖目录标题中已经放入的内容。无需破解任何其他命令以不调用\markboth
或相关命令,因为这些宏的目的实际上是覆盖已经存在的内容。因此,您实际上只需要调用\markboth
后目录的章节标题和前第一个分页符,即最好紧接在章节标题之后。
灵感来自这个答案,我会将\markboth
对目录的调用添加为第一个条目(这样它会在章节标题后直接被调用)。为了确保它是第一个条目,您可以\AtBeginDocument
在序言中使用。最小示例:
\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{lipsum}% used to get dummy text
\AtBeginDocument{\addtocontents{toc}{\protect\markboth{Contents}{\textnormal{More Contents}}}}
\begin{document}
\pagestyle{fancy}
\tableofcontents%
\cleardoublepage
\chapter{Chapter 1}
\section{Section 1.1}
\lipsum[1]% used to get dummy text
\cleardoublepage
\chapter{Chapter 2}
\section{Section 2.1}
\lipsum[2]% used to get dummy text
\chapter{Chapter 3}
\section{Section 3.1}
\lipsum[3]% used to get dummy text
\end{document}
当然,您现在需要修改它,以便获得所需的确切措辞和标题的文本格式样式。请注意,默认样式(至少在这个最小示例中)是斜体文本,因此您可能需要覆盖它。