我exam
经常使用 -class,我特别喜欢解决方案环境。我的文档包含问题和解决方案,但通过更改\printanswers
序言,我可以轻松切换是否显示解决方案。
我也想为提示. 我想要类似的东西:
\documentclass[11pt]{exam}
%\ifprintanswers
\ifprinthints
\begin{document}
\begin{questions}
\question Prove $e^{i\pi} +1 = 0$.
\begin{hints}
Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
\end{hints}
\begin{solution}
duh.
\end{solution}
\end{questions}
\end{document}
我创建了一个基于该类的自定义类,exam
但加载了一些包和自定义命令,我应该添加哪些命令来实现此功能?有人能帮忙吗?
答案1
一个非常简单的方法是使用版本包。如果您添加以下行:
\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}
那么你的提示就不会出现。注释掉\excludeversion{hints}
(或使用\includeversion{hints}
),它们就会神奇地重新出现。这里是完整的 MWE:
\documentclass[11pt]{exam}
\usepackage{version}
\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}% turn hints off
\begin{document}
\begin{questions}
\question Prove $e^{i\pi} +1 = 0$.
\begin{hints}
Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
\end{hints}
\begin{solution}
duh.
\end{solution}
\end{questions}
\end{document}
第二种方法在本质上更接近你的问题,就是使用环境包来定义提示环境。使用此方法,您首先定义一个新的 if 语句,例如\ifhinting
,然后使用\hintingtrue
和\hintingfalse
来打开和关闭提示:
\documentclass[11pt]{exam}
\usepackage{environ}
\newif\ifhinting\hintingtrue % hints are on by defautl
\NewEnviron{hints}{\ifhinting\textbf{Hint} \BODY\fi}
\begin{document}
\begin{questions}
\question Prove $e^{i\pi} +1 = 0$.
\begin{hints}
Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
\end{hints}
\begin{solution}
duh.
\end{solution}
\end{questions}
\end{document}
该\NewEnviron
命令定义了一个新的环境,但它将环境的内容吸收到宏中\BODY
,因此您可以使用它来执行操作,例如在\hintingfalse
为真时忽略它。
这种方法的一个优点是您可以在文档的不同部分打开或关闭提示(这也可以看作是一个缺点,因为您必须到处检查!)。