使用 fancyheader 时自定义标头无法按预期工作

使用 fancyheader 时自定义标头无法按预期工作

我想要一个如下所示的自定义标题:左侧为 Chapitre5(第 5 章),右侧为章节名称(Mise en oeuvre) 在此处输入图片描述

我在我的根 .tex 文件中使用了它:

\usepackage{fancyhdr}

\pagestyle{fancy}

%clears header & footer
\fancyhf{}
\renewcommand{\chaptermark}[1]{ \markboth{#1}{} }
\rhead{\leftmark}
\lhead{
    \ifnum\value{chapter}>0
        \chaptername \thechapter
    \fi
}

但它没有考虑第一章之后未编号的章节,即\thechapter>0。因此,当我\chapter*{annexe}在第 5 章之后添加一个章节时,我得到了与图片中相同的标题,并且我期待成为左边是空的并有章节名称附件在标题的右侧。你能告诉我怎么做吗?解释一下代码的作用就好了。因为我对 Latex 还不熟悉。

答案1

\hfill使用两个部分之间的左侧字段。

\documentclass[a4paper]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{fancyhdr}

\usepackage{kantlipsum} % mock text

\pagestyle{fancy}

%clears header & footer
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\fancyhead[L]{\chaptername\ \thechapter\hfill\leftmark}

\begin{document}

\chapter{Mise en oeuvre}

\kant[1-10]

\end{document}

在此处输入图片描述

对于管理未编号的章节,您可以修补命令\chapter并仅在满足条件时添加“第 n 章”位。

\documentclass[a4paper]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{fancyhdr}
\usepackage{etoolbox}

\usepackage{kantlipsum} % mock text

\pagestyle{fancy}

%clears header & footer
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\fancyhead[L]{%
  \insertchaptername\hfill\leftmark
}
\newcommand{\insertchaptername}{%
  \ifstarredchapter
  \else
    \ifnum\value{chapter}>0
      \chaptername\ \thechapter
    \fi
  \fi
}
\newif\ifstarredchapter
\makeatletter
\pretocmd\chapter{\global\starredchapterfalse}{}{}
\pretocmd\@schapter{\global\starredchaptertrue\chaptermark{#1}}{}{}
\let\@mkboth\@gobbletwo % we do the \chaptermark
\makeatother

\begin{document}

\chapter*{Introduction}

\kant[1-10]

\chapter{Mise en oeuvre}

\kant[11-20]

\chapter*{Annexe}

\kant[21-30]

\end{document}

在此处输入图片描述

相关内容