aula de exame: defina um novo ambiente que depende de \printanswers

aula de exame: defina um novo ambiente que depende de \printanswers

Estou tendo problemas para definir um novo ambiente que depende da opção \printanswers da turma do exame.

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

Quando uso \printanswers tudo parece bem, mas quando uso \noprintanswers recebo o erro:

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

Quero que o ambiente de notas fique oculto quando uso \noprintanswers.

Responder1

Para suprimir um ambiente, uma técnica é torná-lo igual ao {comment}ambiente definido pelo pacote literal. Outra é colocar o corpo do comando em a \vboxe jogar fora o \vbox, que é a solução usada pelo ambiente do exame. Esta é a \vboxabordagem:

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

informação relacionada