我使用fancyhdr
包,以便在标题中包含相关章节的名称和编号。这是我的代码:
\documentclass{report}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{#1}}
\fancyhead[R]{}
\fancyhead[L]{\chaptername\ \thechapter\ --\ \leftmark}
\begin{document}
\tableofcontents
\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
Text
\newpage
More text
\chapter{The first chapter}
\end{document}
正如您所看到的,介绍并未一一列举。
通过上述代码,介绍的第二页将给出一个标题,其中包含文本“第 0 章 - 内容”。
如果目录超出第一页,也会发生同样的事情。后续页面均使用相同的页眉。
我该如何调整上述代码,使得标题只在第一章中介绍,而目录和介绍没有标题?
答案1
我将使用不同的方法,即在中设置标题\chaptermark
。
\documentclass{report}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{} % clear the headers
\fancyhead[L]{\nouppercase{\leftmark}}
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter\ -- #1}{}}
\newcommand{\uchapter}[1]{%
\chapter*{#1}%
\markboth{#1}{}%
\addcontentsline{toc}{chapter}{#1}%
}
\begin{document}
\tableofcontents
\uchapter{Introduction}
Text
\newpage
More text
\chapter{The first chapter}
Text
\newpage
More text
% check the header of a possible second page in the TOC
\addtocontents{toc}{\protect\newpage\protect\mbox{}}
\end{document}
这\nouppercase
是必要的,因为它为诸如目录、图表列表和参考书目之类的特殊章节report
添加了\MakeUppercase
参数。\markboth
我引入了一个\uchapter
命令来避免文档主体中出现大量代码。
答案2
更改\fancyhead[L]{...}
为
\makeatletter
\fancyhead[L]{%
% thank egreg for his help in comment
\ifnum\value{chapter}=0\else\chaptername\ \thechapter\ --\ \fi\leftmark
}
\makeatother
并添加
\chaptermark{Introduction}
得到幫助後\chapter*{Introduction}
。
随着这一变化,
- 未编号章节“简介”的第二页左侧页眉将显示“简介”,并且
- 目录第二页的左侧标题显示“目录”。
完整的例子
\documentclass{report}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{#1}}
\fancyhead[R]{}
\makeatletter
\fancyhead[L]{%
% thank egreg for his help in comment
\ifnum\value{chapter}=0\else\chaptername\ \thechapter\ --\ \fi\leftmark
}
\makeatother
\begin{document}
\tableofcontents
\chapter*{Introduction}
\chaptermark{Introduction}
\addcontentsline{toc}{chapter}{Introduction}
Text
\newpage
More text
\chapter{The first chapter}
\newpage
text
\end{document}