这是我的代码:
\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}