使用 mdframed 中断时需要最小垂直距离

使用 mdframed 中断时需要最小垂直距离

我在环境中使用mdframed如下所示的包Solution

\documentclass[12pt]{article}

\usepackage{mdframed}
\usepackage{xcolor}
\usepackage{lipsum}

\newenvironment{Solution}{
    \begin{mdframed}[leftline=true, linecolor=gray, linewidth=3px, backgroundcolor=gray!20, rightline=false, topline=false, bottomline=false, innerbottommargin=10px, innertopmargin=10px, splittopskip=1.25\baselineskip]
    \textit{Solution.}
    
}{\end{mdframed}

}

\setlength{\parskip}{\baselineskip}

\begin{document}
\lipsum[1-3]

text

    \begin{Solution} 
        This is a solution.
    \end{Solution} 

\end{document}

问题是,有时它会非常尴尬地破裂,例如:

在此处输入图片描述

如果它只有一行解决方案在第一页,其余的在第二页,我宁愿把它完全推到第二页。但是,如果它比一行解决方案长,我希望它保留在第一页。设置nobreak=true不起作用,因为当大量文本被推到下一页时,它只会留下巨大的空洞。

有没有办法规定在断页前最小垂直距离?否则它只会推到下一页?

其他一些例子如下:

在此处输入图片描述

在此处输入图片描述

答案1

frametitle由于“解决方案。”显然是一个标题,因此最好使用框架包。格式设置宽度frametitlefont。因此添加

  frametitle={Solution.}, frametitlefont=\itshape

在您的盒子配置中。这可以防止标题后出现中断。

此外,他框架包提供\newmdenv定义环境的功能。因此,你可以Solution使用以下命令定义环境:

\newmdenv[leftline=true, linecolor=gray, linewidth=3px,
  backgroundcolor=gray!20,
  rightline=false, topline=false, bottomline=false,
  innerbottommargin=10px, innertopmargin=10px,
  splittopskip=1.25\baselineskip,
  frametitle={Solution.},
  frametitlefont=\itshape,
]{Solution}

对于第二个问题,我无法重现,也许可以看看关键needspace。这设置了分割框架前的最小高度(请参阅文档,第 6.12 节。常规选项)。

相关内容