我想要一个如下所示的自定义标题:左侧为 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}