我正在使用 KOMA Script 类,需要更改最后一页的布局。比如说,最后一页应该增加顶部部分。
我尝试过不同的方法,但都没有成功。
\documentclass[twoside]{scrartcl}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
%% This does not work
\AtEndDocument{\newgeometry{top=85mm}}
\begin{document}
\lipsum[1-8]
%% This should be executed automatically!
\newgeometry{top=85mm}
\lipsum[9-12]
\end{document}
答案1
一般来说,了解最后一页页面布局改变的原因会很有用。例如,如果该页面上有特殊内容,则顶部边距的更改可以与该内容绑定。或者,如果最后一页的内容应该只是底部对齐,这也可能有另一种解决方案。但因为你的问题比较笼统,关于更改最后一页的top
withgeometry
包设置,这里有一个建议:
\documentclass[twoside]{scrartcl}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\makeatletter
\AddToHook{shipout/after}{%
\ifnum \c@totalpages=\numexpr\@abspage@last-1\relax
\newgeometry{top=85mm}%
\global\textheight=\textheight
\global\topmargin=\topmargin
\global\@colht=\textheight % maybe not needed
\global\@colroom=\textheight % maybe not needed
\global\vsize=\textheight % maybe not needed
\fi
}
\makeatother
\begin{document}
\lipsum[1-8]
%% This should be executed automatically!
%\newgeometry{top=85mm}
\lipsum[9-12]
\end{document}
经过至少两次 LaTeX 运行后,结果如下:
为了改变左边距或右边距或页眉的高度,可能还需要进行额外的全局长度更改,但这不是问题所在。
只需补充一点:加载geometry
已经改变了 的边距scrartcl
。如果您不想要这个,您可以使用 KOMA-Script 选项usegeometry
或geometry
选项pass
。