Lineare Überlagerung in einer benutzerdefinierten Umgebung

Lineare Überlagerung in einer benutzerdefinierten Umgebung

DasEine nette Lösung hat mir geholfen, zwei Umgebungen zusammenzubringen, aber je mehr ich diesen Code verwendete, desto mehr Fehler traten auf. Ich möchte ein lineares Overlay mit derselben Umgebung. Bitte sehen Sie sich dieses Beispiel an -

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

Ich verstehe nicht, was diese Fehler sind und warum sie auftreten. Ich möchte, dass dieses Overlay in derselben Umgebung funktioniert. Was kann getan werden, um dies zu erreichen?

Antwort1

Ihre aktuelle myframeDefinition erwartet ein optionales Argument

\newenvironment*{myframe}[1][]

Das optionale Argument ist, wenn es nicht vorhanden ist, standardmäßig nichts. Da Sie jedoch ein obligatorisches Argument in Ihrer Verwendung von angebenmyframe

\begin{myframe}{TEXT TEXT TEXT}

das Argument wird am Anfang des regulären platziert frame, das innerhalb eines liegt . Und da Sie - Listen können nur mit einem beginnen - \itemizenicht verwendet haben , erhalten Sie einen Fehler, der auf „möglicherweise ein fehlendes “ hinweist.\item\item\item

myframeDie Lösung besteht hier darin, ein obligatorisches Argument für „via“ anzufordern.

\newenvironment*{myframe}[1]

Bildbeschreibung hier eingeben

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

Antwort2

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

verwandte Informationen