不同章节使用不同标题

不同章节使用不同标题

我无法在任何乳胶论坛中找到有关章节特定标题问题的解决方案。

我正在编写一份包含多个章节的单面报告。对于所有章节,我的标题都显示章节编号和标题。但对于其中一章,我希望标题显示节的编号和标题(这是由于该章节的性质,它比其他章节更长)。

一切正常,我设法在标题中显示该部分。但是,所有后续章节都不会恢复到在标题中显示该章节的初始设置。

这是一个包含 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。并且\markbothat\sectionmark将覆盖\markbothat \chaptermark。但在重新定义之后,\sectionmark它不再使用任何这些命令。因此,已经存在的\markbothat\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 页的第一部分,您将找到该部分。

相关内容