![Prüfungsklasse: neue Umgebung definieren, die von \printanswers abhängt](https://rvso.com/image/370296/Pr%C3%BCfungsklasse%3A%20neue%20Umgebung%20definieren%2C%20die%20von%20%5Cprintanswers%20abh%C3%A4ngt.png)
Ich habe Probleme beim Definieren einer neuen Umgebung, die von der Option \printanswers der Prüfungsklasse abhängt.
\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}
Wenn ich \printanswers verwende, sieht alles gut aus, aber wenn ich \noprintanswers verwende, erhalte ich den Fehler:
! Incomplete \iffalse; all text was ignored after line 17.
Ich möchte, dass die Notizenumgebung ausgeblendet wird, wenn ich \noprintanswers verwende.
Antwort1
Um eine Umgebung zu unterdrücken, besteht eine Technik darin, sie der Umgebung gleichzusetzen, die {comment}
im Verbatim-Paket definiert ist. Eine andere Möglichkeit besteht darin, den Hauptteil des Befehls in ein zu setzen \vbox
und das wegzuwerfen \vbox
. Dies ist die Lösung, die die Prüfungsumgebung verwendet. Hier ist der \vbox
Ansatz:
\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}