我使用 定义的框架环境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
下面我提出三种选择:
在开始环境之前使用
\leavevmode
。但是,这会强制框出现在项目下方,然后您可能需要手动修复所需的位置。如果框内不出现分页符,则用
\parbox
宽度等于 的空格围绕它\linewidth
。切换到
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}