minipage 中的 adjustwidth 会产生过满的水平盒子

minipage 中的 adjustwidth 会产生过满的水平盒子

我正在尝试在 中排版具有不同边距宽度的段落minipage。为此,我使用了包adjustwidth中的环境changepage。这可以很好地排版,但是(由于我的调整宽度比整个页面的宽度更宽)每个minipage都会报告一个超满的水平框。这不会发生在 minipages 之外。

MWE:

\documentclass{article}
\usepackage{lipsum,changepage,calc}

\begin{document}
\begin{minipage}{\textwidth-0.5in}
  \lipsum[1]
  \begin{adjustwidth}{-1in}{-1in}
    \lipsum[2]
  \end{adjustwidth}
  \lipsum[3]
\end{minipage}
\end{document}

发出警告

Overfull \hbox (51.135pt too wide) in paragraph at lines 5--12

请注意,如果调整后的宽度小于页面宽度在迷你页面之外,则没有超满的水平盒子;您可以通过将 minipage 宽度设置为 来查看这一点\textwidth-2in。如果没有minipage,则调整为比页面宽度设置的宽度即可,不会出现超满的水平盒子警告。

这是预期的行为吗?是否生成超满水平盒子消息与 的宽度无关minipage,而只取决于全局文本宽度。但如果没有minipage,就不会出现超满水平盒子!

答案1

当您制作迷你页面时,内容会包裹在\vbox(或\vtop\vcenter,但情况相同)内,该 设置为其中最宽框的宽度。在这种情况下,最宽框是 中段落的行adjustwidth,它们很\textwidth+0.5in宽;左侧的调整不予考虑,因为它是通过类似于 的操作获得的\moveleft

因此,正如预期的那样,您会得到超出 36.135pt 的结果,恰好是半英寸。

参数\begin{minipage}用于设置小页面中的文本宽度,但是如果您自己更改它,就会遇到这些麻烦。

如果您确实想忽略溢出的文本,请将小页面放在一个框中:

\makebox[\textwidth-0.5in][l]{\begin{minipage}{\textwidth-0.5in}
...
\end{minipage}}

相关内容