我正在写一本书,我想自定义主要内容的页眉和页脚。我希望它具有以下样式:
- 页脚中不打印任何内容 - (
\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
宏内部以获取所需的标题。