我正在使用框架作者: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——难以置信。不过还是感谢这个很棒的提示。