自定义环境中的线性叠加

自定义环境中的线性叠加

很好的解决方案帮助我将两个环境整合在一起,但当我使用此代码时,出现了越来越多的错误。我想要使用相同环境的线性叠加。请看这个例子 -

\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”。

此处的修复方法是要求myframevia具有强制参数

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

相关内容