ヒント環境を作成する(`\ifhints`のようなもので表示される)

ヒント環境を作成する(`\ifhints`のようなもので表示される)

私は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 つは、ドキュメントのさまざまな部分でヒントをオン/オフにできることです (すべての場所を確認する必要があるため、これは欠点とも言えます)。

関連情報