如何去除 mdframed 后的垂直空间?

如何去除 mdframed 后的垂直空间?

这是我的代码:

\documentclass{article}
\usepackage{mdframed}
\begin{document}
The beginning,
  \begin{mdframed}[linecolor=red,linewidth=1pt,rightmargin=0pt,leftmargin=0pt,innerleftmargin=0pt,innerrightmargin=0pt,skipabove=0pt,skipbelow=0pt,innertopmargin=0pt,innerbottommargin=0pt]
  Hello, world!
  \end{mdframed}
and the end.
\end{document}

红色矩形之前没有垂直空白,但其后有。如何去掉它?

请假设我只能控制到 之前发生的事情\end{mdframed}。 之后的内容不受我控制(我正在为包发出命令)。

答案1

据我所知,这是一个错误mdframed

发生的事情是,在小组开始skipbelow=0pt时对其进行评估,但随后\begin{mdframed}

\addvspace\mdf@skipbelow@length

在组已经结束时执行,因此值恢复到开始时的值,即\topsep

您实际上需要跳过两个级别的分组。

\documentclass{article}
\usepackage{mdframed}

\makeatletter
\newcounter{bugfix}
\AtEndEnvironment{mdframed}{%
  \stepcounter{bugfix}%
  \expandafter\xdef\csname bugfix@\thebugfix\endcsname{%
    \mdf@skipbelow@length=\the\mdf@skipbelow@length\relax
  }%
  \aftergroup\aftergroup\aftergroup\aftergroup
  \aftergroup\aftergroup\expandafter\aftergroup\csname bugfix@\thebugfix\endcsname
}
\makeatother

\begin{document}

The beginning,
\begin{mdframed}[
  linecolor=red,
  linewidth=1pt,
  rightmargin=0pt,
  leftmargin=0pt,
  innerleftmargin=0pt,
  innerrightmargin=0pt,
  skipabove=3pt,
  skipbelow=0pt,
  innertopmargin=0pt,
  innerbottommargin=0pt
]
Hello, world!
\end{mdframed}
and the end.

\end{document}

在此处输入图片描述

答案2

添加了\vspace您可以在 mdframed 之后摆脱垂直空间,这对您来说是一个好的解决方案吗?

\documentclass{article}
\usepackage{mdframed}
\begin{document}
The beginning,
\begin{mdframed}[linecolor=red,linewidth=1pt,rightmargin=0pt,leftmargin=0pt,innerleftmargin=0pt,innerrightmargin=0pt,skipabove=0pt,skipbelow=0pt,innertopmargin=0pt,innerbottommargin=0pt]
Hello, world!
\end{mdframed}
\vspace{-9pt}
and the end.
\end{document}

再举一个例子:

\documentclass{article}
\usepackage{xcolor,lipsum}
\begin{document}
 The beginning,\\   
 \fcolorbox{red}{yellow}{\parbox{\dimexpr \linewidth-2\fboxsep- 
 2\fboxrule}{%
 Hello, world!}}
 and the end.
\end{document}

在此处输入图片描述

相关内容