![使用 fancyhdr 包仅更改目录页的标题](https://linux22.com/image/394045/%E4%BD%BF%E7%94%A8%20fancyhdr%20%E5%8C%85%E4%BB%85%E6%9B%B4%E6%94%B9%E7%9B%AE%E5%BD%95%E9%A1%B5%E7%9A%84%E6%A0%87%E9%A2%98.png)
我想使用 package 使目录页面的标题中显示“目录” fancyhdr
。现在,根据下面的 MWE,它显示的内容如下:
我想要它展示的是:
在这种情况下,标题是通过 完成的
\fancyhead[RE,LO]{Table of Contents}
。但这会影响所有其他页面,这绝对不是我想要的。
以下是我的 MWE:
\documentclass[10pt,openany]{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE,LO]{Part \thepart\enspace--\enspace Chapter \thechapter}
\fancyhead[LE,RO]{\thepage}
\fancyfoot[C]{My Book}
\begin{document}
\tableofcontents
\part{One}
\chapter{1}
\chapter{2}
\part{Two}
\chapter{3}
\chapter{4}
\chapter{5}
\chapter{6}
\chapter{7}
\part{Three}
\chapter{8}
\chapter{9}
\chapter{10}
\chapter{11}
\chapter{12}
\part{Four}
\chapter{13}
\chapter{14}
\part{Five}
\chapter{15}
\chapter{16}
\chapter{17}
\chapter{18}
\chapter{19}
\chapter{20}
\part{Six}
\chapter{21}
\chapter{22}
\chapter{23}
\chapter{24}
\end{document}
编辑:我的环境是 Windows 10 上的 MikTeX 2.9 和命令行pdflatex
(在 Neovim 的帮助下)。
更多编辑:我希望能够更改页眉/页脚中的内容,因此即使\pagestyle{fancy}
打印目录页的目录,除非绝对必要,否则我还是想避免使用该选项。
答案1
嗯,例如,您可以定义两种要使用的样式:
\fancypagestyle{styletoc}{% <===========================================
\fancyhf{}
\fancyhead[RE,LO]{Table of contents}
\fancyhead[LE,RO]{\thepage}
\fancyfoot[C]{My Book}
% \renewcommand{\headrulewidth}{0pt}
}
\fancypagestyle{stylenor}{% <===========================================
\fancyhf{}
\fancyhead[RE,LO]{Part \thepart\enspace--\enspace Chapter \thechapter}
\fancyhead[LE,RO]{\thepage}
\fancyfoot[C]{My Book}
% \renewcommand{\headrulewidth}{0pt}
}
样式styletoc
仅用于目录部分,stylenor
其他部分使用样式。请注意您还应该定义一种新样式plain
:
\fancypagestyle{plain}{% <===========================================
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
}
去掉没有任何其他数据的页眉和页脚中心的标准页码......
使用以下 mwe
\documentclass[10pt,openany]{book}
\usepackage{blindtext}
\usepackage{fancyhdr}
\fancypagestyle{styletoc}{% <===========================================
\fancyhf{}
\fancyhead[RE,LO]{Table of contents}
\fancyhead[LE,RO]{\thepage}
\fancyfoot[C]{My Book}
% \renewcommand{\headrulewidth}{0pt}
}
\fancypagestyle{stylenor}{% <===========================================
\fancyhf{}
\fancyhead[RE,LO]{Part \thepart\enspace--\enspace Chapter \thechapter}
\fancyhead[LE,RO]{\thepage}
\fancyfoot[C]{My Book}
% \renewcommand{\headrulewidth}{0pt}
}
\fancypagestyle{plain}{% <===========================================
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
}
\begin{document}
\pagestyle{styletoc} % <================================================
\tableofcontents
\part{One}
\pagestyle{stylenor} % <================================================
\chapter{1}
\Blindtext
\chapter{2}
\part{Two}
\chapter{3}
\chapter{4}
\chapter{5}
\chapter{6}
\chapter{7}
\part{Three}
\chapter{8}
\chapter{9}
\chapter{10}
\chapter{11}
\chapter{12}
\part{Four}
\chapter{13}
\chapter{14}
\part{Five}
\chapter{15}
\chapter{16}
\chapter{17}
\chapter{18}
\chapter{19}
\chapter{20}
\part{Six}
\chapter{21}
\chapter{22}
\chapter{23}
\chapter{24}
\end{document}
您将获得以下期望结果:
对于第 1 章等:
答案2
第一种方法
我认为我确实找到了一个解决方案fancyhdr 和目录很难使用\frontmatter
(和 的页面样式不同\mainmatter
)。
\documentclass[10pt,openany]{book}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\usepackage{blindtext}
\fancypagestyle{style_A}{
\fancyhf{}
\fancyhead[C]{Style A (thin line) -- TOC}
\renewcommand{\headrulewidth}{0.2pt}
}
\fancypagestyle{style_B}{
\fancyhf{}
\fancyhead[C]{Style B (thick line) -- Not TOC}
\renewcommand{\headrulewidth}{2.0pt}
}
% https://tex.stackexchange.com/questions/167828
\appto\frontmatter{\pagestyle{style_A}}
\appto\mainmatter{\pagestyle{style_B}}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\end{document}
第二种方法
这个输出有什么问题?
\documentclass{book}
\usepackage{fancyhdr}
\usepackage{blindtext}
\pagestyle{fancy}
\begin{document}
\tableofcontents
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\end{document}