更改前言后的页码位置

更改前言后的页码位置

我的研究生院对于页码的位置有非常具体的想法:

  1. 前页:小写罗马数字,居中于页面底部 1/2 英寸处。从摘要第一页的数字 (ii) 开始(标题页上没有分页)。

  2. 文本:阿拉伯数字,右上角,距页面右边缘 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}

相关内容