Interrupting enumerated lists

It's often convenient to have commentary text, 'outside' the list, between successive entries of a list. In the case of itemize lists this is no problem, since there's never anything to distinguish successive items, while in the case of description lists, the item labels are under the user's control so there's no automatic issue of continuity.

For enumerate lists, the labels are generated automatically, and are context-sensitive, so the context (in this case, the state of the enumeration counter) needs to be preserved.

The belt-and-braces approach is to remember the state of the enumeration in your own counter variable, and then restore it when restarting enumerate:

\newcounter{saveenum}
 ...
\begin{enumerate}
  ...
  \setcounter{saveenum}{\value{enumi}}
\end{enumerate}
<Commentary text>
\begin{enumerate}
  \setcounter{enumi}{\value{saveenum}}
  ...
\end{enumerate}

This is reasonable, in small doses... Problems (apart from sheer verbosity) are getting the level right ("should I use counter enumi, enumii, ...") and remembering not to nest the interruptions (i.e., not to have a separate list, that is itself interrupted) in the "commentary text").

The mdwlist package defines commands \suspend and \resume that simplify the process:

\begin{enumerate}
  ...
\suspend{enumerate}
<Commentary text>
\resume{enumerate}
  ...
\end{enumerate}
The package allows an optional name (as in \suspend[id]{enumerate}) to allow you to identify a particular suspension, and hence provide a handle for manipulating nested suspensions.

If you're suspending a fancy-enumeration list, you need to re-supply the optional "item label layout" parameters required by the enumerate package when resuming the list, whether by the belt-and-braces approach, or by the mdwlist \resume{enumerate} technique. The task is a little tedious in the mdwlist case, since the optional argument has to be encapsulated, whole, inside an optional argument to \resume, which requires use of extra braces:

\begin{enumerate}[\textbf{Item} i]
  ...
\suspend{enumerate}
<comment>
\resume{enumerate}[{[\textbf{Item} i]}]
...
\end{enumerate}
The enumitem package, in its most recent release, will allow you to resume lists, at one level only:
\begin{enumerate}
...
\end{enumerate}
<comment>
\begin{enumerate}[resume]
...
\end{enumerate}
which feels just as "natural" as the mdwtools facility, and has the advantage of playing well with the other excellent facilities of enumitem.
enumerate.sty
Distributed as part of macros/latex/required/tools (zip, browse)
enumitem.sty
macros/latex/contrib/enumitem (zip, browse)
mdwlist.sty
Distributed as part of macros/latex/contrib/mdwtools (zip, browse)

This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=interruptlist