我有一个环境,希望其中发生以下几件事:
如果我可以在同一页上放入 2 个以上内容,那么它们都会放在该页面上,并且它们之间会留出一定的空间(比如说一英寸)。
如果两篇帖子无法放在同一页上,那么第二篇帖子将被移到下一页。最后,
如果一个环境长于一页那么它就会溢出到下一页。
我原本的样子是:
\newenvironment{env}{
\begin{minipage}{\textwidth}
}{
\end{minipage}
\vspace{1in}
}
但是我在这里遇到了问题,环境长度超过一页,只是minipage
延续到底部边距并超出页面末尾,然后下一页以额外的 开始\vspace
。
我还遇到了环境内混乱间距的问题minipage
——特别是文本和表格顶部之间的间距——但我想如果需要的话我可以稍后解决这个问题。
答案1
您可以信赖needspace
计算当前页面上的剩余空间,并\newpage
在需要时发出。以下将其包装到名为的环境中myenv
:
\documentclass{article}
\usepackage{environ,needspace}
\newsavebox{\saveblock}
\NewEnviron{myenv}{%
\par
\addvspace{.5\baselineskip}%
\begin{lrbox}{\saveblock}
\begin{minipage}{\linewidth}
\BODY
\end{minipage}
\end{lrbox}%
\Needspace{\dimexpr\ht\saveblock+\dp\saveblock}%
\BODY
}
\usepackage{lipsum}
\begin{document}
\begin{myenv}
\lipsum[1]
\end{myenv}
\begin{myenv}
\lipsum[2]
\end{myenv}
\begin{myenv}
\lipsum[3]
\end{myenv}
\begin{myenv}
\lipsum[4]
\end{myenv}
\begin{myenv}
\lipsum[5]
\end{myenv}
\end{document}