如何使用 fancyhdr 在标题中仅显示章节编号和章节标题以及书名

如何使用 fancyhdr 在标题中仅显示章节编号和章节标题以及书名

我正在写一本书,我想自定义主要内容的页眉和页脚。我希望它具有以下样式:

  • 页脚中不打印任何内容 - (\fancyfoot{}
  • 页码R光和dd-大号eft 页面 -\fancyhead[ER,OL]{\thepage}
  • 书名位于偶数页,靠近页码
  • 章节号和章节标题位于奇数页,靠近页码(用 调用\thechapter

我想创建一个新的风格:

\fancypagestyle{mainmatterstyle}{%
   \fancyfoot{}
   \fancyhead[ER,OL]{\thepage}
   the additional commands go here
}

有人能告诉我该怎么做吗?

我今天开始阅读fancyhdr手册,但在第 15 部分遇到了困难。我不明白\rightmark\leftmark\markboth独家\markright新闻。

我的文档结构如下:

\documentclass{book}
\usepackage{fancyhdr}
\fancypagestyle{mainmatterstyle}{
   % ⟨as above⟩
}
\title{My Book Title}
\author{Tush}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\pagestyle{mainmatterstyle}
\chapter{The first chapter}
   % ...Text goes here...
\end{document}

是否有类似的命令\thebooktitle可以打印的参数\title{}

答案1

您可以执行以下操作:

\documentclass{book}
\usepackage{fancyhdr}
\title{My Book Title}
\author{Tush}

\makeatletter
\let\thetitle\@title
\makeatother

\renewcommand{\chaptermark}[1]{\markboth{\thechapter. #1}{\thetitle}}

\fancypagestyle{mainmatterstyle}{%
   \fancyfoot{}
   \fancyhead{}
   \fancyhead[ER]{\rightmark\makebox[3em][r]{\thepage}}
   \fancyhead[OL]{\makebox[3em][l]{\thepage}\leftmark}
}

\usepackage{lipsum}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\pagestyle{mainmatterstyle}
\chapter{The first chapter}

\lipsum[1-10]

\end{document}

在此处输入图片描述

在此处输入图片描述

让我快速解释一下:标题内部存储在宏中\@title。为了使其更容易访问,我定义了一个新的非@宏,\thetitle使用具有相同的内容\let

然后,我重新定义\chaptermark每次\chapter开始新章节时都会调用的宏,其第一个参数 ( #1) 是章节标题。我告诉这个宏调用它,它接受两个参数:左页的标记和右页的标记,稍后可以使用 和\markboth调用。在这里,我使用之前定义的宏。\leftmark\rightmark\thetitle

\leftmark 然后最终可以将这两个宏\rightmark放置在\fancyhead宏内部以获取所需的标题。

相关内容