我在环境中使用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 节。常规选项)。