使用 mdframed 时,边距太紧,导致垂直对齐错误

使用 mdframed 时,边距太紧,导致垂直对齐错误

当使用mdframed边距绝对紧密的环境(全部设置为 0pt)时,放置在页面顶部的分割 md 框架的负垂直空间过多。

为了说明这一点,最小工作示例创建了两个文本页面,其中第二个页面包含 md 框架中的文本,显然与第一个页面中的文本不对齐。

我使用命令创建了示例\FOO,该命令调用一个valignFOO包含名为的实际 mdframed 环境的环境mdframedFOO,后者的边距大小为零并带有一个小框架以供视觉参考。

valignFOO为...负责使 mdframed 段落在间距方面表现得像普通段落。但即使利用了垂直间距方面的改进,我仍然观察到如上所述的额外空间。

\documentclass[12pt,a6paper]{scrbook}

\usepackage[framemethod=tikz]{mdframed}
\usepackage{lipsum}

% New mdframed environment called mdframedFOO:
\newmdenv[leftmargin        = 0pt,
          rightmargin       = 0pt,
          innerleftmargin   = 0pt,
          innerrightmargin  = 0pt,
          innertopmargin    = 0pt,
          innerbottommargin = 0pt,
          skipabove         = 0pt,
          skipbelow         = 0pt,
          splittopskip      = 0pt,
          splitbottomskip   = 0pt,
          outerlinewidth    = 1pt,
          middlelinewidth   = 0pt,
          innerlinewidth    = 0pt,
          topline           = false,
          bottomline        = false
         ]{mdframedFOO}

% Correct vertical alignment of mdframedFOO:
% (This is for making mdframed behave like a normal paragraph,
%  see https://tex.stackexchange.com/questions/88525/making-mdframed-paragraph-behave-like-normal-paragraphs-in-terms-of-spacing)
\newenvironment{valignFOO}
 {\par\vskip\dimexpr\dp\strutbox-\prevdepth\relax\mdframedFOO\strut\ignorespaces}
 {\par\xdef\notetpd{\the\prevdepth}\endmdframedFOO\vskip-\notetpd\relax}

% FOO:
\newcommand{\FOO}[1]{%
  \begin{valignFOO}
    #1
  \end{valignFOO}
}




\begin{document}
  \lipsum[2]
  \FOO{\lipsum[2]}
\end{document}

相关内容