避免在 mdframed 环境中分页

避免在 mdframed 环境中分页

我创建了一个包含两列的文档,其中几乎只包含mdframed环境。通常,将框架拆分到列或页面上是受欢迎且有效的。但是,会出现这样的情况:框架的整个内容位于一页(或一列)的底部,但框架的底线移动到下一页(或一列)的开头,这看起来相当丑陋。由于文档长达数百页,并且其中只有这些框架(文档显示聊天历史记录,每条消息都分组在 mdframed 环境中),因此无法手动修复。

对我来说,如果将框架的底线移至上一页以完成整个框架,并在此过程中与底部边距产生小重叠,那就没问题了。这比在下一页顶部显示一行要好。完全禁用分页符不是一个选择。

编辑

以下是该情况的图片:如您所见,此页面上有多个框架,但最后一个框架不完整:框架的底线在下一列。我想要实现的是最后一个框架完全显示在第一列。在这种情况下,输入底部边距并不重要。很难提供一个最小示例,因为这种情况似乎只发生在某些高度和框架组合中。此外,框架中包含一些图片,这再次使情况变得更加复杂。

mdframed软件包提供了以下警告:

包 mdframed 警告:您遇到了一个坏消息,因为最后一个框是空的,您必须通过更改输入行 243 上的文本、空格或其他内容来手动更改它。

编辑2

以下是定义一个 mdframed 环境的代码:

\newmdenv[linecolor=red!50,
rightmargin=1cm,
linewidth=2pt,
roundcorner=5pt,
skipbelow=-1pt,
]{InMessage}

类似地,蓝色框架的定义(rightmargin=1cm更改为leftmargin=1cm)。

一个框架的构建如下:

\begin{OutMessage}
  \begin{wrapfigure}[1]{r}[0.35\linewidth]{0.4\linewidth}
    \vspace{-21pt}
    \hspace{-0.75\linewidth}\footnotesize\bfseries\itshape{09.07.2007}
  \end{wrapfigure}
 Some text goes in here!
\end{OutMessage}

我知道这种将日期放在框架右侧的环绕图形技巧远非最佳。但这似乎有效,也是我想到的唯一解决方案(我想要实现的目标:日期放在框架第一行的右侧,其他文本(“聊天消息”)也从第一行开始,并延续到第二行,可以在整个宽度上使用)。欢迎提出建议,使其更加强大。

这样,整个文档就由交替的 InMessage 框架和 OutMessage 框架构建而成。一个框架中的水平规则是通过以下方式创建的

\vspace*{-0.5em}
\hphantom{a} \hrule

再说一遍,\hphantom{a}我知道这个部分很糟糕。

也许我应该补充一点,该文档是由 Python 脚本创建的,该脚本使用一些文本文件作为输入并将其重新格式化为乳胶文档。生成的文档长达几百页。我不知道应该在哪里添加命令\enlargethispage来解决我的问题,因为我事先不知道哪些页面可能会出现问题。

有问题的页面

相关内容