以下代码产生三页输出,textwidth
每页为 6 英寸。
\documentclass{book}
\oddsidemargin -8pt \evensidemargin -15pt \topmargin -25pt
\headheight 25pt \headsep 0pt \textheight 9in \textwidth 6in
\usepackage{lipsum}
\begin{document}
\thispagestyle{empty}
\LARGE
\lipsum[1]
\newpage
\lipsum[2] % Would like textwidth to be 4in
\newpage
\lipsum[2] % Would like the textwidth to revert back to 6in.
\end{document}
我想暂时将textwidth
文档(仅第二页)的尺寸更改为 4 英寸。
我知道使用软件包可以相当轻松地完成此操作geometry
,但这似乎会稍微影响输出的显示。我想,minipage
只要页面末尾没有溢出,这也可能有效。
问题:有没有办法(如果有,如何)更改textwidth
一页的输出,而无需借助geometry
包或minipage
环境?另外,虽然我目前不需要它,但如果该方法也可以适应临时textheight
更改,那就太好了。
谢谢。
答案1
尝试将此扩展添加到您的 MWE。
% onepageprob.tex SE 629962
\documentclass{book}
\oddsidemargin -8pt \evensidemargin -15pt \topmargin -25pt
\headheight 25pt \headsep 0pt \textheight 9in \textwidth 6in
\usepackage{lipsum}
\newcommand{\changetextwidth}[1]{\twocolumn \setlength{\textwidth}{#1} \onecolumn}
\begin{document}
\thispagestyle{empty}
\LARGE
\lipsum[1]
%\newpage
\twocolumn
\setlength{\textwidth}{4in}
\onecolumn
\lipsum[2] % Would like textwidth to be 4in
%\newpage
\twocolumn
\setlength{\textwidth}{6in}
\onecolumn
\lipsum[2] % Would like the textwidth to revert back to 6in.
START AGAIN
\newpage
\lipsum[1]
\changetextwidth{4in}
\lipsum[2] % Would like textwidth to be 4in
\changetextwidth{6in}
\lipsum[2] % Would like the textwidth to revert back to 6in.
\end{document}
它基于我对至少 30 年前 Donald Arseneau 的某件事的记忆,也许记忆不太清楚。当 LaTeX 在一列和两列之间切换时,它会开始一个新页面并重新配置页面布局。我只是在 MWE 的主体中进行了列交换,如上面的第一部分所示,它显示了正在发生的事情。然后想到可以通过宏来完成,即\changetextwidth
在 MWE 的第二部分中使用的 my。
延伸答案
我最初的回答是基于 OP 的 MWE,其中文档以文档形式开始onecolumn
。但我最终意识到文档可以以twocolumn
模式开始。为了满足这一点,我的原始\changetextwidth
宏应该进行如下更改,以考虑当前的一列/两列状态。
\makeatletter
\newcommand{\changetextwidth}[1]{
\if@twocolumn%
\onecolumn \setlength{\textwidth}{#1} \twocolumn
\else
\twocolumn \setlength{\textwidth}{#1} \onecolumn
\fi}
\makeatother