我的第一页上有这个:
% Custom margins - FIRST PAGE
\newcommand{\lrmargin}{1in}
\usepackage[top=0.5in,
bottom=1in,
left=\lrmargin,
right=\lrmargin,
heightrounded]{geometry}
我有一堆文本。在其中的某个地方,Latex 为我创建了第二页文本。如果我转到该位置,并粘贴以下内容:
% CUSTOM MARGINS - SECOND PAGE
\renewcommand{\tbmargin}{1in}
\renewcommand{\lrmargin}{1in}
\newgeometry{top=\tbmargin,
bottom=\tbmargin,
left=\lrmargin,
right=\lrmargin}
我得到了预期的结果。现在,如果我再次更改第一页的页边距,这必然会改变第二页上显示的文本,这会打乱我更改第二页的几何形状。相反,我得到的是两页具有“第一页”设置,第二页有大量空白,第三页具有正确的设置。
我知道要在另一个页面上使用不同的几何图形,你可以使用\newgeometry
。我的问题是 -在哪里我把它放在我的乳胶代码中,以便它总是影响第二页(和第三页等),而不让第一次调用几何图形影响它?
答案1
警告:使用风险由您自行承担!
正如 DC 所说(也是众所周知的),基本上不可能以“自动”方式改变页面边界处的文本宽度,也就是说,无论跨越两页的文本是什么。这是因为 TeX 在知道在哪里截断每一页之前就选择每个段落内的换行符,并且之后不再更改它们。原则上,可以通过将参数设置为\interlinepenalty
≥ 10000 的值来禁止段落内的分页符,但在实践中,这仅在段落非常短(长度不超过两三行)时才可行。但请注意,这可能是目录或类似索引中的情况;另一种可能的情况是在 atitemize
或enumerate
环境中。
然而,如果你这样做不是需要更改线宽,但只更改边距,以下代码展示了一种粗略的 hack,可以通过它来实现。由于\globaldefs=1
包含以下内容,我明确拒绝保证此方法不会破坏任何东西:使用它的风险由您自行承担!
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\usepackage[showframe]{geometry}
\usepackage{afterpage}
\usepackage{lipsum}
\geometry{left=3cm,textwidth=12cm,top=2cm,bottom=2cm,heightrounded}
\begin{document}
\newgeometry{left=5cm,textwidth=12cm,top=5cm,bottom=7cm,heightrounded}
This is a test.
\afterpage{\globaldefs=1 \restoregeometry}
Now \( \verb|\globaldefs|=\texttt{\number\globaldefs} \).
\lipsum[1-16]
\end{document}