我使用该包创建了一个自定义简单布局fancyhdr
。由于我必须使用的页眉有点大,LaTeX 指示我将 增加到headheight
至少最小值。问题是,页脚会向下移动,直到最终消失。
以下是 MWE,其中页脚仍可在底部看到:
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[landscape,left=3cm,right=3cm,top=3cm,bottom=3cm]{geometry}
\usepackage{fancyhdr}
\setlength{\headheight}{60pt}
\pagestyle{fancy}
\lhead{This is header \\ This is header \\ This is header \\ This is header \\ This is header}
\chead{}
\rhead{}
\lfoot{}
\cfoot{This is the footer}
\rfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\begin{document}
First line of the document.
Second line of the document.
\end{document}
现在更改60pt
为80pt
并再次编译。再见,页脚!
有什么方法可以解决这个问题?我无法更改页眉,而且必须同时拥有页眉和页脚。
编辑:支持的数量令人难以置信,一小时内有 3 个答案和评论!为你们点赞,并选择最简单、最傻瓜的解决方案作为正确解决方案。谢谢!
答案1
您可能需要摆弄软件包includeheadfoot
中附带的选项geometry
(并geometry
根据您的需要调整设置):
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[includeheadfoot,landscape,left=3cm,right=3cm,top=3cm,bottom=3cm]{geometry}
\usepackage{fancyhdr}
\setlength{\headheight}{80pt}
\pagestyle{fancy}
\lhead{This is header \\ This is header \\ This is header \\ This is header \\ This is header}
\chead{}
\rhead{}
\lfoot{}
\cfoot{This is the footer}
\rfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\begin{document}
First line of the document.
Second line of the document.
\end{document}
答案2
首先,您应该保留geometry
有关页面尺寸的所有设置;设置\headheight
事后将破坏 所做的所有计算geometry
。
其次,你设置的\headheight
80pt 与你想要的顶部边距不兼容,因为默认的头部间距是 25pt,而
80pt + 25pt = 105pt = 3.69厘米
实际上,您的标题计算为fancyhdr
接近 71pt;如果您想要适合标题并且顶部边距为 3cm,只需对 headsep 进行精确计算:
headheight=72pt, % give a bit more room
headsep=\dimexpr3cm-72pt\relax,
所以最后你会得到
\usepackage[a4paper,landscape,
left=3cm,right=3cm,top=3cm,bottom=3cm,
headsep=\dimexpr3cm-72pt\relax,
headheight=72pt]{geometry}
\usepackage{fancyhdr}
这是一张图片,我使用了稍大的纸张尺寸,以便准确显示发生的情况:
\usepackage[paperwidth=31.7cm,paperheight=23cm, % larger paper
layoutwidth=29.7cm,layoutheight=21cm, % A4 landscape
layouthoffset=1cm,layoutvoffset=1cm, % 1cm to crop on all sides
left=3cm,right=3cm,top=3cm,bottom=3cm,
headsep=\dimexpr3cm-72pt\relax,
headheight=72pt,showframe,showcrop]{geometry}
\usepackage{fancyhdr}
裁切标记显示“真实”纸张尺寸,即 A4 横向。
答案3
这是一个精确的解决方案,无需费力寻找正确的尺寸。
你必须计算totalheight
页面的物理纸张高度在 DIN A4 上21cm
,减去上边距,在你的例子中3cm
,减去头部高度,80pt
在你的例子中,减去下边距,即3cm
减去headsep
然后最后加上footskip
。
默认情况下,headsep
和footskip
相同,因此在此示例中它们相互抵消。
80pt
对应于2.8169014084507cm
,根据
维基百科。
所以你的totalheadheight
应该是12.1830985915493cm
,说12.183cm
哪个应该足够精确。
现在使用geometry
以下选项:
\usepackage[landscape,left=3cm,right=3cm,top=3cm,includeheadfoot,totalheight=12.183cm,showframe]{geometry}
不要直接用 设置底部边距bottom=...
,它包含在计算中。
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[utf8]{inputenc}
\usepackage[landscape,left=3cm,right=3cm,top=3cm,includeheadfoot,totalheight=12.183cm,showframe]{geometry}
\usepackage{fancyhdr}
\setlength{\headheight}{80pt}
\pagestyle{fancy}
\lhead{This is header \\ This is header \\ This is header \\ This is header \\ This is header}
\chead{}
\rhead{}
\lfoot{}
\cfoot{This is the footer}
\rfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\begin{document}
First line of the document.
Second line of the document.
\end{document}
编辑 :footskip
在headsep
计算中添加