我知道有类似的问题,但我希望有同样的功能
\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>}
此命令提取 的替换文本
<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
(即每一页)