我对此有一个解决方法,但如果可能的话,我想做得更优雅。
使用时抑制页眉下方的线fancyhdr
似乎很好理解,而且我已经这样做了一段时间。但是,现在我注意到有些奇怪。当包含(使用\chead
和\includegraphics
)一个 PDF 文件时(根据 Acrobat 中的文档属性),高度为 27 毫米,似乎\headheight
太小,即使我将其设置为 27 毫米。控制台输出说\headheight
80.90546pt(约为 28.435 毫米)太小,并且已将其调整为 80.91379pt(约为 28.438 毫米)。这两个测量值仅相差约 3 微米,但不去掉页眉会导致第二页上文本位置的明显差异——我认为重要的区别在于 28.438 毫米和原来的 27 毫米之间。
当我将设置\headrulewidth
为大于零时,行和 PDF 标题之间有一个清晰可见的空格,所以我认为那里一定有一些额外的间距。我不确定这是由fancyhdr
(我在文档中找不到任何内容,我试图查看文件.sty
本身,但恐怕我的水平不足以很好地解释它)还是由正常的 LaTeX 行间或段落间间距(基线拉伸和 parskip 似乎没有效果)放置的。
我的简单解决方法是将其设置\headheight
为指定的数量,然后从中减去相同的数量\headsep
。但是,这不是很优雅,我想知道更改其他参数是否会破坏此解决方案。所以我想知道,标题内容和 get 之间的额外空间是如何\hrule
设置的,有没有办法抑制它?
我的类文件如下,删除了不相关的命令/功能。在两页文档中(文件中只需要\documentclass{sample}
、,并且需要一些内容),当使用原始测量值并添加选项时\begin{document}
,第二页的外观会发生变化;当使用新测量值时,则不会。\end{document}
.tex
suppressHeaders
(如果有人对侧边距/间距的奇怪处理感到疑惑,页眉中的 PDF 文件宽度为 210 毫米,覆盖了 A4 纸的整个宽度。但是,使用较窄的 PDF 文件似乎不会改变任何东西。)
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sample}[2016/01/17 v2.0]
\RequirePackage{graphicx}
\RequirePackage{ifthen}
\RequirePackage{fancyhdr}
\newboolean{suppressHeaders}
\DeclareOption{suppressHeaders}{\setboolean{suppressHeaders}{true}}
\ProcessOptions
\LoadClass[a4paper,11pt]{article}
% Set up vertical spacing parameters
\setlength{\voffset} {-25.4mm}
\setlength{\topmargin} {0mm}
% Original settings on next two lines
\setlength{\headheight} {27mm}
\setlength{\headsep} {8mm}
% Modified settings to avoid problem on next two lines
%\setlength{\headheight} {28.4380mm}
%\setlength{\headsep} {6.5620mm}
\setlength{\footskip} {15mm}
\setlength{\textheight} {222mm}
% Set up horizontal spacing parameters
\setlength{\hoffset} {-25.4mm}
\setlength{\oddsidemargin} {0mm}
\setlength{\evensidemargin} {0mm}
\setlength{\textwidth} {210mm}
\setlength{\leftskip} {25mm}
\setlength{\rightskip} {20mm}
% Set up paragraph formatting parameters
\setlength{\parskip} {4mm}
\setlength{\parindent} {0mm}
\fancypagestyle{sampleFirstPage}{\renewcommand{\headrulewidth}{0pt}\ifthenelse{\boolean{suppressHeaders}}{}{\chead{\includegraphics{sampleFirstPageHeader}}\lfoot{\includegraphics{SampleFirstPageFooter}}}\cfoot{}}
\fancypagestyle{sampleContinuationPage}{\renewcommand{\headrulewidth}{0pt}\ifthenelse{\boolean{suppressHeaders}}{}{\chead{\includegraphics{sampleSecondPageHeader}}}\cfoot{}}
\thispagestyle{sampleFirstPage}
\pagestyle{sampleContinuationPage}
答案1
如果你的\headheight
设置不正确,fancyhdr
将为您设置。它只会设置后它检测到页面太小,如下报告.log
:
软件包 Fancyhdr 警告:\headheight 太小 (XX.XXXXXpt): 使其至少为 YY.YYYYYpt。 现在,我们将其设置为适合文档其余部分的大小。 但这可能会导致页面布局不一致。
您忘记了将图像与文本内联放置(将其放置在标题中时完成),默认情况下图像位于基线上。此外,即使图像没有降部(如p
、g
或q
),这也会构成 的一部分\headheight
。您可以将其设置为
\setlength{\headheight}{\dimexpr27mm+\dp\strutbox}
其中包括字体特定支柱的d
e th。p
\documentclass{article}
\usepackage{graphicx,fancyhdr,lipsum}
\pagestyle{fancy}
\chead{\includegraphics[height=27mm]{example-image}}
\setlength{\headheight}{\dimexpr27mm+\dp\strutbox}
\showthe\headheight
\begin{document}
\lipsum[1-20]
\end{document}