Comando para desabilitar ambientes

Comando para desabilitar ambientes

Eu defini um ambiente chamado answerque exibe a resposta de uma pergunta de um teste que devo preparar.

A ideia é compilar uma versão onde as respostas são exibidas e outra onde não são (para testar os alunos).

Existe uma maneira elegante de desabilitar ambientes?

É claro que é possível definir um comando \ifanswere depois escrever \ifanswer{\begin{answer}foo\end{answer}}. Para cada ambiente. O problema com esta abordagem, entretanto, é que é necessário lembrar e inserir esse comando todas as vezes e, claro, esquecê-lo uma vez seria embaraçoso.


MWE:

\documentclass{article}
\newenvironment{answer}{\textit{Answer} }{\textit{the end.}}
\begin{document}
Question: Bla
\begin{answer}
Foo
\end{answer}
\end{document}

Responder1

Conforme dito por David, você pode usar commento pacote:

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

Se você quiser fazer isso da maneira mais 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}

informação relacionada