我希望在整个文档中使用多种页面样式,并带有不同的页眉和页脚格式/内容。
我遇到了让页脚不超出页面范围的问题。
我使用的解决方法是绝对设置定位,如下例所示:
\documentclass[12pt, a4paper]{article}
\usepackage{blindtext}
\usepackage{fancyhdr}
\usepackage[margin=2cm, includefoot]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{lastpage}
\usepackage{mdwlist}
\usepackage{titlesec}
\fancypagestyle{firstpagestyle}
{
\fancyhf{} % clear all header and footer fields
\chead{
\LARGE \textbf{Common Header} \\
\small diff header line 1 \\
\small diff header line 2 \\
}
\cfoot{\thepage \ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{2pt}
\setlength\headheight{60pt}
\setlength{\footskip}{15pt}
}
\fancypagestyle{otherpagesstyle} {
\fancyhf{} % clear all header and footer fields
\chead{
\LARGE \textbf{Common Header} \\ \small
}
\cfoot{\thepage \ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{2pt}
\setlength{\headheight}{33pt}
\setlength{\footskip}{42pt}
}
\pagestyle{otherpagesstyle}
%==============================================
\begin{document}
\thispagestyle{firstpagestyle}
%==============================================
\subsection*{Section0}
\vspace{-0.4em}
\blindtext
%==============================================
\subsection*{Section1}
\vspace{-0.4em}
\hrule
\vspace{1em}
\blinditemize
\blindtext
\blinditemize
\blindtext
%==============================================
\subsection*{Section2}
\vspace{-0.4em}
\hrule
\vspace{1em}
\blindtext
\blinditemize
\blindtext
\blinditemize
\blindtext
\blinditemize
\blindtext
\end{document}
然而,我对这个解决方案并不满意,因为它似乎不能很好地扩展到更复杂的文档,更不用说页眉/页脚/文本区域之间的耦合,因此对其中一个的更改可能会导致(手动计算)对所有的更改。
我曾尝试改变每个 pagestyle 的 textheight 属性,但“firstpagestyle”似乎并没有超载默认设置(例如\pagestyle{otherpagesstyle}
....)
有没有更简洁的方法来做到这一点?
答案1
由于您的问题仅出现在第一页,因此只需始终使用相同的页眉高度,并按照第一个页眉块适合它的方式进行操作。
\documentclass[12pt, a4paper]{article}
\usepackage{blindtext}
\usepackage[margin=2cm,headheight=25pt,includefoot]{geometry}
% headheight=25pt has been suggested by fancyhdr
\usepackage{fancyhdr}
\usepackage{lastpage}
\fancypagestyle{firstpagestyle}{
\fancyhf{} % clear all header and footer fields
\fancyhead[C]{\LARGE
\parbox[t][\ht\strutbox]{\textwidth}{
\centering
\LARGE \textbf{Common Header} \\
\small diff header line 1 \\
\small diff header line 2\endgraf % not \par because \fancypagestyle is not \long
\kern4pt
\hrule height2pt
}%
}
\fancyfoot[C]{\thepage \ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}
}
\fancypagestyle{otherpagesstyle}{
\fancyhf{} % clear all header and footer fields
\fancyhead[C]{\LARGE \textbf{Common Header}}
\fancyfoot[C]{\thepage \ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{2pt}
}
\pagestyle{otherpagesstyle}
%==============================================
\begin{document}
\thispagestyle{firstpagestyle}
\vspace*{1sp} % adjust here in case you need more room
%==============================================
\section{Section0}
\blindtext
%==============================================
\section{Section1}
\blinditemize
\blindtext
\blinditemize
\blindtext
%==============================================
\section{Section2}
\blindtext
\blinditemize
\blindtext
\blinditemize
\blindtext
\blinditemize
\blindtext
\end{document}