
我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
為 true 時忽略它。
這種方法的優點之一是您可以在文件的不同部分打開和關閉提示(這也可能被視為缺點,因為您必須檢查各處!)。