
He definido un entorno llamado answer
que muestra la respuesta de una pregunta de una prueba que se supone que debo preparar.
La idea es compilar una versión donde se muestren las respuestas y otra donde no (para poner a prueba a los estudiantes).
¿Existe una forma elegante de desactivar los entornos?
Por supuesto, se puede definir un comando \ifanswer
y luego escribirlo \ifanswer{\begin{answer}foo\end{answer}}
. Para cada ambiente. Sin embargo, el problema con este enfoque es que es necesario recordar e insertar este comando cada vez y, por supuesto, olvidarlo una vez sería embarazoso.
MWE:
\documentclass{article}
\newenvironment{answer}{\textit{Answer} }{\textit{the end.}}
\begin{document}
Question: Bla
\begin{answer}
Foo
\end{answer}
\end{document}
Respuesta1
Según lo dicho por David, puedes usar comment
el paquete:
\documentclass{article}
\usepackage{comment}
\newenvironment{answer}{\textit{Answer} }{\textit{the end.}}
\includecomment{answer} %%% comment out to show the answer
\begin{document}
Question: Bla
\begin{answer}
Foo answer
\end{answer}
\end{document}
Si quieres hacerlo de la manera más difícil...
\documentclass{article}
\usepackage{environ}
\usepackage{ifthen}
\newboolean{answers}
\setboolean{answers}{true} %%% uncomment to show answers properly
%\setboolean{answers}{false} %%% comment to show answers properly
\ifthenelse{\boolean{answers}}%
{%
\NewEnviron{answer}
{%
\textit{Answer}
\BODY{}
\textit{the end.}
}%
}%
{\NewEnviron{answer}
{%
\textit{Answer}
\textit{the end.}
}%
}%
\begin{document}
Question: Bla
\begin{answer}
Foo answer
\end{answer}
\end{document}