J'utilise le package [exam][1]. Il est assez simple d'emploi, permet de subdiviser en questions, parties, sous parties, de distribuer des points par exercice pour les exams, et de pouvoir ajouter des solution aux exercices (il suffit de passer une option dans l'en-tête du document pour produire soit l'énoncé, soit énoncé+réponses).
Voici un exemple simple :
\documentclass[a4paper,12pt,answers]{exam} % énoncé+réponses
%\documentclass[a4paper,12pt]{exam} % énoncé seul
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
% numéroter les questions dans le style I.1.a
\renewcommand{\thequestion}{\Roman{question}}
\renewcommand{\thepartno}{\arabic{partno}}
\renewcommand{\thesubpart}{\alph{subpart}}
\title{TD truc}
\author{Cours de M. Machin}
\date{}
% Exemple de formatage des solutons
% (ici: texte en rouge foncé sur fond bleu clair)
\shadedsolutions
\definecolor{drd}{rgb}{0.3,0.05,0.1}
\definecolor{SolutionColor}{rgb}{0.9,0.9,1.}
\SolutionEmphasis{\color{drd}}
\begin{document}
\maketitle
% Titre automatique pour chaque réponse
\renewcommand{\solutiontitle}{\noindent\textbf{Réponse:}\enspace}
\begin{questions}
\question[5]\textbf{Exo facile.}
Répondre sans se tromper:
\begin{parts}
\part $1+1=?$
\begin{solution}
$1+1=2$
\end{solution}
\part $1-1=?$
\begin{solution}
$1-1 \approx 0.00000000 \dots$
\end{solution}
\end{parts}
\question[5] \textbf{Exo difficile.}
Calculez de tête:
\begin{parts}
\part $\ln(\pi)$
\begin{solution}
$\ln(\pi) \approx 1+\frac{1}{5\sqrt{2}}$
\end{solution}
\part $1+2+3+4+\dots$
\begin{solution}
$1+2+3+4+\dots=-\frac{1}{12}$
\end{solution}
\end{parts}
\end{questions}
\end{document}
Pour produire:
![alt text][2]
[1]: https://www.ctan.org/tex-archive/macros/latex/contrib/exam
[2]: http://texnique.fr:80/osqa/upfiles/test_5dV9tbx.png