mdframed 无法在页面之间正确分割

mdframed 无法在页面之间正确分割

我习惯mdframed制作盒子并将它们拆分到各个页面。但是,有时mdframed会拆分!非常奇怪地拆分到各个页面。在这个例子中,他更喜欢拆分,同时有足够的空间来放置所有内容。

在此处输入图片描述

我想知道冲突在哪里。我对调整这个例子不感兴趣,因为我有数百个盒子。我需要了解问题出在哪里,并立即在整本书中修复它。

\documentclass[a4paper,10pt,twocolumn]{book}
\usepackage[english]{babel}
\newcommand{\mytext}{uutien gaaaetlmsl t n.tu aii s liwmuarpulfoaf ealiesnPui sutuacttcuMitai   ibioErertix}
\usepackage[framemethod=tikz]{mdframed}
\tikzstyle{titregris} =[draw=gray, thick, fill=white,
  text=black, rectangle,minimum height=0.7cm]
\mdfdefinestyle{Argumentstyle}{}
\begin{document}
${}$ \vspace{18cm}
\begin{mdframed}[style=Argumentstyle,
firstextra={\node[titregris,xshift=5mm] at (P-|O) {puttetuiroe};},]
\begin {enumerate}
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\end {enumerate}
\end{mdframed}
\end{document} 

更新:我发现当之前有空白空间时会发生错误的分隔。mdframed似乎计算了所需的空白空间,正确地拆分了框以使第一部分具有正确的长度,但是然后它总是从下一页的开头错误地开始!这是屏幕截图!

更新 2:我认为现在问题是由定义框标题的节点引起的。也就是说,它提供了不适合计算的额外高度...我将标题的当前形式更改为通常的形式 ( frametitlerule=true, frametitle={MyTitle}),问题就从整个文档中消失了 :) 不过,我确实喜欢以前形式的节点...

更新 3:这似乎确实是来自标题框,它向上移动了几毫米,并且mdframed没有考虑到可用空间的计算。到目前为止,我发现的唯一解决方法是将标题框移到主框内...我检查了一下,这样整个文档就没问题了。

答案1

skipabove您可以使用和为标题栏保留空间topinnermargin。此外,事实证明,您应该通过设置零大小的边界框来隐藏此标题框的大小。这可以改善跨列的分栏:

示例输出

\documentclass[a4paper,10pt,twocolumn]{book}

\usepackage[english]{babel}

\newcommand{\mytext}{uutien gaaaetlmsl t n.tu aii s liwmuarpulfoaf ealiesnPui sutuacttcuMitai   ibioErertix}

\usepackage[framemethod=tikz]{mdframed}
\tikzstyle{titregris}=[draw=gray, thick, fill=white,
  text=black, rectangle, minimum height=0.7cm]
\mdfdefinestyle{Argumentstyle}{}

\begin{document}

\vspace*{18cm}

\begin{mdframed}[style=Argumentstyle,
  skipabove={1.2\baselineskip},
  innertopmargin={1.2\baselineskip},
  firstextra={\useasboundingbox (P) rectangle (P); \node[titregris,xshift=5mm] at (P-|O)  {puttetuiroe};},
  singleextra={\useasboundingbox (P) rectangle (P); \node[titregris,xshift=5mm] at (P-|O)  {puttetuiroe};}]
\begin {enumerate}
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\end {enumerate}
\end{mdframed}

\mytext

\begin{mdframed}[style=Argumentstyle,
  skipabove={1.2\baselineskip},
  innertopmargin={1.2\baselineskip},
  firstextra={\useasboundingbox (P) rectangle (P); \node[titregris,xshift=5mm] at (P-|O)  {puttetuiroe};},
  singleextra={\useasboundingbox (P) rectangle (P); \node[titregris,xshift=5mm] at (P-|O)  {puttetuiroe};}]
\begin {enumerate}
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\item \mytext \mytext
\end {enumerate}
\end{mdframed}
\end{document} 

顺便说一句,请注意使用\vspace*而不是${}$ \vspace。星号*表示不会在页面边界等处丢弃空格。

输出\vspace*{20cm}为:

第二个输出

相关内容