Fancyhdr 添加多行页眉导致页脚边距不一致?

Fancyhdr 添加多行页眉导致页脚边距不一致?

我一直在寻找解决这个问题的方法。当我使用 fancyhdr 包创建页眉和页脚并运行我的代码时,只要页眉不占用多行,页脚与页面底部的间距在每一页上都是一致的。但是,当我添加多行页眉时,第一页的页脚总是高于后续页面的页脚。我在网上搜索后还没有找到解决这个问题的方法。

没有多行页眉和一致页脚间距的代码示例:

    \documentclass[10pt]{article}

    \usepackage{amsmath, amssymb, graphicx}
    \usepackage[height=9in,width=7in]{geometry}

    \usepackage{fancyhdr}
    \pagestyle{fancy}

    \lhead{ Left Header}  \rhead{Right Header}
    \rfoot{ \textit{Left footer}}
    \renewcommand{\headrulewidth}{0pt} 


    \begin{document}
    Testing
    \newpage
    Hi

    \end{document}

代码示例:多行页眉超过 2 行,且第一页的页脚高于后续页面:

    \documentclass[10pt]{article}

    \usepackage{amsmath, amssymb, graphicx}
    \usepackage[height=9in,width=7in]{geometry}

    \usepackage{fancyhdr}
    \pagestyle{fancy}

    \lhead{ Left Header \\ 2nd left header \\ 3rd left header \\ 4th left header}  \rhead{Right Header \\ 2nd right header \\ \text{  } \\ Skipped 3rd}
    \rfoot{ \textit{Left footer}}
    \renewcommand{\headrulewidth}{0pt} 


    \begin{document}
    \text{  } \\ \\Testing
    \newpage
    \text{  } \\ \\ Hi

    \end{document}

答案1

对于第二个示例,我收到警告

Package Fancyhdr Warning: \headheight is too small (12.0pt): 
 Make it at least 46.54448pt.
 We now make it that large for the rest of the document.
 This may cause the page layout to be inconsistent, however.

解决方案:

\usepackage[height=9in,width=7in,headheight=48pt,heightrounded]{geometry}

(或 46.6pt,我更喜欢的倍数\baselineskip。的添加heightrounded与问题无关,但最好总是使用它。


当文档类别为article(单面)时,geometry应用一些启发式方法来设置未指定的长度。由于您只将文本高度指定为 9 英寸,因此它将按照 2:3 的比例划分顶部和底部的空间;因此上面的空间为 0.8 英寸。

的默认值为\headsep25pt;它是从页眉基线到文本块顶部的距离。如果 为\headheight48pt,则为 73pt,略大于 1 英寸,因此部分页眉将消失在纸张顶部上方。

自从你需要48pt 为标题,您还必须调整其他参数。假设您想要标题上方 18pt(1/4 英寸)并且缩小\headsep,例如 12pt。然后添加

top=78in,

就可以了,因为 18+48+12=78。当然,文本块会向下移动。

完整示例:

\documentclass{article}
\usepackage[
  height=9in,      % height of the text block
  width=7in,       % width of the text block
  top=78pt,        % distance of the text block from the top of the page
  headheight=48pt, % height for the header block
  headsep=12pt,    % distance from the header block to the text block
  heightrounded,   % ensure an integer number of lines
  showframe,       % show the main blocks
  verbose,         % show the values of the parameters in the log file
]{geometry}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all fields

\fancyhead[L]{Left Header \\ 2nd left header \\ 3rd left header \\ 4th left header}
\fancyhead[R]{Right Header \\ 2nd right header \\ \  \\ Skipped 3rd}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\textit{Left footer}}
\renewcommand{\headrulewidth}{0pt}

\usepackage{lipsum}

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

一些showframe细线将勾勒出主要的块,verbose计算结果将显示在日志文件中。

在此处输入图片描述

该软件包的文档geometry非常详尽。下面是关联,但您肯定可以在您的系统上找到它(texdoc geometry从命令行)。

相关内容