防止 minipage 创建空白页

防止 minipage 创建空白页

所以我有一个以 minipage 开头的文档。据我所知,minipage 环境会尝试将其创建的框放入当前页面,如果无法容纳,它会将自身移动到下一页的顶部。我拥有的文档目前正在这样做,因为 minipage 比页面本身略大。因此,它会将自身移动到下一页,尽管页面上它之前没有任何内容。有没有办法让它不像这样逃走?

这是 MWE

\documentclass{article}
\usepackage[a4paper, portrait, margin=0.75in]{geometry}
\pagenumbering{gobble}
\usepackage{lipsum}
\begin{document}
\begin{minipage}{5 in}
\lipsum[10-25]
\end{minipage}
\end{document}

使用这个会生成一个两页的 pdf。第一页是空白的,第二页包含 lorem ipsum 文本,长度比页面本身还长。如果你改变使用的文本量,使其适合一页,那么奇迹般地它也不会创建空白页。

答案1

您需要使用\smash来告诉 LaTeX 忽略框的高度,然后\clearpage手动插入分页符,正如 Werner 的回答。但是大多数时候您不能简单地将 包裹\smashminipage环境中,因为它通常包含段落分隔符并且\smash不允许在其参数中出现这些分隔符。解决方案是使用lrbox环境将页面保存到框中,然后\smash这样做。我们可以将其打包到一个新的环境中,我将其称为smashminipage

\documentclass{article}
\usepackage{lipsum}

\newsavebox\thesmashminipage
\newenvironment{smashminipage}
  {\begin{lrbox}{\thesmashminipage}\begin{minipage}[t]{\textwidth}}
  {\end{minipage}\end{lrbox}\smash{\usebox{\thesmashminipage}}\clearpage}

\begin{document}
\begin{smashminipage}
\lipsum[10-17]

\lipsum[18-25]
\end{smashminipage}

Page 2 content
\end{document}

smashminipage如果您的页面带有 或标题,并且字体较大,则需要在该环境multicolstikzpicture开头添加一个\nullminipage例如

\newenvironment{smashminipage}
  {\begin{lrbox}{\thesmashminipage}\begin{minipage}[t]{\textwidth}
   \null\par\vspace{-\baselineskip}}
  {\end{minipage}\end{lrbox}\smash{\usebox{\thesmashminipage}}\clearpage}

我承认我不太明白为什么需要这样做,这就是为什么我没有将其添加到我最初的答案中。

答案2

基于你想强制内容保留在当前页面上的事实,但它是只是太高而不适合,您可以\smash这样做(删除任何垂直高度),然后强制跳转到以下页面(如果需要其他内容):

\documentclass{article}

\usepackage[a4paper, portrait, margin = 0.75in]{geometry}
\usepackage{lipsum}

\pagenumbering{gobble}

\begin{document}

\smash{% Your over-sized minipage...
  \begin{minipage}[t]{5in}
    \lipsum[10-25]
  \end{minipage}%
}

\clearpage

abc % Page 2 content

\end{document}

相关内容