如果位于页面末尾或开头,则隐藏某些内容

如果位于页面末尾或开头,则隐藏某些内容

如果框之间的水平线mdframed出现在页面的顶部或底部,我想将其删除。

我发现这个部分解决方案它利用了\cleaders。但它不起作用。

查看我的 3 页:

在此处输入图片描述

我使用的是\par\cleaders\vbox to 0.4pt{\hrule width\linewidth}\vskip0.4ptafter\end{mdframed}等,第 1 页上有 3 个。但我希望这 3 个框之间只有 2 个。

最少的代码

\documentclass{amsart}
\usepackage{lipsum}
\usepackage[nobreak]{mdframed}

\newcommand{\divider}{%
\vspace{2ex}
\par\cleaders\vbox to 0.4pt{\noindent\rule{\linewidth}{2pt}}\vskip0.4pt%
\vspace{2ex}
}
\begin{document}

\begin{mdframed}
\lipsum[1-2]
\end{mdframed}
\divider

\begin{mdframed}
\lipsum[3]
\end{mdframed}
\divider

\begin{mdframed}
\lipsum[1]
\end{mdframed}
\divider

\begin{mdframed}
\lipsum[1]
\end{mdframed}
\divider

\end{document}

在此处输入图片描述

答案1

你必须在领导者之前放置相互抵消的胶水,并且还要对在这些胶水之间做出中断的惩罚进行惩罚;这是宏的目的\filbreak

\documentclass{amsart}
\usepackage{lipsum}
\usepackage[nobreak]{mdframed}

\newcommand{\divider}{%
  \par
  \filbreak
  \xleaders\vbox to 4ex{\vfill\hrule width\hsize height1pt\vfill}\vskip4ex
}
\begin{document}

\begin{mdframed}
\lipsum[1-2]
\end{mdframed}
\divider

\begin{mdframed}
\lipsum[3]
\end{mdframed}
\divider

\begin{mdframed}
\lipsum[1]
\end{mdframed}
\divider

\begin{mdframed}
\lipsum[1]
\end{mdframed}
\divider

\end{document}

在此处输入图片描述

你可能只需要有限胶水,而不是无限胶水,如果接下来有其他事情发生

\newcommand{\divider}{%
  \par
  \vskip0pt plus 40pt\penalty-200\vskip0pt plus-40pt
  \xleaders\vbox to 4ex{\vfill\hrule width\hsize height1pt\vfill}\vskip4ex
}

相关内容