使用\documentclass[twoside]{report}
,我想要以下标题:
- 左侧为偶数页
Part Title: Chapter Title
- 右侧为奇数页
Section Title
在 MWE 中,我主要根据以下问题得到我想要的东西:
但是,如第 3 页和第 7 页所示,当章节从奇数页开始时,章节标题不会出现在页眉中。鉴于第 6 页的行为,标题适用于偶数章节起始页。
如何让章节标题出现在章节开始的奇数页的页眉中?
平均能量损失
\documentclass[twoside]{report}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{etoolbox}
%https://tex.stackexchange.com/a/13395/56480
\let\Oldpart\part
\newcommand{\parttitle}{}
\renewcommand{\part}[1]{
\Oldpart{#1}
\renewcommand{\parttitle}{#1}
}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{\parttitle: #1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}}
\fancyhead[RO]{\rightmark}
\fancyhead[LE]{\leftmark}
\fancyfoot[C]{\thepage}
%https://tex.stackexchange.com/a/19741/56480
\patchcmd{\chapter}{plain}{fancy}{}{}
\begin{document}
\tableofcontents
\part{First Part}
\chapter{First Chapter}
\blindtext[1]
\section{First Section}
\blindtext[5]
\section{Second Section}
\blindtext[7]
\chapter{Second Chapter}
\blindtext[1]
\section{Third Section}
\blindtext[2]
\chapter{Third Chapter}
\blindtext[1]
\section{Fourth Section}
\blindtext[5]\end{document}
答案1
标记命令设置三个变量:(\topmark
上一页的最后一个标记)、firstmark
(当前页的第一个标记)和\botmark
(当前页的最后一个标记)。\rightmark
使用\firstmark
设置的\markright
或的第二个参数\markboth
。在章节页上,第一次调用\markboth
是使用\chapter
空的第二个参数来重置标题条目。
如果可以使用页面上的最后一部分,那么您可以\rightbotmark
使用来定义命令。\botmark
\firstmark
\makeatletter
\providecommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty}
\makeatother
进而
\fancyhead[RO]{\rightbotmark}
代码:
\documentclass[twoside]{report}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{etoolbox}
%http://tex.stackexchange.com/a/13395/56480
\let\Oldpart\part
\newcommand{\parttitle}{}
\renewcommand{\part}[1]{
\Oldpart{#1}
\renewcommand{\parttitle}{#1}
}
\makeatletter
\newcommand*{\rightbotmark}{%
\expandafter\@rightmark\botmark\@empty\@empty
}
\makeatother
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{\parttitle: #1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}}
\fancyhead[RO]{\rightbotmark}
\fancyhead[LE]{\leftmark}
\fancyfoot[C]{\thepage}
%http://tex.stackexchange.com/a/19741/56480
\patchcmd{\chapter}{plain}{fancy}{}{}
\begin{document}
\tableofcontents
\part{First Part}
\chapter{First Chapter}
\blindtext[1]
\section{First Section}
\blindtext[5]
\section{Second Section}
\blindtext[7]
\chapter{Second Chapter}
\blindtext[1]
\section{Third Section}
\blindtext[2]
\chapter{Third Chapter}
\blindtext[1]
\section{Fourth Section}
\blindtext[5]
\end{document}
答案2
titlesec
以下是和的解决方案etoolbox
。我们必须\part
从 titlesec 内部重新定义:
\documentclass[twoside]{report}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{etoolbox}
\usepackage[pagestyles, outermarks, clearempty]{titlesec}%
\titleformat{\part}[display]{\filcenter\bfseries\Huge}{\partname~\thepart}{3ex}{}[\thispagestyle{empty}]
\newpagestyle{mypagestyle}{
\settitlemarks{part, chapter, section}
\headrule
\sethead[\parttitle: \chaptertitle][][]{}{}{\sectiontitle}
\setfoot{}{\thepage}{}
}
\pagestyle{mypagestyle}
\patchcmd{\chapter}{plain}{mypagestyle}{}
\begin{document}
\tableofcontents\thispagestyle{plain}
\part{First Part}
\chapter{First Chapter}%\thispagestyle{mypagestyle}
\blindtext[1]
\section{First Section}
\blindtext[5]
\section{Second Section}
\blindtext[7]
\chapter{Second Chapter}
\blindtext[1]
\section{Third Section}
\blindtext[2]
\chapter{Third Chapter}
\blindtext[1]
\section{Fourth Section}
\blindtext[5]
\end{document}