列表中的 mdframed

列表中的 mdframed

我使用 定义的框架环境mdframed在文档中编写注释。当我将此环境用作\label列表中 之后的第一项时,会发生以下情况:

在此处输入图片描述

来源:

\documentclass{article}

\usepackage[xcolor]{mdframed}
\newmdenv[hidealllines=true, backgroundcolor=gray!30]{env}

\begin{document}

\begin{enumerate}
    \item text

    \item \begin{env}
        foo
    \end{env}

    \item more text

\end{enumerate}

\end{document}

列表元素 2 之前缺少空格,并且其标签未对齐。

这种情况可以预防吗?

答案1

下面我提出三种选择:

  1. 在开始环境之前使用\leavevmode。但是,这会强制框出现在项目下方,然后您可能需要手动修复所需的位置。

  2. 如果框内不出现分页符,则用\parbox宽度等于 的空格围绕它\linewidth

  3. 切换到tcolorbox这个包将给你你想要的东西,不需要进一步的调整。

代码:

\documentclass{article}
\usepackage[xcolor,framemethod=tikz]{mdframed}
\usepackage{tcolorbox}

\newmdenv[hidealllines=true, backgroundcolor=gray!30]{env}
\newtcolorbox{envA}[1][]{colback=gray!30,boxrule=0pt,arc=0pt,top=2pt,bottom=2pt,#1}

\begin{document}

\begin{enumerate}
\item text
\item \leavevmode\begin{env}
foo
\end{env}
\item \parbox{\linewidth}{\begin{env}
bar
\end{env}}
\item more text
\item \begin{envA}
foo
\end{envA}
\item more text
\end{enumerate}

\end{document}

在此处输入图片描述

相关内容