Fancyhdr - 为什么在不同的页面样式中,页眉高度的变化会影响页脚以及页眉高度?

Fancyhdr - 为什么在不同的页面样式中,页眉高度的变化会影响页脚以及页眉高度?

我对 fancyhdr 的行为有点困惑。

  1. 当我将\headheighta更改\fancypagestyle为包含图片(此处为 tikz 占位符)时,为什么页脚和底部边距不被尊重,而且还被移动(参见输出的第一页)?我该如何修复?
  2. 为什么\headheight第一页的\fancypagestyle似乎会影响headheight第二页的 不同的\fancypagestyle\headheight参见第二页的输出)?

以下是 MWE 及其输出。提前致谢!

\documentclass{article}
\usepackage{fancyhdr}
\usepackage{lipsum}
\usepackage{tikz}


%header first page
\fancypagestyle{firststyle}{
\setlength{\headheight}{130pt}
\fancyhead[L]{}
\fancyhead[C]{\begin{tikzpicture}
    \draw[fill=red] (0,0) rectangle (\textwidth,5);
\end{tikzpicture}}
\fancyhead[R]{}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0pt}
}

%main header
\fancypagestyle{main}{
\setlength{\headheight}{10pt}
\fancyhead[L]{Test Left}
\fancyhead[C]{}
\fancyhead[R]{Test Right}
\fancyfoot[C]{\thepage}}

\pagestyle{main}


%
\begin{document}
\thispagestyle{firststyle}
    \lipsum
\end{document}

输出: 第一页,页脚不被尊重(见箭头)。

第二页,看似相同的页眉高度,但不同的 fancypagestyle(见箭头)。

答案1

如果保留类设置的几何形状,则必须在第一页上留出垂直空间,以便放置扩展标题,并激活\pagestyle{main}从第二页开始的功能。

输出2

\documentclass{article}
\usepackage{fancyhdr}
\usepackage{lipsum}
\usepackage{tikz}

\usepackage{showframe} % added

%header first page
\fancypagestyle{firststyle}{%
%\setlength{\headheight}{130pt} % not needed, will add unnecessary vspace
    \fancyhead[L]{}
    \fancyhead[C]{\begin{tikzpicture}
        \draw[fill=red] (0,0) rectangle (\textwidth,5);
        \end{tikzpicture}}
    \fancyhead[R]{}
    \fancyfoot[C]{\thepage}
    \renewcommand{\headrulewidth}{0pt}
}

%main header
\fancypagestyle{main}{%
    \setlength{\headheight}{20pt} %changed
    \fancyhead[L]{Test Left}
    \fancyhead[C]{}
    \fancyhead[R]{Test Right}
    \fancyfoot[C]{\thepage}}

%\pagestyle{main}


\begin{document}

\vspace*{120pt}
\thispagestyle{firststyle}

1.8.    \lipsum[1-8]

\pagestyle{main}

10. \lipsum
\end{document}

另外,如果您想控制所有页面的几何形状并仅在第一页插入图形:

替代

可以使用geometry

\documentclass[12pt]{article}
\usepackage{fancyhdr}
\usepackage{lipsum}
\usepackage{tikz}

\usepackage[top=30pt,bottom=30pt,left=80pt,right=80pt,includeheadfoot, headheight=2ex, headsep=20pt]{geometry}   %added

\usepackage{showframe}  %added
\renewcommand*\ShowFrameColor{\color{blue}}    %added

    %main header
\fancypagestyle{main}{%
    \setlength{\headheight}{2ex} % changed
    \fancyhead[L]{Test Left}
    \fancyhead[C]{}
    \fancyhead[R]{Test Right}
    \fancyfoot[C]{\thepage}}    

\begin{document}
\vspace*{-45pt} 
\noindent\begin{tikzpicture}
\draw[fill=red] (0,0) rectangle (\textwidth,5);
\end{tikzpicture}

1.8.    \lipsum[1-8]

\pagestyle{main}

10. \lipsum

\end{document}

相关内容