[Tex/LaTex] Conflict enumerate in beamer

#enumeratebeamerlists

Why when using enumerate environment I got error when place \includeonlyframes{} to compile only single frame. But this error dissapear when I remove \includeonlyframes{}.

enter image description here

This is my code:

\documentclass[t]{beamer}

\usepackage{framed, color}
\usepackage{fancybox}
\usepackage{amsmath}
\setbeamercovered{transparent}
\usepackage[labelsep=period]{caption}
\usepackage{setspace}
\usepackage{amssymb}
\usepackage{algorithmicx}
\usepackage{algorithm}
\usepackage{listings}
\usepackage{algcompatible}
\usepackage{algpseudocode}
\usepackage{subcaption}
\usepackage{float}
\usepackage{graphicx}
\usepackage{comment}

\includeonlyframes{current}


\begin{document}

\begin{frame}
msdsadnsajkdnsa
\end{frame}


\begin{frame}
\begin{enumerate}
\onslide<1->
\item ssasas
\begin{equation}
\frac{3q32}{swsasdasdas}
\end{equation}
\onslide<2->
\item msmssmms
\begin{eqnarray}
ssaasa
\end{eqnarray}
\end{enumerate}
\end{frame}

\begin{frame}[label=current]
Mama
\end{frame}

\end{document}

Best Answer

I can confIrm the problem; this simplified document reproduces the error:

\documentclass{beamer}

\includeonlyframes{current}

\begin{document}

\begin{frame}
\begin{enumerate}
\onslide<1->{%
\item test1
}
\onslide<2->{%
\item test2
}
\end{enumerate}
\end{frame}

\begin{frame}[label=current]
test3
\end{frame}

\end{document}

The error message:

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.16 \end{frame}

? 

This seems (at least to me) like a bug in beamer.

I can only offer you two work arounds:

  1. Use a label for the frame with the problematic enumerate:

    \documentclass{beamer}
    
    \includeonlyframes{current}
    
    \begin{document}
    
    \begin{frame}[label=anything]
    \begin{enumerate}
    \onslide<1->{%
    \item test1
    }
    \onslide<2->{%
    \item test2
    }
    \end{enumerate}
    \end{frame}
    
    \begin{frame}[label=current]
    test3
    \end{frame}
    
    \end{document}
    
  2. Instead of an "external" overlay specification with \onslide. use the fact that \item is overlay aware:

    \documentclass{beamer}
    
    \includeonlyframes{current}
    
    \begin{document}
    
    \begin{frame}
    \begin{enumerate}
    \item<1-> test1
    \item<2-> test2
    \end{enumerate}
    \end{frame}
    
    \begin{frame}[label=current]
    test3
    \end{frame}
    
    \end{document}