使用 fancyhdr 包将标题中章节(和部分)后的句号替换为冒号

使用 fancyhdr 包将标题中章节(和部分)后的句号替换为冒号

我正在使用书籍文档类,并且正在使用 fancyhdr 包。在我的标题中,我\leftmark在偶数页和\rightmark奇数页上使用。

我想\leftmark显示“第 1 章:第一章”而不是“第 1 章。第一章”。

我想\rightmark显示“第 1 部分:第一部分”而不是“第 1 部分。第一部分”。

我该怎么做?这是我的代码。提前致谢。

\documentclass[a4paper,12pt,twoside]{book}

\usepackage{lipsum}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{fancyhdr}

% Code for headers
\renewcommand{\headrulewidth}{2pt}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\textbf{\thepage}}
\fancyhead[CE]{\nouppercase{\leftmark}}
\fancyhead[CO]{Section \nouppercase{\rightmark}}

% Code to add page number on the right side of the footer on the chapter start page. 
\fancypagestyle{plain}{
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \fancyfoot[R]{\textbf{\thepage}}
}

\begin{document}
\chapter{Chapter One}
\section{Section One}
\lipsum
\lipsum
\end{document}

答案1

您可以通过修改相关代码来重新定义标记book.cls。例如:

\documentclass[a4paper,12pt,twoside]{book}% If you say a4paper, be sure to load geometry
% \usepackage{geometry}
\usepackage{lipsum}
\usepackage{fancyhdr}

% Code for headers
\renewcommand{\headrulewidth}{2pt}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\textbf{\thepage}}
\fancyhead[CE]{\nouppercase{\leftmark}}
\fancyhead[CO]{Section \nouppercase{\rightmark}}

% Code to add page number on the right side of the footer on the chapter start page.
\fancypagestyle{plain}{
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \fancyfoot[R]{\textbf{\thepage}}
}
\makeatletter
\def\chaptermark#1{% from book.cls
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \@chapapp\ \thechapter: \ %
          \fi
        \fi
        #1}}{}}
\def\sectionmark#1{%
    \markright {\MakeUppercase{%
      \ifnum \c@secnumdepth >\z@
        \thesection: \ %
      \fi
      #1}}}
\makeatother

\begin{document}
\chapter{Chapter One}
\section{Section One}
\lipsum
\lipsum
\end{document}

章节冒号

结肠部分

但我不确定这是否是最好的方法。

相关内容