自定义 fancyhdr 以获取 \part 的主题

自定义 fancyhdr 以获取 \part 的主题

\part我想通过定制包装来获取左边偶数页的主题内容fancyhdr

我非常怀疑它与babel法语存在包装冲突。

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{fancyhdr}
\usepackage{lipsum} \makeatletter
\pretocmd{\@part}{\gdef\parttitle{#1}}{}{}
\pretocmd{\@spart}{\gdef\parttitle{#1}}{}{}
\makeatother
\pagestyle{fancy}
\renewcommand{\rightmark}{\parttitle}
\fancyhf{}
\fancyhead[LE,RO]{\LaTeX}
\fancyhead[RE,LO]{Stackexchange}
\fancyfoot[CE,CO]{\leftmark}
\fancyfoot[LE,RO]{\thepage}
\fancyfoot[LO]{eftpart\l}

\begin{document}


\chapter{Questions}
\part{Ask Question} 
\lipsum
\end{document}

在日志文件中,我有以下错误消息:

! Undefined control sequence.
l.6     \pretocmd
                 {\@part}{\gdef\parttitle{#1}}{}{}

答案1

错误信息很明确:命令 \pretocmd无法识别。发生这种情况只是因为您没有加载etoolbox包。

babel与您的错误无关。

此外,我已经将其更改 \fancyfoot[LO]{eftpart\l}为, \fancyfoot[LO]{\thepart}因为我认为其中存在错误,eftpart\l但我不知道您的意图是什么。

顺便说一句,“部分”包含许多章节,而不是相反(我在你的 MWE 中颠倒了顺序)。

\documentclass[a4paper,12pt,twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}\usepackage{etoolbox}
\usepackage{fancyhdr}
\usepackage{lipsum} \makeatletter
\pretocmd{\@part}{\gdef\parttitle{#1}}{}{}
\pretocmd{\@spart}{\gdef\parttitle{#1}}{}{}
\makeatother
\pagestyle{fancy}
\renewcommand{\rightmark}{\parttitle}
\fancyhf{}
\fancyhead[LE,RO]{\LaTeX}
\fancyhead[RE,LO]{Stackexchange}
\fancyfoot[CE,CO]{\leftmark}
\fancyfoot[LE,RO]{\thepage}
\fancyfoot[LO]{\thepart}

\begin{document}
\part{Question} 
\chapter{Ask Question}
\lipsum
\end{document}

相关内容