fancyhdr 忽略 newgeometry

fancyhdr 忽略 newgeometry

似乎fancyhdr忽略了的设置\newgeoemtry。也就是说,加载geometry包时所做的设置:

\usepackage[
    left=1.0em,
    right=1.0em,
    top=1.0cm,
    bottom=1.0cm,
    paperheight=11.0in,
    paperwidth=8.5in
]{geometry}

\pagestyle{fancy}
\fancyhead{}% clear headers
\fancyfoot{}% clear footers
\renewcommand{\headrulewidth}{0pt}% eliminate horizontal line
\fancyfoot[RO, LE]{Page \thepage}

工作正常,页码位于右侧,如所要求:

在此处输入图片描述

但是,如果\fancyfoot设置了,并且然后几何形状被修改:

\usepackage[
    paperheight=11.0in,
    paperwidth=8.5in
]{geometry}

\pagestyle{fancy}
\fancyhead{}% clear headers
\fancyfoot{}% clear footers
\renewcommand{\headrulewidth}{0pt}% eliminate horizontal line
\fancyfoot[RO, LE]{Page \thepage}

\newgeometry{
    left=1.0em,
    right=1.0em,
    top=1.0cm,
    bottom=1.0cm,
}
\pagestyle{fancy}
\fancyhead{}% clear headers
\fancyfoot{}% clear footers
\fancyfoot[RO, LE]{Page \thepage}

页脚没有按照要求位于右侧。

在此处输入图片描述

笔记:

  • 之所以采用两步流程,是因为\usepacakgefancy设置来自我使用的通用 .sty 文件。然后,对于一个特定情况,我想要一个不同的几何图形,因此最干净的解决方案是使用\newgometry修改设置。
  • 当然,一个解决方案是在加载包之前设置一个标志,然后随时调整设置\usepackage。我宁愿不这样做,因为这样会将特定设置与需要设置的地方分开。

代码:

\documentclass{book}

%% -------------------------------------------- Standard packages
\usepackage{xcolor}   
\usepackage{fancyhdr}   
%\usepackage{showframe}
\usepackage{lipsum}

\usepackage[
%% Setting these here work, however I would prefer to do this later via \newgoemetry
%    left=1.0em,
%    right=1.0em,
%    top=1.0cm,
%    bottom=1.0cm,
    paperheight=11.0in,
    paperwidth=8.5in
]{geometry}

\pagestyle{fancy}
\fancyhead{}% clear headers
\fancyfoot{}% clear footers
\renewcommand{\headrulewidth}{0pt}% eliminate horizontal line
\fancyfoot[RO, LE]{Page \thepage}

%% -------------------------------------------- Cusomizations
\newgeometry{
    left=1.0em,
    right=1.0em,
    top=1.0cm,
    bottom=1.0cm,
}
\pagestyle{fancy}
\fancyhead{}% clear headers
\fancyfoot{}% clear footers
\fancyfoot[RO, LE]{Page \thepage}

\begin{document}
\lipsum[1-12]
\end{document}

答案1

如果您正在使用其中一个命令\fancyhfoffset\fancyheadoffset或者\fancyfootoffset\headwidth根据当前参数重新计算,即使您使用0pt偏移量的默认值。

\documentclass{book}
\usepackage{fancyhdr}
\usepackage{lipsum}

\usepackage[
    paperheight=11.0in,
    paperwidth=8.5in
]{geometry}

\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[RO, LE]{Page \thepage}

\newgeometry{
    left=1.0em,
    right=1.0em,
    top=1.0cm,
    bottom=1.0cm,
}
\fancyfootoffset{0pt}% <- recalculate \headwidth

\begin{document}
\lipsum[1-12]
\end{document}

结果:

在此处输入图片描述

相关内容