
私は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
これを行う非常に簡単な方法の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}
2つ目の方法は、あなたの質問の精神に近いものですが、環境パッケージを使用してヒント環境を定義します。この方法では、まず という新しい 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
コマンドは新しい環境を定義しますが、環境の内容をマクロに取り込むため、が true の\BODY
場合はそれを無視するなどの操作を実行できます。\hintingfalse
このアプローチの利点の 1 つは、ドキュメントのさまざまな部分でヒントをオン/オフにできることです (すべての場所を確認する必要があるため、これは欠点とも言えます)。