枚举中的全宽 mdframed

枚举中的全宽 mdframed

我用enumerate它来编写教程问题,并希望在问题之后立即包含带框的解决方案。我使用mdframed它来获取带框的解决方案(以及,environ这样我就可以选择显示和隐藏解决方案)。但是,我希望环境mdframed是全宽的,而不仅仅是枚举列表的宽度。

以下是 MWE:

\documentclass{article}

\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{mdframed}

\usepackage{environ}

\newif\ifhidesoln
\NewEnviron{solution}{\ifhidesoln\else\begin{mdframed}\BODY\end{mdframed}\fi}

\begin{document}

\begin{enumerate}
    \item \lipsum[75]
    \begin{solution} 
        \lipsum[75]
    \end{solution}
    \item \lipsum[75]
\end{enumerate}

\end{document}

输出:

MWE 显示上述代码的输出

我曾尝试enumerate在解决方案环境中结束并恢复,如下所示:

\NewEnviron{solution}{\ifhidesoln\else
    \end{enumerate}\begin{mdframed}
    \BODY
    \end{mdframed}\begin{enumerate}[resume]\fi
}

但是,我收到错误

\begin{enumerate} on input line 18 ended by \end{solution}

以下图片显示了我想要做出的改变: MWE 展示我想做出的改变

(为了清楚起见,我想让文本随框一起向左移动)

答案1

我遇到了一个问题“将一个段落插入到使用整个文本宽度的列表中”。使用链接的解决方案,我能够解决我的问题。

以下是我期望的 MWE 工作情况:

\documentclass{article}

\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{mdframed}

\usepackage{environ}

\makeatletter
\newenvironment{fullwidth}
    {\par
     \setlength{\@totalleftmargin}{0pt}%
     \setlength{\linewidth}{\hsize}%
     \list{}{\setlength{\leftmargin}{0pt}}
     \item\relax}
    {\endlist}
\makeatother

\newif\ifhidesoln

\NewEnviron{solution}{
    \ifhidesoln\else
    \begin{fullwidth}\begin{mdframed}
        \BODY
    \end{mdframed}\end{fullwidth}\fi
}

\begin{document}

\begin{enumerate}
    \item \lipsum[75]
    \begin{solution} 
        \lipsum[75]
    \end{solution}
    \item \lipsum[75]
\end{enumerate}

\end{document}

工作MWE

相关内容