Crie um ambiente de dicas (apareça com algo como `\ifhints`)

Crie um ambiente de dicas (apareça com algo como `\ifhints`)

Eu uso exammuito o -class, gosto especialmente dos ambientes de solução. Meus documentos contêm dúvidas e soluções, mas alterando \printanswerso preâmbulo posso facilmente alternar entre mostrar as soluções ou não.

Eu gostaria de fazer o mesmo pordicas. Eu gostaria de algo como:

\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}

Eu criei uma classe customizada que é baseada na examclasse, mas carrega em alguns pacotes e comandos customizados, quais comandos devo adicionar para implementar esta funcionalidade? Alguém poderia ajudar?

Responder1

Uma maneira muito fácil de fazer isso é usar oversãopacote. Se você adicionar as linhas:

\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}

então suas dicas não aparecerão. Comente \excludeversion{hints}(ou use \includeversion{hints}) e eles reaparecerão magicamente. Aqui um MWE completo:

\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}

Uma segunda maneira de fazer isso, que está mais próxima da sua pergunta, é usar omeio ambientepacote para definir seu ambiente de dicas. Com esta abordagem você primeiro define uma nova instrução if, digamos \ifhinting, e então usa \hintingtruee \hintingfalsepara ativar e desativar as dicas:

\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}

O \NewEnvironcomando define um novo ambiente, mas insere o conteúdo do ambiente na macro \BODYe permite que você faça coisas com ele, como ignorá-lo quando \hintingfalsefor verdade.

Uma vantagem dessa abordagem é que você pode ativar e desativar as dicas em diferentes partes dos documentos (isso também pode ser visto como uma desvantagem, pois você precisa verificar em todos os lugares!).

informação relacionada