我一直在寻找解决这个问题的方法。当我使用 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 英寸。
的默认值为\headsep
25pt;它是从页眉基线到文本块顶部的距离。如果 为\headheight
48pt,则为 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
从命令行)。