拆分 mdframed 环境偶尔会跳过页面

拆分 mdframed 环境偶尔会跳过页面

我目前正在使用该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到节点定义中。这样,额外的垂直跳跃就会被忽略。

相关内容