前言标题中仅显示章节名称

前言标题中仅显示章节名称

我正拼命寻找一种方法,使用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}

相关内容