\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
。
我只能给你提供两个解决方法:
对有问题的枚举的框架使用标签:
\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}
不要使用 .来指定“外部”覆盖,而是使用覆盖感知的
\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