建立一個提示環境(顯示類似「\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

一個非常簡單的方法是使用版本包裹。如果新增以下行:

\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 時忽略它。

這種方法的優點之一是您可以在文件的不同部分打開和關閉提示(這也可能被視為缺點,因為您必須檢查各處!)。

相關內容