第二页及以后的页边距不同

第二页及以后的页边距不同

我知道有类似的问题,但我希望有同样的功能

\newgeometry{a4paper, left=35mm, right=35mm, top=30mm, bottom=30mm}

或 afterpage 包..

当有新页面时会发生什么...我不知道什么时候以及是否有多个页面,因为这取决于内容的数量。

基本上

第一页

\geometry{a4paper, left=35mm, right=35mm, top=51mm, bottom=30mm}

第二页(启动时动态

\newgeometry{a4paper, left=35mm, right=35mm, top=30mm, bottom=30mm}

答案1

这是一个解决方案。

\documentclass{article}
\usepackage{lipsum}% just for the example

\usepackage{geometry}
\geometry{a4paper, left=35mm, right=35mm, top=51mm, bottom=30mm}

\usepackage{etoolbox}

\newlength\newtop
\setlength{\newtop}{21mm}

\makeatletter
\patchcmd\@outputpage{\global \@colht \textheight}{%
\global\textheight=\dimexpr\textheight+\newtop\relax%
\global\topmargin=\dimexpr\topmargin-\newtop\relax%
\global\@colht\textheight%
\global\newtop\z@}{}{\err}
\makeatother
\begin{document}
\lipsum[1-30]
\end{document}

解释

\patchcmd[<prefix>]{<command>}{<search>}{<replace>}{<success>}{<failure>}

etoolbox 文档

此命令提取 的替换文本<command>,将其替换 <search><replace>,然后重新组合<command>

我们用\patchcmd重新定义内部命令\@outputpage

\global\textheight=\dimexpr\textheight+\newtop\relax% 

新的文本高度是旧文本高度加上\newtop=21mm

\global\topmargin=\dimexpr\topmargin-\newtop\relax%

新的上边距等于旧的上边距减去\newtop=21mm

笔记 \topmargin是内部命令topmargin=top(geometry)-1in-headheight-headsep

\global\@colht\textheight% 

\@colht=\textheight \@colht是 latex 用于 as 的内部命令\textheight

\global\newtop\z@

我们设置\newtop=0(uniteoflength)否则,textheight 和 topmargin 将在每次使用时改变\@outputpage(即每一页)

相关内容