为什么 mdframed 插入空白页?

为什么 mdframed 插入空白页?

我正在使用框架作者:Marco Daniel,我在分页方面遇到了一些问题。有时它会插入一个空白页,具体取决于内容的确切高度。这是我能够重现它的最小 MWE:

\documentclass[10pt]{article}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{lipsum}
\usepackage{setspace}

\begin{document}
\setstretch{1.5}
\lipsum[1]
\pagebreak
\begin{mdframed}[
  hidealllines=true,
  needspace=0pt,
]
\lipsum[2]
\lipsum[4]
\vspace{42.0pt}
% Tweak this number to the biggest value before "fill3 last line"
% moves to the next page.  At some point page 2 will end up blank.
% On my system, values 41.9 through 42.2 are bad.
% On writelatex.com, 51.9 through 52.2 are bad.
\lipsum[3]
fill1 \par
fill2 \par
fill3 last line \par
fill4 \par
fill5 \par
fill6 \par

\end{mdframed}
\end{document}

这有点敏感,所以可能很难重现。基本上,我\vspace{42.0pt}在“填充3最后一行”移动到下一页之前将调整到尽可能大,然后在mdframed。我已经重现了writelatex.com 这里,具有价值52.0pt

知道为什么会出现空白页吗?

答案1

该问题仅与有关framemethod=tikz。我犯了以下愚蠢的错误。抱歉。

背景的默认定义是通过以下方式完成的:

\tikzset{mdfbackground/.style={fill=\mdf@backgroundcolor,%
                               draw=\mdf@backgroundcolor,%
                              }%
        }

尽管您绘制的框架没有任何线条,但边界框计算使用的线条draw=\mdf@backgroundcolor应该为零,但事实并非如此。因此,正确的设置是:

\tikzset{mdfbackground/.style={fill=\mdf@backgroundcolor,%
                               draw=none,%
                              }%
        }

有了这些知识,您可以使用以下行修复您的示例:

\mdfsetup{apptotikzsetting={\tikzset{mdfbackground/.append style={draw=none}}}}

完整的 MWE 为:

\documentclass[10pt]{article}
\usepackage[framemethod=tikz]{mdframed}
\mdfsetup{apptotikzsetting={\tikzset{mdfbackground/.append style={draw=none}}}}
\usepackage{lipsum}
\usepackage{setspace}

\begin{document}
\setstretch{1.5}
\lipsum[1]
\pagebreak
\begin{mdframed}[
  hidealllines=true,
%  backgroundcolor=yellow,%for testing
  needspace=0pt,
]
\lipsum[2]
\lipsum[4]
\vspace{42.0pt}
% Tweak this number to the biggest value before "fill3 last line"
% moves to the next page.  At some point page 2 will end up blank.
% On my system, values 41.9 through 42.2 are bad.
% On writelatex.com, 51.9 through 52.2 are bad.
\lipsum[3]
fill1 \par
fill2 \par
fill3 last line \par
fill4 \par
fill5 \par
fill6 \par

\end{mdframed}
\end{document}

这么小的缺陷竟然会造成如此大的影响,真是令人费解。默认路径宽度只有 0.4pt——难以置信。不过还是感谢这个很棒的提示。

相关内容