当页码为奇数时,在第一章页面上显示章节

当页码为奇数时,在第一章页面上显示章节

使用\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} 

在此处输入图片描述

相关内容