[Tex/LaTex] How to suppress vertical space between theorem heads and enumitem environments

enumitemlistsspacingtheorems

How can I suppress vertical space between a theorem head and an enumitem
environment?
I would like the output to look like version 3 below, but I hope there is an
automatical solution without ~ and \vspace.

\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\newtheoremstyle{mythmstyle}%
{0.5em}% space above
{0.5em}% space below
{}% body font
{}% indent amount
{\sffamily\bfseries}% head font
{}% punctuation after head
{\newline}% space after head
{\thmname{#1}\ \thmnumber{#2}\ \thmnote{(#3)}}% head spec
\theoremstyle{mythmstyle}
\newtheorem{Theorem}{Theorem}
\begin{document}

%% version 1: vertical spacing correct
\begin{Theorem}
Dummy text
\begin{enumerate}[label=(\arabic*),leftmargin=*,align=left]
\item Item 1: More dummy text
\item Item 2: More dummy text
\end{enumerate}
\end{Theorem}

%% version 2: vertical spacing too large
\begin{Theorem}
~
\begin{enumerate}[label=(\arabic*),leftmargin=*,align=left]
\item Item 1: More dummy text
\item Item 2: More dummy text
\end{enumerate}
\end{Theorem}

%% version 3: desirable output, but ugly solution via \vspace
\begin{Theorem}
~\vspace{-1.4em}
\begin{enumerate}[label=(\arabic*),leftmargin=*,align=left]
\item Item 1: More dummy text
\item Item 2: More dummy text
\end{enumerate}
\end{Theorem}

%% version 4: does it work with enumitem alone? (no, topsep seems to be ignored)
\begin{Theorem}
~
\begin{enumerate}[label=(\arabic*),leftmargin=*,align=left, topsep=-1.4em]
\item Item 1: More dummy text
\item Item 2: More dummy text
\end{enumerate}
\end{Theorem}
\end{document}

Best Answer

Don't use ~ just use nothing (or a blank line) in the markup. You then have the problem that latex lists use a run-in style for the first item if following a run-in heading. This is by design (it goes to some trouble to make that work) If you don't like that style the thing to do is change that rather than put markup in the document. I don't know my way round that code as well as I used to, but this seems to work, it may need a bit more care to ensure that page breaks etc are suppressed in all the right places but...

enter image description here

\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\newtheoremstyle{mythmstyle}%
{0.5em}% space above
{0.5em}% space below
{}% body font
{}% indent amount
{\sffamily\bfseries}% head font
{}% punctuation after head
{\newline}% space after head
{\thmname{#1}\ \thmnumber{#2}\ \thmnote{(#3)}}% head spec
\theoremstyle{mythmstyle}
\newtheorem{Theorem}{Theorem}


\makeatletter
\def\enumfix{%
\if@inlabel
 \noindent \par\nobreak\vskip-\parskip\vskip-\baselineskip\hrule\@height\z@
\fi}

\let\oldenumerate\enumerate
\def\enumerate{\enumfix\oldenumerate}


\begin{document}

%% version 1: vertical spacing correct
\begin{Theorem}
Dummy text
\begin{enumerate}[label=(\arabic*),leftmargin=*,align=left]
\item Item 1: More dummy text
\item Item 2: More dummy text
\end{enumerate}
\end{Theorem}


%% version 2a: vertical spacing too large
\begin{Theorem}

\begin{enumerate}[label=(\arabic*),leftmargin=*,align=left]
\item Item 1: More dummy text
\item Item 2: More dummy text
\end{enumerate}
\end{Theorem}
\end{document}