所以我有一个以 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 的回答。但是大多数时候您不能简单地将 包裹\smash
在minipage
环境中,因为它通常包含段落分隔符并且\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
如果您的页面带有 或标题,并且字体较大,则需要在该环境multicols
的tikzpicture
开头添加一个\null
,minipage
例如
\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}