我无法在任何乳胶论坛中找到有关章节特定标题问题的解决方案。
我正在编写一份包含多个章节的单面报告。对于所有章节,我的标题都显示章节编号和标题。但对于其中一章,我希望标题显示节的编号和标题(这是由于该章节的性质,它比其他章节更长)。
一切正常,我设法在标题中显示该部分。但是,所有后续章节都不会恢复到在标题中显示该章节的初始设置。
这是一个包含 3 个章节的极简示例,您可以运行它来查看结果。第 1 章和第 3 章应该在标题中显示章节,只有第 2 章应该在标题中包含章节。但是第 3 章继续应用前面的设置,尽管我已经更改了它们。
我尝试在添加之前重置为\pagestyle{plain}
或,但它不起作用。\pagestyle{empty}
\renewcommand{\chaptermark}
\documentclass[11pt,a4paper,oneside]{report}
\usepackage{fancyhdr}
\begin{document}
\pagestyle{fancy}
\fancyhead{} % clear all header fields
\fancyhead[LO,LE]{\leftmark}
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.\ #1}{}}
\chapter{My First Chapter}
\section{Section 1}
\clearpage
\section{Section 2}
\clearpage
\section{Section 3}
\clearpage
\renewcommand{\sectionmark}[1]{%
\markboth{\thesection.\ #1}{}}
\chapter{My Second Chapter}
\section{Section 1}
\clearpage
\section{Section 2}
\clearpage
\section{Section 3}
\clearpage
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.\ #1}{}}
\chapter{My Third Chapter}
\section{Section 1}
\clearpage
\section{Section 2}
\clearpage
\section{Section 3}
\clearpage
\end{document}
答案1
定义两种页面样式:
\documentclass[11pt,a4paper,oneside]{report}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancypagestyle{normal}{%
\fancyhead{} % clear all header fields
\fancyhead[L]{\leftmark}}
\fancypagestyle{special}{%
\fancyhead{} % clear all header fields
\fancyhead[L]{\rightmark}}
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.\ #1}{}}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection.\ #1}{}}
\setlength{\headheight}{13.6pt}
\begin{document}
\chapter{My First Chapter}
\pagestyle{normal}
\section{Section 1}
\clearpage
\section{Section 2}
\clearpage
\section{Section 3}
\clearpage
\chapter{My Second Chapter}
\pagestyle{special}
\section{Section 1}
\clearpage
\section{Section 2}
\clearpage
\section{Section 3}
\clearpage
\chapter{My Third Chapter}
\pagestyle{normal}
\section{Section 1}
\clearpage
\section{Section 2}
\clearpage
\section{Section 3}
\clearpage
\end{document}
不要忘记\headheight
在编译过程中按照建议进行修改:
Package Fancyhdr Warning: \headheight is too small (12.0pt):
Make it at least 13.59999pt.
We now make it that large for the rest of the document.
This may cause the page layout to be inconsistent, however.
答案2
您必须重新\sectionmark
定义\chaptermark
:
\documentclass[11pt,a4paper,oneside]{report}
\usepackage[english]{babel}
\usepackage{blindtext}% for demo only
\usepackage{fancyhdr}
\begin{document}
\pagestyle{fancy}
\fancyhead{} % clear all header fields
\fancyhead[LO,LE]{\leftmark}
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.\ #1}{}}
\blinddocument
\renewcommand{\sectionmark}[1]{%
\markboth{\thesection.\ #1}{}}
\blinddocument
\renewcommand{\sectionmark}[1]{}
\blinddocument
\end{document}
这是因为部分将放置\sectionmark
在标题处。因此,只要\sectionmark
使用\markboth
或 ,就会这样做\markright
。并且\markboth
at\sectionmark
将覆盖\markboth
at \chaptermark
。但在重新定义之后,\sectionmark
它不再使用任何这些命令。因此,已经存在的\markboth
at\chaptermark
将不再被 覆盖\sectionmark
。
这种解决方案的优点是,如果你在第一部分之前有几页,你仍然有一个头,例如,
\documentclass[11pt,a4paper,oneside]{report}
\usepackage[english]{babel}
\usepackage{blindtext}% for demo only
\usepackage{fancyhdr}
\begin{document}
\pagestyle{fancy}
\fancyhead{} % clear all header fields
\fancyhead[LO,LE]{\leftmark}
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.\ #1}{}}
\blinddocument
\renewcommand{\sectionmark}[1]{%
\markboth{\thesection.\ #1}{}}
\chapter{Test}
\blindtext[10]
\section{First Section at Test}
\blindtext
\section{Second Section at Test}
\blindtext[5]
\section{Third Section at Test}
\blindtext[5]
\renewcommand{\sectionmark}[1]{}
\blinddocument
\end{document}
您可以在这里的第 6 页找到章节,而通过第 7 页的第一部分,您将找到该部分。