I'm working on an exam document class where the user enters in questions something like this:
\multiplechoice{Question}
{Answer #1}
{Answer #2}
{Answer #3}
{Answer #4}
{Correct answer}
{Explanation}
I'd like to process this information in various ways in one LaTeX run (to create an answer sheet, key, and the test itself), so the questions need to be stored in a macro. The awkwardness comes when one defines:
\newcommand{\sectionA}[1]{\newcommand{\putsectionA}{#1}}
and then asks the user to put 15 questions as an argument to \sectionA. I'd much rather have those questions be the contents of an environment, like so:
\begin{sectionA}
lots of questions
\end{sectionA}
Mostly because I find it much easier to keep track of environment declarations than curly brackets. Is it possible to have the contents of an environment get packaged up into a macro?
Edit:
The solution would seem to be to us the environ package, but it doesn't seem to be working. Here's what I'm trying:
\documentclass{article}
\usepackage{environ}
\NewEnviron{foo}{\edef\foot{\BODY}}
\begin{document}
\begin{foo}
Store This
\end{foo}
\foot
\end{document}
However when running this code \foot remains undefined. It actually seems impossible to define any macro using environ. Even when not using \BODY. For example, replacing the definition above with
\NewEnviron{foo}{\newcommand{\foot}{Print me}}
still fails. I've also tried \Collect@Body from the environ package with similar results. Does \NewEnvrion somehow prohibit defining new commands?
examclass on CTAN, as well. You may already be aware of it, but if not, and if it meets your needs, then it's available. – Mike Renfro Mar 28 '11 at 13:02