尽可能保持环境一致

尽可能保持环境一致

我有一个环境,希望其中发生以下几件事:

  1. 如果我可以在同一页上放入 2 个以上内容,那么它们都会放在该页面上,并且它们之间会留出一定的空间(比如说一英寸)。

  2. 如果两篇帖子无法放在同一页上,那么第二篇帖子将被移到下一页。最后,

  3. 如果一个环境长于一页那么它就会溢出到下一页。

我原本的样子是:

\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}

相关内容