One option would be to wrap your list inside a minipage
(minipage
s don't admit page breaks):
\documentclass{exam}
\begin{document}
\noindent\begin{minipage}{\linewidth}
\begin{questions}
\question
One of these things is not like the others; one of these things is not
the same. Which one is different?
\begin{choices}
\choice John
\choice Paul
\choice George
\choice Ringo
\choice Socrates
\end{choices}
\end{questions}
\end{minipage}
\end{document}
And, of course, you could define a new environment to alleviate the job:
\documentclass{exam}
\newenvironment{nbchoices}[1]
{\par\noindent\begin{minipage}{\linewidth}\begin{questions}\question#1\begin{choices}}
{\end{choices}\end{questions}\end{minipage}\par}
\begin{document}
\begin{nbchoices}{One of these things is not like the others; one of these things is not
the same. Which one is different?}
\choice John
\choice Paul
\choice George
\choice Ringo
\choice Socrates
\end{nbchoices}
\end{document}
Using article
and standard enumerate
environments, the same idea applies:
\documentclass{article}
\newenvironment{nbchoices}[1]
{\item#1\par\begin{minipage}{\linewidth}\begin{enumerate}}
{\end{enumerate}\end{minipage}\par}
\begin{document}
\begin{enumerate}
\begin{nbchoices}{One of these things is not like the others; one of these things is not
the same. Which one is different?}
\item John
\item Paul
\item George
\item Ringo
\item Socrates
\end{nbchoices}
\begin{nbchoices}{One of these things is not like the others; one of these things is not
the same. Which one is different?}
\item John
\item Paul
\item George
\item Ringo
\item Socrates
\end{nbchoices}
\end{enumerate}
\end{document}
No page breaks won't occur in between choices.
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)
2)
I don't see any lack of functionality compared to your example.
Best Answer
My collegue and I have written a package based on AcroTeX and
probsoln
which allows to do exactly what you want, using only latex. The package, namedesami
(the Italian word for exams) is available on CTAN.