页脚居中相对于纸张,而不是页边距

页脚居中相对于纸张,而不是页边距

我正在写一篇论文。要求左边距为 1.5 英寸,右边距为 1 英寸。此外,页码必须位于右上角,但每章的第一页除外,第一页必须位于页脚的中央。我使用的是 fancyhdr 包,该包将页脚相对于文本而不是页面居中。我想将页脚居中,以便页码位于页面的中央。

\documentclass[12pt]{report}

\usepackage{geometry}
\geometry{a4paper, left=1.5in, right=1in,top=1in, bottom=1in}

\usepackage{fancyhdr}
 \pagestyle{fancy}
 \renewcommand{\headrulewidth}{0pt}
 \renewcommand{\footrulewidth}{0pt}
 \fancyhead{}
 \fancyhead[RE, RO]{\thepage}
 \fancyfoot{}

\begin{document}

\chapter{Intro}

first page

\pagebreak

second page

\end{document}

答案1

是那样吗?我从包中替换了fancyhdrtitleps定义titlesecweird页面样式,然后重新定义了普通样式。

\documentclass[12pt]{report}
\usepackage{titlesec}
\usepackage{geometry}
\geometry{a4paper, left=1.5in, right=1in,top=1in, bottom=1in, showframe, nomarginpar}
\setcounter{page}{900}

\usepackage{titleps}
\newpagestyle{weird}{%
\sethead{}{}{\thepage}
}%
\renewpagestyle{plain}{%
\setfoot{}{\makebox[0pt]{\thepage}\hskip0.5in}{}
}%
 \pagestyle{weird}

\setcounter{page}{900}

\begin{document}

\chapter{Intro}
% 
first page

\pagebreak %

second page

\end{document} 

在此处输入图片描述

答案2

这是另一个使用的建议scrlayer。然后,您可以重新声明plain为一个层页面样式,其中只有一个层包含居中的页码。

\documentclass[12pt]{report}
\usepackage{geometry}
\geometry{a4paper, margin=1in,
  left=2.5in,% enlarged in this example
  showframe}

\usepackage{fancyhdr}
 \pagestyle{fancy}
 \renewcommand{\headrulewidth}{0pt}
 \renewcommand{\footrulewidth}{0pt}
 \fancyhf{}
 \fancyhead[R]{\thepage}

\usepackage{scrlayer}
\DeclareNewLayer[
    foreground,
    foot,
    hoffset=0pt,
    width=\paperwidth,
    contents={\parbox{\layerwidth}{\centering\thepage}}
]{PageMarkCentredToPage}
\RedeclarePageStyleByLayers{plain}{PageMarkCentredToPage}

\begin{document}
\chapter{Intro}
first page
\clearpage
second page
\end{document}

请注意,我还放大了左边距以显示效果。 在此处输入图片描述


当然你也可以替换fancyhdrscrlayer-scrpage基于scrlayer

\documentclass[12pt]{report}
\usepackage{geometry}
\geometry{a4paper, margin=1in,
  left=3.5in,% enlarged in this example
  showframe}

\usepackage{scrlayer-scrpage}
\clearpairofpagestyles
\rohead{\pagemark}
\rehead{\pagemark}

\DeclareNewLayer[
    foreground,
    foot,
    hoffset=0pt,
    width=\paperwidth,
    contents={\parbox{\layerwidth}{\centering\thepage}}
]{PageMarkCentredToPage}
\RedeclarePageStyleByLayers{plain}{PageMarkCentredToPage}

\begin{document}
\chapter{Intro}
first page
\clearpage
second page
\end{document}

答案3

这有用吗?

\documentclass[12pt]{report}

\usepackage{geometry}
\geometry{a4paper, left=1.5in, right=1in,top=1in, bottom=1in, showframe}

\usepackage{fancyhdr}
 \pagestyle{fancy}
 \renewcommand{\headrulewidth}{0pt}
 \renewcommand{\footrulewidth}{0pt}
 \fancyhead{}
 \fancyhead[RE, RO]{\thepage}
 \fancyfoot{}
\fancypagestyle{plain}{%
  \fancyhf{}%
 \renewcommand{\headrulewidth}{0pt}%
 \renewcommand{\footrulewidth}{0pt}%
 \fancyhf[cf]{\thepage\makebox[.25in]{ }}}

\begin{document}

\chapter{Intro}

first page

\pagebreak

second page

\end{document}

奇怪的页码要求

答案4

下面的命令在第二次编译(第一次)后应该可以工作,无论边距大小如何。原理是设置两个标记(使用eso-pic)来捕获页面上所需的 x 和 y 坐标(使用zref的模块。随后,“特殊页面”(在本例中为页面样式页面,与每个的第一页相关联)savepos的页码将移动到位。plain\chapter

在此处输入图片描述

\documentclass[twoside]{report}

\usepackage{geometry,eso-pic,zref-savepos}
\geometry{
  margin=1in,
  left=1.5in,
  right=3in,% Just for this example
  showframe}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}% Clear header/footer
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhead[RE, RO]{\thepage}
\fancypagestyle{plain}{%
  \fancyhf{}% Clear header/footer
  \renewcommand{\headrulewidth}{0pt}%
  \renewcommand{\footrulewidth}{0pt}%
  \fancyfoot[C]{\specialthepage}}

% Place reference markers on first page
\AtBeginDocument{%
  \AddToShipoutPictureBG*{% Just in the background of first page only
    \AtPageCenter{\zsaveposx{page-center}}% At page centre, capture x-pos
    \AtTextLowerLeft{\zsaveposy{page-footer}}% At text lower left, capture y-pos
  }%
}%

% \specialthepage is issued only on \pagestyle{plain}, which is first page of \chapter
\newcommand{\specialthepage}{%
  \AddToShipoutPictureFG*{% Just in foreground of current page only
    \hspace*{\zposx{page-center}sp}% Move to horizontal center
    \raisebox{\dimexpr\zposy{page-footer}sp-\footskip}{\makebox[0pt]{\thepage}}% Raise to text block lower-left level - footer skip
  }%
}
\begin{document}

\chapter{Intro}

first page

\clearpage

second page

在上面的例子中,我使用了twoside模式和奇怪的right边距只是为了展示。

相关内容