几何图形的简单替代方法,用于更改文档中单个页面的文本宽度

几何图形的简单替代方法,用于更改文档中单个页面的文本宽度

以下代码产生三页输出,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

相关内容