我的研究生院对于页码的位置有非常具体的想法:
前页:小写罗马数字,居中于页面底部 1/2 英寸处。从摘要第一页的数字 (ii) 开始(标题页上没有分页)。
文本:阿拉伯数字,右上角,距页面右边缘 1 英寸,距顶部 1/2 英寸。从文本第一页的数字一 (1) 开始,然后连续编号。
我如何使用 book 类以及 fancyhdr 等来实现这一点?
相关,但为回忆录:我怎样才能仅更改一个部分的页码位置?
编辑:显然,研究生院想要这种片面性。
答案1
您可以使用几何图形来实现这一点,但它几乎同样复杂。我创建了一种新的页面样式,使页码相对于页面而不是文本区域居中。使用对称边距将大大简化问题。
棘手的是\topmargin
,\oddsidemargin
和\evensidemargin
都比实际边距小 1 英寸。
\documentclass{book}
\usepackage{lipsum}% MWE only
\pdfpageheight=\paperheight% geometry usually takes care of this
\pdfpagewidth=\paperwidth
\topmargin=-0.5in % 0.5in-1in
\headheight=\ht\strutbox
% use default \headsep and \footskip
\textheight=\dimexpr \paperheight-1in-\headheight-\headsep-\footskip\relax
% use default \oddsidemargin
\textwidth=\dimexpr \paperwidth-2in-\oddsidemargin\relax
\evensidemargin=0pt
\marginparwidth=\dimexpr 1in-2\marginparsep\relax% probably no \marginpars allowed
\makeatletter
\let\ps@plain=\ps@headings
\def\ps@frontmatter{%
\let\@oddhead\@empty
\let\@evenhead\@empty
\def\@oddfoot{\normalfont\hfil\thepage\hspace{\oddsidemargin}\hfil}%
\def\@evenfoot{\normalfont\hfil\hspace{\oddsidemargin}\thepage\hfil}}
\makeatother
\begin{document}
\frontmatter
\pagestyle{frontmatter}
\marginpar{This is a long line, but not nearly as long as lipsum.}
\lipsum[1-12]
\mainmatter
\pagestyle{headings}
\chapter{Test}
\lipsum[1-8]
\end{document}
答案2
建议titleps
:添加
\geometry{footskip=0.5in}
在您的序言中,如果您的意思是页码应该位于文本区域底部以下 1/2 处。
\frontmatter
\pagestyle{plain}
\begin{abstract}\thispagestyle{empty}
............
\end{abstract}
在文档的正文中应该使用居中的罗马编号进行编号。
对于正文,请在序言中使用它:
\usepackage{titleps}
\newpagestyle{main}{%
\sethead[\thepage][][]{}{}{\thepage}
}
对于确切的位置(奇数页距离页面右侧边缘 1 英寸,偶数页距离页面左侧边缘 1 英寸,顶部距离 1/2 英寸),计算取决于您研究生院的页面几何规范,我们尚不清楚(目前还不清楚?)。无论如何,它还是会使用该geometry
包。
在正文中,
\pagestyle{main}
\mainmatter
.............
答案3
以下是使用包的另一个建议scrlayer
:
\documentclass{book}
\usepackage{mwe}% MWE only
\usepackage{scrlayer}
\makeatletter
\DeclareNewLayer[
foot,
foreground,
align=b,
voffset=\paperheight-.5in,
contents=\if@mainmatter\else\vfill\hfill\thepage\hfill\fi
]{foot}
\DeclareNewLayer[
head,
oddpage,
background,
align=tr,
voffset=.5in,
hoffset=\paperwidth-1in,
contents=\if@mainmatter\hfill\thepage\fi
]{head.odd}
\DeclareNewLayer[
clone=head.odd,
evenpage,
align=l,
voffset=.5in,
hoffset=1in,
contents=\if@mainmatter\thepage\fi
]{head.even}
\makeatother
\DeclarePageStyleByLayers{plain}{foot,head.odd,head.even}
\begin{document}
\pagestyle{plain}
\frontmatter
\blinddocument
\mainmatter
\blinddocument
\end{document}