Fancyhdr headrulewidth 相关问题

Fancyhdr headrulewidth 相关问题

我对此有一个解决方法,但如果可能的话,我想做得更优雅。

使用时抑制页眉下方的线fancyhdr似乎很好理解,而且我已经这样做了一段时间。但是,现在我注意到有些奇怪。当包含(使用\chead\includegraphics)一个 PDF 文件时(根据 Acrobat 中的文档属性),高度为 27 毫米,似乎\headheight太小,即使我将其设置为 27 毫米。控制台输出说\headheight80.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}.texsuppressHeaders

(如果有人对侧边距/间距的奇怪处理感到疑惑,页眉中的 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。
 现在,我们将其设置为适合文档其余部分的大小。
 但这可能会导致页面布局不一致。

您忘记了将图像与文本内联放置(将其放置在标题中时完成),默认情况下图像位于基线上。此外,即使图像没有降部(如pgq),这也会构成 的一部分\headheight。您可以将其设置为

\setlength{\headheight}{\dimexpr27mm+\dp\strutbox}

其中包括字体特定支柱的de 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}

相关内容