我正在为一些学生编写一个笔记本,我想在其中提供编码练习的可选解决方案。我知道,原则上,我可以使用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}
指令来从编译中删除解决方案。