为 \mainmatter 自定义 \chaptermark

为 \mainmatter 自定义 \chaptermark

大家好又是我,

我尝试添加\leftmark到我的标题,但我想将其从 更改Chapter 1. Introduction1 Introduction。我的 MWE:

\documentclass[12pt, oneside, a4paper]{book}
\usepackage{titlesec}
\titleformat{\chapter}{\huge\bfseries}{\thechapter}{20pt}{\huge}
\usepackage{fancyhdr}
\fancypagestyle{plain}
{
    \fancyhf{}
    \fancyhead[L]{\rightmark}
    \fancyfoot[R]{\thepage}
    \renewcommand{\headrulewidth}{0.5pt}
    \renewcommand{\footrulewidth}{0pt}
}

\begin{document}
    \frontmatter
        \tableofcontents
    \mainmatter
        \chapter{Introduction}
        \chapter{Blablabla}
\end{document}

我在 Google 上搜索了很多发现\renewcommand{\chaptermark}[1]{\markboth{#1}{}}和其他变体并将其插入到序言的不同位置,但没有作用。

我是不是又错过了什么重要的东西?我想是的,但我无法指出来。

答案1

\chaptermark可以按以下方式重新定义:

\makeatletter
\if@twoside
  \renewcommand*{\chaptermark}[1]{%
    \markboth{%
      \ifnum\value{secnumdepth}>-1 %
        \thechapter\ %
      \fi
      #1%
    }{}%
  }%
\else
  \renewcommand*{\chaptermark}[1]{%
    \markright{%
      \ifnum\value{secnumdepth}>-1 %
        \if@mainmatter  
          \thechapter\ %
        \fi
      \fi
      #1%
    }%
  \fi
}
\makeatother

它打印标题:

CONTENTS
1 Introduction
2 Blablabla

CONTENTS可以通过重新定义 来删除 的大写字母\tableofcontents

\usepackage{etoolbox}
\patchcmd{\tableofcontents}{\MakeUppercase\contentsname}{\contentsname}{}{}
\patchcmd{\tableofcontents}{\MakeUppercase\contentsname}{\contentsname}{}{}

\MakeUppercase从定义中删除了\tableofcontents(两次)。

相关内容