我正在为一个项目创建模板。在其中,我创建了一个命令来创建摘要页面,但我需要将几何图形更改为比文档的其余部分更宽。我使用了geometry
带有命令\newgeometry
和的包\restoregeometry
。这部分效果很好。
现在,我正在寻找一种方法来跨页面创建相同的页眉和页脚(这包括所有不同几何图形的相同边距)。为此,我尝试计算左右边距以使用\fancyhfoffset
以下命令添加边距值:
\newcommand{\leftMargin}{%
\dimexpr%
1in + %
\ifoddpage%
\oddsidemargin%
\else%
\evensidemargin%
\fi%
\relax%
}
\newcommand{\rightMargin}{%
\dimexpr%
\paperwidth - \textwidth - \leftMargin%
\relax%
}
\fancypagestyle{main}{%
% Reset
\fancyhf{}%
\renewcommand{\headrulewidth}{0pt}%
\renewcommand{\footrulewidth}{0pt}%
% Compute header and footer margins
\fancyhfoffset[L]{\leftMargin - 2cm}%
\fancyhfoffset[R]{\rightMargin - 2cm}%
% Header
\fancyhead[R]{\myTitle}%
% Footer
\fancyfoot[R]{\myLogo}%
\fancyfoot[L]{\thepage}%
}
但是这个解决方案不起作用:边距与以前的几何图形的边距相同...如果我对样式使用相同的解决方案plain
(\fancypagestyle{plain}
),当样式更改时(例如,章节开始后的下一页),边距会被重置,现在它们会跟随文本宽度。我认为不可能在声明fancyhfoffset
内部使用fancypagestyle
,但我不知道如何做。
在此先感谢您的帮助 !
答案1
几何使用奇数页边距作为输入,然后计算偶数页边距。 \fancyhfoffset
是相对于当前边距的,显然会随着而变化\newgeometry
。
\documentclass[twoside]{article}
\usepackage[showframe]{geometry}
\usepackage{fancyhdr}
\usepackage{lipsum}% MWE onlu
\edef\leftMargin{% odd page
\dimexpr
1in + \oddsidemargin
\relax
}
\edef\rightMargin{%
\dimexpr%
\paperwidth - \textwidth - \leftMargin% or \evensidemargin - 1in
\relax%
}
\fancyhf{}%
\renewcommand{\headrulewidth}{0pt}%
\renewcommand{\footrulewidth}{0pt}%
% Header
\fancyhead[R]{myTitle}%
% Footer
\fancyfoot[R]{myLogo}%
\fancyfoot[L]{\thepage}%
\pagestyle{fancy}
\fancypagestyle{main}{%
% Reset
\fancyhf{}%
\renewcommand{\headrulewidth}{0pt}%
\renewcommand{\footrulewidth}{0pt}%
% Compute header and footer margins
\fancyhfoffset[L]{-1cm}%
\fancyhfoffset[R]{-1cm}%
% Header
\fancyhead[R]{myTitle}%
% Footer
\fancyfoot[R]{myLogo}%
\fancyfoot[L]{\thepage}%
}
\begin{document}
\lipsum[1-8]
\newgeometry{left={\dimexpr \leftMargin-1cm},right={\dimexpr \rightMargin-1cm}}
\pagestyle{main}
\lipsum[1-12]
\clearpage% print header/footer for last page
\restoregeometry
\end{document}