我正拼命寻找一种方法,使用fancyhdr
包在类的前言部分中仅以大写形式显示章节名称book
。但我还想像往常一样在正文部分显示章节编号和名称。我不喜欢前言部分标题上出现丑陋的第 0 章。我该怎么办?下面是该问题的 MWE。我在\if...\fi
这里使用它来仅允许标题显示在正文中。
\documentclass[12pt,twoside]{book}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[LE]{\ifnum \value{chapter}>0 \leftmark \fi}
\fancyhead[RO]{\rightmark}
\renewcommand{\headrulewidth}{1pt}
\fancyfoot{}
\lfoot{SAMPLE}
\rfoot{\thepage}
\renewcommand{\footrulewidth}{1.5pt}
\begin{document}
\frontmatter
\chapter{PREFACE}
\lipsum[1-3]
\mainmatter
\chapter{CHAP 1}
\lipsum[4-6]
\chapter{CHAP 2}
\lipsum[7-9]
\end{document}
答案1
您应该重新定义\chaptermark
:
\documentclass[12pt,twoside]{book}
\usepackage{lipsum}
\usepackage{fancyhdr}
\makeatletter
\def\chaptermark#1{%
\markboth{\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne \if@mainmatter
\@chapapp\ \thechapter. \ \fi\fi#1}}{}}
\makeatother
\pagestyle{fancy}
\fancyhead{}
\fancyhead[LE]{\leftmark}
\fancyhead[RO]{\rightmark}
\renewcommand{\headrulewidth}{1pt}
\fancyfoot{}
\lfoot{SAMPLE}
\rfoot{\thepage}
\renewcommand{\footrulewidth}{1.5pt}
\begin{document}
\frontmatter
\chapter{PREFACE}
\lipsum[1-3]
\mainmatter
\chapter{CHAP 1}
\lipsum[4-7]
\chapter{CHAP 2}
\lipsum[8-10]
\end{document}