投影机中的冲突枚举

投影机中的冲突枚举

\includeonlyframes{}为什么在使用枚举环境时,如果只编译单帧,就会出现错误。但是当我删除时,此错误就会消失\includeonlyframes{}

在此处输入图片描述

这是我的代码:

\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}

答案1

我可以确认该问题;这个简化的文档重现了该错误:

\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}

错误信息:

! 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}

? 

这似乎(至少对我而言)是一个错误beamer

我只能给你提供两个解决方法:

  1. 对有问题的枚举的框架使用标签:

    \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. 不要使用 .来指定“外部”覆盖,而是使用覆盖感知的\onslide事实:\item

    \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}
    

答案2

这是一个错误beamer(尽管可以说\item<n>这里的语法更好)。我将在下一个版本中检查修复beamer(在序言中):

\makeatletter
\def\gobble@onslide{%
  \@ifnextchar<%>
    \gobble@onslide@aux
    \@firstofone
}
\def\gobble@onslide@aux<#1>{\@firstofone}
\def\beamer@donoframe{%
  \beamer@slideinframe=1\relax%
  \setbox\beamer@tempbox\vbox\bgroup%
    \beamer@inframetrue%
    \leavevmode%
    \def\pause{}%
    \let\onslide\gobble@onslide % Change here
    \afterassignment\beamer@checknoslide\let\beamer@next}
\makeatother

问题是,当前版本的“不滑动”代码不会从 的使用中删除<...。通常这是无害的,但如果您包装了 ,则它会失败,因为然后在看到任何内容之前插入进行排版。另一方面,当您标记框架时,不打印它的机制略有不同(因为一切都需要正确完成),因此结果会有所不同。>\onslide\item<\item

相关内容