Crear un entorno de sugerencias (aparece con algo como `\ifhints`)

Crear un entorno de sugerencias (aparece con algo como `\ifhints`)

Utilizo exammucho la clase, me gustan especialmente los entornos de solución. Mis documentos contienen preguntas y soluciones, pero al cambiar \printanswersel preámbulo puedo cambiar fácilmente mostrando las soluciones o no.

Me gustaría hacer lo mismo parapistas. Me gustaría 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}

He creado una clase personalizada que se basa en la examclase pero se carga en algunos paquetes y comandos personalizados, ¿qué comandos debo agregar para implementar esta funcionalidad? ¿Alguien podría ayudar?

Respuesta1

Una forma muy sencilla de hacerlo es utilizar elversiónpaquete. Si agregas las líneas:

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

entonces tus pistas no aparecerán. Comenta \excludeversion{hints}(o usa \includeversion{hints}) y mágicamente reaparecerán. Aquí un 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}

Una segunda forma de hacerlo, que se acerca más en espíritu a su pregunta, es utilizar elreinarpaquete para definir su entorno de sugerencias. Con este enfoque, primero define una nueva declaración if, por ejemplo \ifhinting, y luego usa \hintingtruey \hintingfalsepara activar y desactivar las sugerencias:

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

El \NewEnvironcomando define un nuevo entorno pero absorbe el contenido del entorno en la macro \BODYy, por lo tanto, le permite hacer cosas con él, como ignorarlo cuando \hintingfalsesea verdadero.

Una ventaja de este enfoque es que puede activar y desactivar las sugerencias en diferentes partes de los documentos (¡esto también podría verse como una desventaja ya que debe verificar en todas partes!).

información relacionada