Линейное наложение в пользовательской среде

Линейное наложение в пользовательской среде

Этотхорошее решение помогло мне объединить две среды, но по мере использования этого кода возникало все больше и больше ошибок. Я хочу линейное наложение с использованием той же среды. Пожалуйста, посмотрите этот пример -

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

Связанный контент