Q: How do I define a newtheoremstyle which will start the theorem text on a newline after the header even when the theorem text starts with a list, e.g., enumerate? If there's no way of doing this, will any reasonable hacks get the job done?
You can see below in theorem 2.1 that my newtheoremstyle, theorem-break, does as desired when the theorem text does not start with a list environment. But you can see in theorem 2.2. that theorem text starting with a list environment will eat up the \newline. The \mbox{} hack in theorem 2.3 sort of works, but adds an unnecessary blank line (compare with theorem 1.3).
\documentclass{article}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem{theorem-plain}{Theorem}[section]
\newtheoremstyle{break} % follow `plain` defaults but change HEADSPACE.
{\topsep} % ABOVESPACE
{\topsep} % BELOWSPACE
{\itshape} % BODYFONT
{0pt} % INDENT (empty value is the same as 0pt)
{\bfseries} % HEADFONT
{.} % HEADPUNCT
{\newline} % HEADSPACE. `plain` default: {5pt plus 1pt minus 1pt}
{} % CUSTOM-HEAD-SPEC
\theoremstyle{break}
\newtheorem{theorem-break}{Theorem}[section]
\begin{document}
\section{Plain Theorems}
\begin{theorem-plain}[foo]
Lorem ipsum sit amet dolor.
\end{theorem-plain}
\begin{theorem-plain}[foo]
\begin{itemize}
\item foo
\item bar
\end{itemize}
Lorem ipsum sit amet dolor.
\end{theorem-plain}
\begin{theorem-plain}[foo]
\mbox{}
\begin{itemize}
\item foo
\item bar
\end{itemize}
Lorem ipsum sit amet dolor.
\end{theorem-plain}
\section{Theorems with Linebreaks after header}
\begin{theorem-break}[foo]
Lorem ipsum sit amet dolor.
\end{theorem-break}
\begin{theorem-break}[foo]
\begin{itemize}
\item foo
\item bar
\end{itemize}
Lorem ipsum sit amet dolor.
\end{theorem-break}
\begin{theorem-break}[foo]
\mbox{}
\begin{itemize}
\item foo
\item bar
\end{itemize}
Lorem ipsum sit amet dolor.
\end{theorem-break}
\end{document}


ntheoreminstead ofamsthmbe an option? – Gonzalo Medina Apr 12 '12 at 21:37ntheoremoffers a predefinedbreakstyle. – Gonzalo Medina Apr 12 '12 at 22:41