这很好的解决方案帮助我将两个环境整合在一起,但当我使用此代码时,出现了越来越多的错误。我想要使用相同环境的线性叠加。请看这个例子 -
\documentclass[8pt]{beamer}
\newenvironment*{myframe}[1][]%
{\begin{frame}{#1}%
\begingroup\itemize}
{\enditemize\endgroup
\end{frame}}
\begin{document}
\begin{myframe}{TEXT TEXT TEXT}
\item<1-> TEXT TEXT TEXT
\begin{enumerate}
\item<2-> TEXT TEXT TEXT
\item<3-> TEXT TEXT TEXT
\item<4-> TEXT TEXT TEXT
\end{enumerate}
\item<5-> TEXT TEXT TEXT
\end{myframe}
\end{document}
我不明白这些错误是什么以及为什么会发生。我希望此覆盖在相同的环境中工作。如何才能实现它?
答案1
您当前的myframe
定义需要一个可选参数
\newenvironment*{myframe}[1][]
如果不存在可选参数,则默认为无。但是,由于您在使用myframe
\begin{myframe}{TEXT TEXT TEXT}
参数放在常规的 的开头frame
,它位于 内\itemize
。而且,由于您没有使用\item
- 列表只能以 开头\item
- 您会收到一个错误,指出“可能缺少\item
”。
此处的修复方法是要求myframe
via具有强制参数
\newenvironment*{myframe}[1]
\documentclass{beamer}
\newenvironment*{myframe}[1]
{\begin{frame}{#1}%
\begingroup\itemize}
{\enditemize\endgroup
\end{frame}}
\begin{document}
\begin{myframe}{TEXT TEXT TEXT}
\item<1-> TEXT TEXT TEXT
\begin{enumerate}
\item<2-> TEXT TEXT TEXT
\item<3-> TEXT TEXT TEXT
\item<4-> TEXT TEXT TEXT
\end{enumerate}
\item<5-> TEXT TEXT TEXT
\end{myframe}
\end{document}
答案2
\documentclass[8pt]{beamer}
\usepackage{environ}
\NewEnviron{myframe}[1]%
{\begin{frame}{#1}%
\begin{itemize}
\BODY
\end{itemize}
\end{frame}}
\begin{document}
\begin{myframe}{TEXT TEXT TEXT}
\item<1-> TEXT TEXT TEXT
\begin{enumerate}
\item<2-> TEXT TEXT TEXT
\item<3-> TEXT TEXT TEXT
\item<4-> TEXT TEXT TEXT
\end{enumerate}
\item<5-> TEXT TEXT TEXT
\end{myframe}
\end{document}