Minted + 可以关闭的新环境

Minted + 可以关闭的新环境

我正在为一些学生编写一个笔记本,我想在其中提供编码练习的可选解决方案。我知道,原则上,我可以使用solutions包含代码的自定义环境minted。但是,我必须能够在编译文档时关闭此环境,因为有时练习必须是盲目的。

到目前为止,我成功创建了一个可以打开和关闭的自定义环境

% Define a conditional toggle
\newtoggle{showsolution}
\toggletrue{showsolution} % Initially, show the solutions

% Define a custom environment for solutions
\NewEnviron{solution}{
  \iftoggle{showsolution}
    {\par\textbf{Solution:}\par\BODY}
    {} % Do nothing if \togglefalse{showsolution}
}

我在文档的某处使用它作为

\begin{solution}
This is the solution to a problem bla bla
\end{solution}

问题是当我包括

\begin{solution}
\begin{minted}{python}
def hello_world():
    print("Hello, World!")
\end{minted}
\end{solution}

我从 的逐字结构中得到一个错误minted,确切地说FancyVerb error是一些不太清晰的消息输出。我试过包装minipage但无法解决这个问题...有人有好的解决办法吗?

答案1

感谢 @mbert 的 tipi,我设法comment按如下方式使用该包。该解决方案还利用了 来tcolorbox换行文本。

\usepackage{comment}

% Define my custom colours 
\definecolor{darkred}{RGB}{102, 102, 255}
\definecolor{gainsboro}{RGB}{220, 220, 220}

% Define a new tcolorbox environment
\newtcolorbox{solutionbox}{
  colback=gainsboro,
  colframe=darkred,
  title=Solution,
}

\renewenvironment{comment}%
  {\begin{minipage}{1.4\textwidth}%
    \begin{solutionbox}}%
  {\end{solutionbox}%
    \end{minipage}}

可以通过注释掉\renewenvironment{comment}指令来从编译中删除解决方案。

相关内容