我目前正在使用该mdframed
软件包为我的硕士论文创建一个自定义环境。在极少数情况下,该环境会表现出一些相当奇怪的行为 — 正确拆分的环境(即两个部分,有时甚至是三个部分)会跳过一页!
我的意思是,环境会按原样被分成两部分,有时是三部分。但是,第一部分并没有打印在它应该打印的页面上,而是打印在了下一页上。然后,第二部分打印在了后续页面上,依此类推。
我一直在尝试为 MWE 重新创建此行为,但尚未成功。我无法发布论文的 LaTeX 代码,但我可以发布显示此不良行为的 PDF 部分。
不过,我自定义环境的定义可能会有所帮助——它主要基于对我的另一个问题的回答(请参阅结合 `tikzpicture` 和 `lstlisting`)。
\usepackage[framemethod=TikZ]{mdframed}
\makeatletter
\def\mdf@@codeheading{Default}%
\define@key{mdf}{title}{%
\def\mdf@@codeheading{#1}
}
\mdfdefinestyle{nicebox}{%
innertopmargin=16pt,
innerbottommargin=8pt,
middlelinewidth=.8pt,
outerlinewidth=4pt,outerlinecolor=white,
innerleftmargin=10pt,
innerrightmargin=10pt,
leftmargin=-4pt,rightmargin=-4pt,
skipabove=\topskip,
skipbelow=\topskip,
roundcorner=4pt,
singleextra={\node[draw, fill=white, thick, anchor=west, xshift=10pt+1pt, font=\bfseries] at (O|-P) {\csname mdf@@codeheading\endcsname \space \theboxnumber};},
firstextra={\node[draw, fill=white, thick, anchor=west, xshift=10pt+1pt, font=\bfseries] at (O|-P) {\csname mdf@@codeheading\endcsname \space \theboxnumber};}
}
\newenvironment{boxenv}[2]{%
\incboxnumber
\label{#2}
\bigskip
\mdframed[style=nicebox,title={#1}]
}{\endmdframed}
答案1
OP 给我发了一封电子邮件。
定义节点的高度不属于计算的一部分,因此存在额外的垂直跳跃,这会导致不必要的分页符。解决此问题的最简单方法是将选项添加overlay
到节点定义中。这样,额外的垂直跳跃就会被忽略。