[Tex/LaTex] How to define environments for questions and answers

environmentslists

I wish to do a simple question and answer sheet for my students. I'd like to have something like this:

\section{Differential Equations}

    \begin{questions}

         \begin{question}
              ... Question here ...
         \end{question}

         \begin{answer}
              ... Answer here ...
         \end{answer}

    \end{questions}

I wish to have the environment QUESTIONS to have counters like enumerate. That is, each \begin{question} ... \end{question} should behave just like \item in

\begin{question} 
\item 
\end{question}

The \begin{question} ... \end{question} environment should take "normal" LaTeX commands.

If possible, I'd wish to have deferred printing to print the answers at the end of the document.

I first tried this

\makeatletter
\newtoks\answerscollect
\newcounter{question}
\setcounter{question}{0}
\def\thequestion{{\bfseries{Question \arabic{question}. }}\\}

\def\answer#1{%
\protected@edef\answertmp{%
\the\answerscollect\vspace{.5\baselineskip}\noindent\thequestion#1\par}%
\par\answerscollect=\expandafter{\answertmp}}
\def\printanswers{\the\answerscollect\answerscollect={}}
\def\initbox{\answerscollect={\par\noindent Answers:\par}}

\newcommand{\question}[1]{\stepcounter{question}\par\noindent\thequestion#1}
\makeatother

but it's not behaving the way I'd love the results to be …

Best Answer

Simple use of exam package :

\documentclass{exam}
%\printanswers
\begin{document}

\section{Differential Equations}
\begin{questions}
\question ... Short question here ... \answerline[Short answer]
\question ... Question here ... 

\begin{solution}[.2in]
... Answer here ... 
\end{solution}

\question Long descriptive question about everything

\begin{solutionorlines}[2in]
Long descriptive answer is a long descriptive answer that is a long descriptive answer that is along descriptive answer that is along descriptive answer that is along descriptive answer that is a lie.
\end{solutionorlines}

\question Draw an arrow showing north direction.

\begin{solutionorbox}[2in]
$\uparrow$
\end{solutionorbox}

\end{questions}

\ifprintanswers
Stuff to appear only when answers \textbf{are} being printed.
\else
Stuff to appear only when answers \textbf{are not} being printed.
\fi

\end{document}

Commenting and uncommenting \printanswers yields in one of two following:

1)

Only questions

2)

Questions with answers

I don't see any lack of functionality compared to your example.

Related Question