我对 fancyhdr 的行为有点困惑。
- 当我将
\headheight
a更改\fancypagestyle
为包含图片(此处为 tikz 占位符)时,为什么页脚和底部边距不被尊重,而且还被移动(参见输出的第一页)?我该如何修复? - 为什么
\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}
答案1
如果保留类设置的几何形状,则必须在第一页上留出垂直空间,以便放置扩展标题,并激活\pagestyle{main}
从第二页开始的功能。
\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}