fancyhdr
我正在使用包和文档类撰写论文report
。我的大学要求我在右上角对每页(包括标题页)进行编号。我当前的代码没有在标题页上放置页码,而是在页面的底部中央对论文的第一页进行编号。
有人能帮我解决这个问题吗?我不知道如何阻止 Latex 这样做。
答案1
标准类制作标题页的页面样式empty
和章节首页的页面样式plain
。最简单的解决方案是修补{titlepage}
环境和\chapter
宏以使用fancy
页面样式,并定义该样式以将页码放在右上角。我已经使用该etoolbox
包来做到这一点。
\documentclass{report}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\usepackage{lipsum}
\pagestyle{fancy}
\lhead{}
\chead{}
\rhead{\thepage}
\cfoot{}
\lfoot{}
\rfoot{}
\renewcommand{\headrule}{}
\title{The title}
\author{An Author}
\patchcmd{\titlepage}{empty}{fancy}{}{}
\patchcmd{\chapter}{plain}{fancy}{}{}
\begin{document}
\maketitle
\setcounter{page}{2} % needed if pages are to be continuously numbered
\chapter{A chapter}
\lipsum
\end{document}
答案2
一个愚蠢的 hack,我也习惯了,但肯定会导致问题,例如,如果您使用带有可选参数的作者,或报告的简短标题等。但如果没有,则可以轻松修复,而无需更改包的主体或用法:
\documentclass{report}
\usepackage{lipsum}
\usepackage{fancyhdr}
%
\let\oldauthor\author
\let\oldtitle\title
\let\olddate\date
\def\author#1{\xdef\mtheauthor{#1}\oldauthor{#1}}
\def\title#1{\xdef\mthetitle{#1}\oldtitle{#1}}
%\def\date#1{\xdef\mthedate{#1}\olddate{#1}}
\let\oldmaketitle\maketitle
\def\maketitle{\phantom{.}\par\vspace{150pt}{\centering{\LARGE\mthetitle\par}\vspace{25pt}{\large\mtheauthor\par}\vspace{15pt}{\large\today\par}\vfill}\pagebreak}
\let\oldchapter\chapter
\makeatletter
\def\chapter{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}
\def\@StarredWith[#1]#2{%
\oldchapter*{#2}%
\thispagestyle{fancy}%
}
\def\@StarredWithout#1{
\oldchapter*{#1}%
\thispagestyle{fancy}%
}
\def\@nonStarred{%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[#1]#2{%
\oldchapter[#1]{#2}%
\thispagestyle{fancy}%
}
\def\@nonStarredWithout#1{%
\oldchapter{#1}%
\thispagestyle{fancy}%
}
\makeatother
\title{Test title}
\author{Me and myself}
\pagestyle{fancy}
\fancyhead[R]{\thepage}
\begin{document}
\maketitle
\tableofcontents
\chapter{Test chapter}
\section{Test Sec}
\lipsum[2]
\subsection{Test Subsec}
\subsubsection{Test Subsubsec}
\setcounter{section}{32}
\section{Test Sec}
\lipsum[2]
\subsection{Test Subsec}
\subsubsection{Test Subsubsec}
\lipsum[2]
\end{document}
输出: