我正在写一篇论文。要求左边距为 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
是那样吗?我从包中替换了fancyhdr
,titleps
定义titlesec
了weird
页面样式,然后重新定义了普通样式。
\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}
当然你也可以替换fancyhdr
为scrlayer-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
边距只是为了展示。