我用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}
输出:
我曾尝试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}
(为了清楚起见,我想让文本随框一起向左移动)
答案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}