clase de examen: define un nuevo entorno que depende de \printanswers

clase de examen: define un nuevo entorno que depende de \printanswers

Tengo problemas para definir un nuevo entorno que depende de la opción \printanswers de la clase de examen.

\documentclass{exam}
\usepackage{framed}

\printanswers
%\noprintanswers 

\newenvironment{note}{\ifprintanswers\begin{framed}\noindent\textbf{Note:}\par\noindent}{\end{framed}\fi}

\begin{document}
\begin{questions}
\question
question
\begin{solution}
    this is the solution
\end{solution}

\begin{note}
    this is a note
\end{note}

\end{questions}
\end{document}

Cuando uso \printanswers todo se ve bien, pero cuando uso \noprintanswers aparece el error:

! Incomplete \iffalse; all text was ignored after line 17.

Quiero que el entorno de notas esté oculto cuando uso \noprintanswers.

Respuesta1

Para suprimir un entorno, una técnica consiste en igualarlo al {comment}entorno definido por el paquete textual. Otra es poner el cuerpo del comando en a \vboxy desechar \vbox, que es la solución que utiliza el entorno de examen. Este es el \vboxenfoque:

\documentclass{exam}
\usepackage{framed}

\newenvironment{note}{%
    \ifprintanswers
        \begin{framed}\noindent\textbf{Note:}\par\noindent
    \else
        \setbox0\vbox\bgroup
    \fi
}{%
    \ifprintanswers
        \end{framed}%
    \else
        \egroup
    \fi%
}

\printanswers
%\noprintanswers

\begin{document}
\begin{questions}
\question
question
\begin{solution}
    this is the solution
\end{solution}

\begin{note}
    this is a note
\end{note}

\end{questions}
\end{document} 

información relacionada