警告:使用风险由您自行承担!

警告:使用风险由您自行承担!

我的第一页上有这个:

% 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 的值来禁止段落内的分页符,但在实践中,这仅在段落非常短(长度不超过两三行)时才可行。但请注意,这可能是目录或类似索引中的情况;另一种可能的情况是在 atitemizeenumerate环境中。

然而,如果你这样做不是需要更改线宽,但只更改边距,以下代码展示了一种粗略的 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}

相关内容