Команда для отключения окружения

Команда для отключения окружения

Я определил среду под названием answer, которая отображает ответ на вопрос теста, который я должен подготовить.

Идея состоит в том, чтобы составить версию, в которой ответы отображаются, и версию, в которой они не отображаются (чтобы проверить учащихся).

Есть ли элегантный способ отключить окружение?

Конечно, можно определить команду \ifanswer, а затем написать \ifanswer{\begin{answer}foo\end{answer}}. Для каждой среды. Однако проблема с этим подходом в том, что нужно помнить и вставлять эту команду каждый раз, и, конечно, забыть этот раз было бы неловко.


МВЭ:

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

решение1

Как сказал Дэвид, вы можете использовать commentпакет:

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

Если вы хотите сделать это трудным путем -

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

Связанный контент