我正在用 LaTeX 写我的硕士论文。我正在使用book
document 类和 fancyfancyhdr
包。现在,我想将“部分”放在偶数页,将“章节”放在奇数页。我读了你的一条评论并尝试:
\pagestyle{fancy}
\fancyhead{}
\renewcommand{\headrulewidth}{0.2pt}
\renewcommand{\partmark}[1]{\markboth
{\color[gray]{.0}\thepart. #1}{}}
\renewcommand{\chaptermark}[1]{\markright
{\color[gray]{.0}\thechapter.\ #1}}
\renewcommand{\sectionmark}[1]{}
\fancyhead[EL]{\nouppercase{\textbf{\leftmark}}}
\fancyhead[OR]{\nouppercase{\textbf{\rightmark}}}
不幸的是,该章节出现在奇数页,但该部分在偶数页上看不到?我做错了什么?
答案1
\partmark
默认情况下不存在book.cls
。因此,您还需要更新\part
以适当地插入新定义的\partmark
。以下 MWE 使用etoolbox
修补:
\documentclass{book}
\usepackage{fancyhdr,lipsum,xcolor,etoolbox}
\makeatletter
\patchcmd{\@part}% <cmd>
{\markboth{}{}}% <search>
{\partmark{#1}}% <replace>
{}{}% <success><failure>
\makeatother
\pagestyle{fancy}
\fancyhead{}
\renewcommand{\headrulewidth}{0.2pt}
\newcommand{\partmark}[1]{\markboth
{\color[gray]{.0}\thepart. #1}{}}
\renewcommand{\chaptermark}[1]{\markright
{\color[gray]{.0}\thechapter.\ #1}}
\renewcommand{\sectionmark}[1]{}
\fancyhead[EL]{\nouppercase{\textbf{\leftmark}}}
\fancyhead[OR]{\nouppercase{\textbf{\rightmark}}}
\begin{document}
\part{A part}
\chapter{A chapter}
\lipsum[1-10]
\end{document}
补丁将\@part
替换\markboth{}{}
为\partmark{#1}
,它接受 的第一个参数\@part
- 与目录关联的标题。这是 的原始定义,\@part
其中突出显示了补丁替换的行:
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}% <------- the patch changed this into \partmark{#1}
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par}%
\@endpart}
可以使用以下方法实现类似的布局titleps
(在页眉中添加了页码,以说明其价值):
\documentclass{book}
\usepackage{lipsum,xcolor,titleps,etoolbox}
\newcommand{\parttitle}{}
\makeatletter
\patchcmd{\@part}% <cmd>
{\markboth}% <search>
{\renewcommand{\parttitle}{#1}}% <replace>
{}{}% <success><failure>
\makeatother
\newpagestyle{fancy}{%
\setheadrule{0.2pt}%
\sethead [\textbf{\thepart.\ \parttitle}]% even-left
[]% even-center
[\thepage]% even-right
{\thepage}% odd-left
{}% odd-center
{\textbf{\thechapter.\ \chaptertitle}}% odd-right
}
\pagestyle{fancy}
\begin{document}
\part{A part}
\chapter{A chapter}
\lipsum[1-10]
\end{document}
仍然需要一个补丁来定义\parttitle
,默认情况下它不存在。