Commits

Anonymous committed 0ec0cd1

*** empty log message ***

Comments (0)

Files changed (7)

base/beamerbasedecode.sty

 
 \def\beamer@decode{%
   \global\beamer@minimum=10000\relax%
+  \gdef\beamer@decaction{}%
+  \gdef\beamer@decactionrev{}%
   \gdef\beamer@decodefound{+}%
   \beamer@@decodefind}
 \def\beamer@@decodefind#1| {%
     \fi%
     \let\beamer@next=\beamer@@decodefind%
   \fi%
-  \beamer@next}
+ \beamer@next}
 
 \def\beamer@@decodefound{%
-  \ifx\beamer@action\beamer@currentaction%
+  \ifx\beamer@action\beamer@default%
     \expandafter\gdef\expandafter\beamer@decodefound\expandafter{\beamer@spec}%
+  \else
+    \xdef\beamer@decaction{\beamer@decaction{\beamer@action<\beamer@spec>}}
+    \xdef\beamer@decactionrev{{\beamer@action}\beamer@decactionrev}
   \fi}
 \def\beamer@currentaction{default}
 
 %
 
 \def\beamer@parsebr#1{\@ifnextchar<{\beamer@@parsebr#1}{#1}}
+\def\beamer@parsebropt#1{\@ifnextchar<{\beamer@@parsebr#1}{#1<+>}}
 \def\beamer@@parsebr#1{\begingroup\catcode`:=12\catcode`|=12\beamer@parseinner{#1}}%
 \def\beamer@parseinner#1<#2>{\endgroup\edef\beamer@spec{<#2>}%
   \expandafter#1\beamer@spec}
 
-\def\alt{\beamer@parsebr\@alt}
+\def\alt{\beamer@parsebropt\@alt}
 \long\def\@alt<#1>#2#3{%
   \def\beamer@doifnotinframe{#3}\def\beamer@doifinframe{#2}%
   {\setbox0=\hbox{\beamer@decode#1| stop:0| }}\beamer@donow}
 
 \def\beamer@plus{+}
 
-\def\action{\beamer@parsebr\beamer@parsedaction}
+\def\action{\beamer@parsebropt\beamer@parsedaction}
 \long\def\beamer@parsedaction<#1>#2{%
   \def\beamer@doifnotinframe{}\def\beamer@doifinframe{}%
-  \gdef\beamer@todo{#2}%
-  {{\setbox0=\hbox{\beamer@decode#1| stop:0| }}%
-    \ifx\beamer@decodefound\beamer@plus\else\beamer@actionadd\uncover\fi}%
-  {\def\beamer@currentaction{alert}%
-    {\setbox0=\hbox{\beamer@decode#1| stop:0| }}%
-    \ifx\beamer@decodefound\beamer@plus\else\beamer@actionadd\alert\fi}%
-  {\def\beamer@currentaction{only}%
-    {\setbox0=\hbox{\beamer@decode#1| stop:0| }}%
-    \ifx\beamer@decodefound\beamer@plus\else\beamer@actionadd\only\fi}%
-  {\def\beamer@currentaction{visible}%
-    {\setbox0=\hbox{\beamer@decode#1| stop:0| }}%
-    \ifx\beamer@decodefound\beamer@plus\else\beamer@actionadd\visible\fi}%
-  {\def\beamer@currentaction{invisible}%
-    {\setbox0=\hbox{\beamer@decode#1| stop:0| }}%
-    \ifx\beamer@decodefound\beamer@plus\else\beamer@actionadd\invisible\fi}%
-  {\def\beamer@currentaction{uncover}%
-    {\setbox0=\hbox{\beamer@decode#1| stop:0| }}%
-    \ifx\beamer@decodefound\beamer@plus\else\beamer@actionadd\uncover\fi}%
+  {{\setbox0=\hbox{\beamer@decode#1| stop:0| }}}%
+  \ifx\beamer@decodefound\beamer@plus%
+    \long\def\beamer@todo{#2}%
+  \else%
+    \expandafter\long\expandafter\def\expandafter\beamer@todo%
+    \expandafter{\expandafter\uncover\expandafter<\beamer@decodefound>{#2}}%
+  \fi%
+  \expandafter\beamer@processactions\beamer@decaction{}%
   \beamer@todo}
 
-\def\beamer@actionadd#1{%
-  \expandafter\beamer@toarg\expandafter{\beamer@todo}{#1}}
-\long\def\beamer@toarg#1#2{%
-  \expandafter\long\expandafter\gdef\expandafter\beamer@todo%
-  \expandafter{\expandafter#2\expandafter<\beamer@decodefound>{#1}}}
+\def\beamer@processactions#1{%
+  \beamer@ifempty{#1}{}{%
+    \expandafter\beamer@@processactions\expandafter{\beamer@todo}#1}}
+\long\def\beamer@@processactions#1#2<#3>{%
+  \expandafter\long\expandafter\def\expandafter\beamer@todo\expandafter{%
+    \csname#2\endcsname<#3>{#1}}%
+  \beamer@processactions}
+
+\def\actionenv{\beamer@parsebropt\beamer@parsedactionenv}
+\def\beamer@parsedactionenv<#1>{%
+  \def\beamer@doifnotinframe{}\def\beamer@doifinframe{}%
+  {{\setbox0=\hbox{\beamer@decode#1| stop:0| }}}%
+  \ifx\beamer@decodefound\beamer@plus%
+    \def\beamer@todobegin{}%
+    \def\beamer@todoend{}%
+  \else%
+    \edef\beamer@todobegin{\noexpand\begin{uncoverenv}<\beamer@decodefound>}%
+    \def\beamer@todoend{\end{uncoverenv}}
+  \fi%
+  \expandafter\beamer@processactionsbegin\beamer@decaction{}%
+  \expandafter\beamer@processactionsend\beamer@decaction{}%
+  \beamer@todobegin}
+\def\endactionenv{\beamer@todoend}
+
+\def\beamer@processactionsbegin#1{%
+  \beamer@ifempty{#1}{}{%
+    \expandafter\beamer@@processactionsbegin\expandafter{\beamer@todobegin}#1}}
+\long\def\beamer@@processactionsbegin#1#2<#3>{%
+  \def\beamer@todobegin{\begin{#2env}<#3>#1}%
+  \beamer@processactionsbegin}
+
+
+\def\beamer@processactionsend#1{%
+  \beamer@ifempty{#1}{}{%
+    \expandafter\beamer@@processactionsend\expandafter{\beamer@todoend}#1}}
+\long\def\beamer@@processactionsend#1#2<#3>{%
+  \def\beamer@todoend{#1\end{#2env}}%
+  \beamer@processactionsend}
 
 
 
 
 
 
+\newcount\beamer@argscount
+
+%
+% newenvironment extension
+%
+\let\beamer@orignewenvironment=\newenvironment
+
+\def\newenvironment{\@ifnextchar<{\beamer@newenv}{\beamer@orignewenvironment}}
+\def\beamer@newenv<>{\@star@or@long\beamer@new@environment}
+\def\beamer@new@environment#1{\@ifnextchar[{\beamer@@newenv{#1}}{\beamer@newenvnoopt{#1}{0}}}
+\def\beamer@@newenv#1[#2]{\@ifnextchar[{\beamer@newenvopt{#1}{#2}}{\beamer@newenvnoopt{#1}{#2}}}
+\long\def\beamer@newenvnoopt#1#2#3#4{%
+  \expandafter\def\csname#1\endcsname{\beamer@sort{#2}{\csname beamerx@#1\endcsname}}%
+  \expandafter\long\expandafter\def\csname end#1\endcsname{#4}%
+  \beamer@argscount=#2\relax%
+  \advance\beamer@argscount by 1\relax%
+  \expandafter\newcommand\expandafter*\csname beamerx@#1\endcsname[\beamer@argscount]{#3}%
+}
+\long\def\beamer@newenvopt#1#2[#3]#4#5{%
+  \expandafter\def\csname#1\endcsname{\beamer@presort{#2}{\csname beamerx@#1\endcsname}{#3}}%
+  \expandafter\long\expandafter\def\csname end#1\endcsname{#5}%
+  \beamer@argscount=#2\relax%
+  \advance\beamer@argscount by 1\relax%
+  \expandafter\newcommand\expandafter*\csname beamerx@#1\endcsname[\beamer@argscount]{#4}%
+}
+
+
+\let\beamer@origrenewenvironment=\renewenvironment
+
+\def\renewenvironment{\@ifnextchar<{\beamer@renewenv}{\beamer@origrenewenvironment}}
+\def\beamer@renewenv<>#1{%
+  \edef\beamer@do{\csname original#1\endcsname=\expandafter\noexpand\csname#1\endcsname}
+  \expandafter\let\beamer@do%
+  \edef\beamer@do{\csname endoriginal#1\endcsname=\expandafter\noexpand\csname end#1\endcsname}
+  \expandafter\let\beamer@do%
+  \newenvironment<>{#1}}
+
+
+%
+% newcommand extension
+%
+\let\beamer@orignewcommand=\newcommand
+
+\def\newcommand{\@ifnextchar<{\beamer@newcom}{\beamer@orignewcommand}}
+\def\beamer@newcom<>{\@star@or@long\beamer@new@command}
+\def\beamer@new@command#1{\@ifnextchar[{\beamer@@newcom{#1}}{\beamer@newcomnoopt{#1}{0}}}
+\def\beamer@@newcom#1[#2]{\@ifnextchar[{\beamer@newcomopt{#1}{#2}}{\beamer@newcomnoopt{#1}{#2}}}
+\long\def\beamer@newcomnoopt#1#2#3{%
+  \def#1{\beamer@sort{#2}{\csname beamerx@\string#1\endcsname}}%
+  \beamer@argscount=#2\relax%
+  \advance\beamer@argscount by 1\relax%
+  \expandafter\newcommand\expandafter*\csname beamerx@\string#1\endcsname[\beamer@argscount]{#3}%
+}
+\long\def\beamer@newcomopt#1#2[#3]#4{%
+  \def#1{\beamer@presort{#2}{\csname beamerx@\string#1\endcsname}{#3}}%
+  \beamer@argscount=#2\relax%
+  \advance\beamer@argscount by 1\relax%
+  \expandafter\newcommand\expandafter*\csname beamerx@\string#1\endcsname[\beamer@argscount]{#4}%
+}
+
+\let\beamer@origrenewcommand=\renewcommand
+
+\def\renewcommand{\@ifnextchar<{\beamer@renewcom}{\beamer@origrenewcommand}}
+\def\beamer@renewcom<>#1{%
+  \expandafter\def\expandafter\@name\expandafter{\csname @orig@\string#1\endcsname}%
+  \expandafter\let\@name=#1\relax%
+  \newcommand<>#1}
+
+
+\def\beamer@presort#1#2#3{%
+  \long\def\beamer@todo{#2}%
+  \def\beamer@ospec{}%
+  \beamer@argscount=#1\relax%
+  \beamer@prechecka{#3}}
+\def\beamer@prechecka#1{\@ifnextchar<{\beamer@preget{#1}}{\beamer@precheckb{#1}}}
+\def\beamer@preget#1<#2>{\def\beamer@ospec{<#2>}\beamer@precheckb{#1}}
+\def\beamer@precheckb#1{\@ifnextchar[{\beamer@pregetb}{\beamer@pregetb[#1]}}
+\def\beamer@pregetb[#1]{%
+  \expandafter\long\expandafter\def\expandafter\beamer@todo\expandafter{\beamer@todo{#1}}%
+  \advance\beamer@argscount by-1\relax%
+  \beamer@parseargs%
+} 
+
+\def\beamer@sort#1#2{%
+  \long\def\beamer@todo{#2}%
+  \def\beamer@ospec{}%
+  \beamer@argscount=#1\relax%
+  \beamer@parseargs}
+
+\def\beamer@parseargs{%
+  \ifnum\beamer@argscount=0%
+    \let\next=\beamer@finalargscheck%
+  \else%
+    \let\next=\beamer@lookforarg%
+  \fi%
+  \next}
+\def\beamer@lookforarg{%
+  \@ifnextchar<\beamer@foundspec\beamer@readarg}
+\def\beamer@foundspec<#1>{%
+  \def\beamer@ospec{<#1>}%
+  \beamer@lookforarg}
+\def\beamer@readarg#1{%
+  \expandafter\long\expandafter\def\expandafter\beamer@todo\expandafter{\beamer@todo{#1}}%
+  \advance\beamer@argscount by-1\relax%
+  \beamer@parseargs%
+}
+
+\def\beamer@finalargscheck{\@ifnextchar<\beamer@finalspec\beamer@finalnospec}
+\def\beamer@finalspec<#1>{\def\beamer@ospec{<#1>}\beamer@finalnospec}
+\def\beamer@finalnospec{%
+  \expandafter\beamer@todo\expandafter{\beamer@ospec}}
+
+
 
 %%% Local Variables: 
 %%% mode: latex

base/beamerbaselocalstructure.sty

   \beamer@templatestartstructure}
   {\beamer@templateendstructure}{}{}
 
-\newoverlaycommand{\alert}{\beamer@alert}{}
-\def\beamer@alert#1{\begin{alertenv}#1\end{alertenv}}
-
-\newoverlaycommand{\structure}{\beamer@structure}{}
-\def\beamer@structure#1{\begin{structureenv}#1\end{structureenv}}
+\newcommand<>{\alert}[1]{\begin{alertenv}#2#1\end{alertenv}}
+\newcommand<>{\structure}[1]{\begin{structureenv}#2#1\end{structureenv}}
 
 \long\def\usealerttemplate#1#2{%
   \def\beamer@templatestartalert{#1}\def\beamer@templateendalert{#2}}
   \long\def\useexampleblocktemplate#1#2{%
     \def\beamer@beginexampleblocktemplate{#1}
     \def\beamer@endexampleblocktemplate{#2}}
+
+\newenvironment<>{block}[1]{%
+  \begin{actionenv}#2%
+    \def\insertblockname{#1}%
+    \par%
+    \beamer@beginblocktemplate}
+  {\par%
+    \beamer@endblocktemplate%
+  \end{actionenv}}
+
+\newenvironment<>{alertblock}[1]{%
+  \begin{actionenv}#2%
+    \def\insertblockname{#1}%
+    \par%
+    \beamer@beginalertblocktemplate}
+  {\par%
+    \beamer@endalertblocktemplate%
+  \end{actionenv}}
+
+\newenvironment<>{exampleblock}[1]{%
+  \begin{actionenv}#2%
+    \def\insertblockname{#1}%
+    \par%
+    \beamer@beginexampleblocktemplate}
+  {\par%
+    \beamer@endexampleblocktemplate%
+  \end{actionenv}}
 }
-\newoverlayenvironment{block}[1]{%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginblocktemplate}{\par\beamer@endblocktemplate}%
-  {\beamer@startcovered%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginblocktemplate}{\par\beamer@endblocktemplate\beamer@endcovered}
 
-\newoverlayenvironment{alertblock}[1]{%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginalertblocktemplate}{\par\beamer@endalertblocktemplate}%
-  {\beamer@startcovered%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginalertblocktemplate}{\par\beamer@endalertblocktemplate\beamer@endcovered}
-
-\newoverlayenvironment{exampleblock}[1]{%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginexampleblocktemplate}{\par\beamer@endexampleblocktemplate}%
-  {\beamer@startcovered%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginexampleblocktemplate}{\par\beamer@endexampleblocktemplate\beamer@endcovered}
 
 \article
 {
-  \newoverlayenvironment{block}[1]{%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginblocktemplate}{\par\beamer@endblocktemplate}%
-  {\def\insertblockname{#1}\begin{onlyenv}<all:0>}{\end{onlyenv}}
-
-  \newoverlayenvironment{alertblock}[1]{%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginalertblocktemplate}{\par\beamer@endalertblocktemplate}%
-  {\def\insertblockname{#1}\begin{onlyenv}<all:0>}{\end{onlyenv}}
-
-  \newoverlayenvironment{exampleblock}[1]{%
-  \def\insertblockname{#1}%
-  \par%
-  \beamer@beginexampleblocktemplate}{\par\beamer@endexampleblocktemplate}%
-  {\def\insertblockname{#1}\begin{onlyenv}<all:0>}{\end{onlyenv}}
-
   \useblocktemplate{\par\medskip{\noindent\textbf{\insertblockname}}\par\noindent\ignorespaces}{\medskip}
   \usealertblocktemplate{\par\medskip{\noindent\textbf{\emph{\insertblockname}}}\par\noindent\ignorespaces}{\medskip}
   \useexampleblocktemplate{\par\medskip{\noindent\emph{\insertblockname}}\par\noindent\ignorespaces}{\medskip}
 % Abstract command
 %
 
-\newoverlayenvironment{abstract}%
-{\beamer@templateabstractstart}{\beamer@templateabstractend}
-{\beamer@startcovered\beamer@templateabstractstart}{\beamer@templateabstractend\beamer@endcovered}
-
+\newenvironment<>{abstract}%
+{\begin{actionenv}#1\beamer@templateabstractstart}{\beamer@templateabstractend\end{actionenv}}
 
 \newcommand\usetemplateabstract[2]{\def\beamer@templateabstractstart{#1}\def\beamer@templateabstractend{#2}}
 
 % Verse, quotation, quote environments
 %
     
-\newoverlayenvironment{verse}
-               {\let\\\@centercr
+\newenvironment<>{verse}
+               {\begin{actionenv}#1\let\\\@centercr
                 \list{}{\itemsep      \z@
                         \itemindent   -1.5em%
                         \listparindent\itemindent
                         \advance\leftmargin 1.5em
                         \parsep       .75em plus .25em minus.25em}%
                 \item\relax\beamer@templateversestart}
-               {\beamer@templateverseend\endlist}
-               {\beamer@startcovered\let\\\@centercr
-                \list{}{\itemsep      \z@
-                        \itemindent   -1.5em%
-                        \listparindent\itemindent
-                        \rightmargin  \leftmargin
-                        \advance\leftmargin 1.5em
-                        \parsep       .75em plus .25em minus.25em}%
-                \item\relax\beamer@templateversestart}
-               {\beamer@templateverseend\endlist\beamer@endcovered}
+               {\beamer@templateverseend\endlist\end{actionenv}}
 
 \newcommand\usetemplateverse[2]{\def\beamer@templateversestart{#1}\def\beamer@templateverseend{#2}}
 \usetemplateverse{\rmfamily\itshape}{}
                
-\newoverlayenvironment{quotation}
-               {\list{}{\listparindent 1.5em%
+\newenvironment<>{quotation}
+               {\begin{actionenv}#1\list{}{\listparindent 1.5em%
                         \itemindent    \listparindent
                         \rightmargin   \leftmargin
                         \parsep        \z@ \@plus\p@}%
                 \item\relax\beamer@templatequotationstart}
-               {\beamer@templatequotationend\endlist}
-               {\beamer@startcovered\list{}{\listparindent 1.5em%
-                        \itemindent    \listparindent
-                        \rightmargin   \leftmargin
-                        \parsep        \z@ \@plus\p@}%
+               {\beamer@templatequotationend\endlist\end{actionenv}}
+
+\newenvironment<>{quote}
+               {\begin{actionenv}#1\list{}{\rightmargin\leftmargin}%
                 \item\relax\beamer@templatequotationstart}
-               {\beamer@templatequotationend\endlist\beamer@endcovered}
+               {\beamer@templatequotationend\endlist\end{actionenv}}
 
-\newoverlayenvironment{quote}
-               {\list{}{\rightmargin\leftmargin}%
-                \item\relax\beamer@templatequotationstart}
-               {\beamer@templatequotationend\endlist}
-               {\beamer@startcovered\list{}{\rightmargin\leftmargin}%
-                \item\relax\beamer@templatequotationstart}
-               {\beamer@templatequotationend\endlist\beamer@endcovered}
-
+             
 % applies both to quote and quotation
 \newcommand\usetemplatequotation[2]{\def\beamer@templatequotationstart{#1}\def\beamer@templatequotationend{#2}}
 \usetemplatequotation{\itshape}{}

base/beamerbaseoptions.sty

   \fi
   \edef\@tempa{%
     \noexpand\setkeys{\@currname}{\@tempa\@ptionlist{\@currname.\@currext}}}%
+  \let\beamer@origkverr\KV@err%
+  \ifx\@currext\@clsextension\let\KV@errx=\@gobble\fi% never mind
   \@tempa%
+  \let\KV@err\bemaer@origkverr%
   \AtEndOfPackage{\let\@unprocessedoptions\relax}}
 
 \def\ExecuteOptionsBeamer#1{%

base/beamerbaseoverlay.sty

         {averagebackgroundcolor}%
         \xdef\beamer@colorhook{!##2!beamer@freeze%
           \the\beamer@coveringdepth\beamer@colorhook}%
-        \def\beamer@pgfextension{!##2opaque}%
+        \gdef\beamer@pgfextension{!##2opaque}%
         \color{.}%
       }%
       {%
 \def\beamer@itemcheckopt{\@ifnextchar[{\beamer@itemcheckopta}{\beamer@origitem}}
 \long\def\beamer@itemcheckopta[#1]{\@ifnextchar<{\beamer@itemreverse[#1]}{\beamer@origitem[#1]}}
 \long\def\beamer@itemreverse[#1]<#2>{\beamer@parseitem<#2>[#1]}
-\def\beamer@parseitem<#1>{\@ifnextchar<{\beamer@parseitemalert<#1>}{\beamer@itemcheckoptb<#1>}}
-\def\beamer@itemcheckoptb<#1>{\@ifnextchar[{\beamer@itemcheckoptc<#1>}{\beamer@itemuncover<#1>}}
-\long\def\beamer@itemcheckoptc<#1>[#2]{\@ifnextchar<{\beamer@itemreversea<#1>[#2]}{\beamer@itemuncover<#1>[#2]}}
-\def\beamer@itemreversea<#1>[#2]<#3>{\beamer@parseitemalert<#1><#3>[#2]}
 
-\def\beamer@closeitem{}
-\def\beamer@parseitemalert<#1><#2>{%
-  \alt<#1>{%
-    \alt<#2>{\begin{alertenv}\gdef\beamer@closeitem{\end{alertenv}}}%
-    {\gdef\beamer@closeitem{}}%
-    \beamer@origitem}%
-  {\beamer@startcovered\gdef\beamer@closeitem{\beamer@endcovered}\beamer@origitem}%
-  }
-\def\beamer@itemuncover<#1>{%
-  \alt<#1>{%
-    \gdef\beamer@closeitem{}\beamer@origitem}%
-  {\beamer@startcovered\gdef\beamer@closeitem{\beamer@endcovered}\beamer@origitem}%
-}
+\def\beamer@parseitem<#1>{%
+  \gdef\beamer@closeitem{\end{actionenv}}%
+  \begin{actionenv}<#1>\beamer@origitem}
 
 
 \newcount\beamer@trivlistdepth
 \newoverlaycommand{\uncover}{\@firstofone}{\makeinvisible}
 \newoverlaycommand{\visible}{\@firstofone}{\beamer@reallymakeinvisible}
 \newoverlaycommand{\invisible}{\beamer@reallymakeinvisible}{\@firstofone}
+\newoverlayenvironment{visibleenv}{}{}{\pgfsys@begininvisible}{\pgfsys@endinvisible}
+\newoverlayenvironment{invisibleenv}{\pgfsys@begininvisible}{\pgfsys@endinvisible}{}{}
 \newoverlayenvironment{uncoverenv}{}{}{\beamer@startcovered}{\beamer@endcovered}
 \newoverlayenvironment{onlyenv}{}{}{\begingroup\setbox0=\vbox\bgroup}{\egroup\endgroup}
 \renewoverlaycommand{\color}{\beameroriginal{\color}}{\beamer@gobbleoptionalinsp}
   \newoverlaycommand{\invisible}{\@gobble}{\@firstofone}
   \newoverlayenvironment{uncoverenv}{}{}{\begingroup\setbox0=\vbox\bgroup}{\egroup\endgroup}
   \newoverlayenvironment{onlyenv}{}{}{\begingroup\setbox0=\vbox\bgroup}{\egroup\endgroup}
+  \newoverlayenvironment{visibleenv}{}{}{\begingroup\setbox0=\vbox\bgroup}{\egroup\endgroup}
+  \newoverlayenvironment{invisibleenv}{\begingroup\setbox0=\vbox\bgroup}{\egroup\endgroup}{}{}
 
   \AtBeginDocument{
     % These have to be done late...
 \define@key{beamertrans}{direction}{\def\beamer@transdir{ /Di #1 }}
 \define@key{beamertrans}{duration}{\def\beamer@dur{ /D #1 }}
 
-\def\beamer@dotrans#1{\@ifnextchar[{\beamer@@dotrans{#1}}{\beamer@@dotrans{#1}[]}}
-\def\beamer@@dotrans#1[#2]{%
+\newcommand\beamer@dotrans[2][]{%
   \def\beamer@transdir{}%
   \def\beamer@dur{}%
-  \setkeys{beamertrans}{#2}%
-  \edef\beamer@temp{{pdfpagetransition={#1 \beamer@transdir\space\beamer@dur}}}
+  \setkeys{beamertrans}{#1}%
+  \edef\beamer@temp{{pdfpagetransition={#2 \beamer@transdir\space\beamer@dur}}}
   \expandafter\hypersetup\beamer@temp}
 
 \article
 
 \common
 {
-  \newoverlaycommand{\transblindshorizontal}{\beamer@dotrans{Blinds /Dm /H}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transblindsvertical}{\beamer@dotrans{Blinds /Dm /V}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transboxin}{\beamer@dotrans{Box /M /I}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transboxout}{\beamer@dotrans{Box /M /O}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transcover}{\beamer@dotrans{Cover}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transdissolve}{\beamer@dotrans{Dissolve}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transfade}{\beamer@dotrans{Fade}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transglitter}{\beamer@dotrans{Glitter}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transpush}{\beamer@dotrans{Push}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transsplitverticalin}{\beamer@dotrans{Split /Dm /V /M /I}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transsplitverticalout}{\beamer@dotrans{Split /Dm /V /M /O}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transsplithorizontalin}{\beamer@dotrans{Split /Dm /H /M /I}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transsplithorizontalout}{\beamer@dotrans{Split /Dm /H /M /O}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transuncover}{\beamer@dotrans{Uncover}}{\beamer@ignoreoptional}
-  \newoverlaycommand{\transwipe}{\beamer@dotrans{Wipe}}{\beamer@ignoreoptional}
+  \newcommand<>{\transblindshorizontal}[1][]{\only#2{\beamer@dotrans[#1]{Blinds /Dm /H}}}
+  \newcommand<>{\transblindsvertical}[1][]{\only#2{\beamer@dotrans[#1]{Blinds /Dm /V}}}
+  \newcommand<>{\transboxin}[1][]{\only#2{\beamer@dotrans[#1]{Box /M /I}}}
+  \newcommand<>{\transboxout}[1][]{\only#2{\beamer@dotrans[#1]{Box /M /O}}}
+  \newcommand<>{\transcover}[1][]{\only#2{\beamer@dotrans[#1]{Cover}}}
+  \newcommand<>{\transdissolve}[1][]{\only#2{\beamer@dotrans[#1]{Dissolve}}}
+  \newcommand<>{\transfade}[1][]{\only#2{\beamer@dotrans[#1]{Fade}}}
+  \newcommand<>{\transglitter}[1][]{\only#2{\beamer@dotrans[#1]{Glitter}}}
+  \newcommand<>{\transpush}[1][]{\only#2{\beamer@dotrans[#1]{Push}}}
+  \newcommand<>{\transsplitverticalin}[1][]{\only#2{\beamer@dotrans[#1]{Split /Dm /V /M /I}}}
+  \newcommand<>{\transsplitverticalout}[1][]{\only#2{\beamer@dotrans[#1]{Split /Dm /V /M /O}}}
+  \newcommand<>{\transsplithorizontalin}[1][]{\only#2{\beamer@dotrans[#1]{Split /Dm /H /M /I}}}
+  \newcommand<>{\transsplithorizontalout}[1][]{\only#2{\beamer@dotrans[#1]{Split /Dm /H /M /O}}}
+  \newcommand<>{\transuncover}[1][]{\only#2{\beamer@dotrans[#1]{Uncover}}}
+  \newcommand<>{\transwipe}[1][]{\only#2{\beamer@dotrans[#1]{Wipe}}}
 }
 
-\newoverlaycommand{\transduration}{\beamer@transdur}{\@gobble}
-\def\beamer@transdur#1{\hypersetup{pdfpageduration=#1}}
+\newcommand<>{\transduration}[1]{\only#2{\hypersetup{pdfpageduration=#1}}}
 
 \article
 {
-  \newoverlaycommand{\transduration}{\@gobble}{\@gobble}
+  \newcommand<>{\transduration}[1]{}
 }
 
 

examples/beamerexample1.tex

   \begin{Definition}
     A Turing machine is \alert{almost-overhead-free} if
     \begin{enumerate}
-    \item<1-><1>
+    \item<1-| alert@1>
       it has only a single tape,
-    \item<2-><2>
+    \item<2-| alert@2>
       writes only on input cells,
-    \item<3-><3>
+    \item<3-| alert@3>
       writes only symbols drawn from the input alphabet\\
       plus one special symbol.
     \end{enumerate}

examples/beamerexample5.tex

         computed efficiently on average,
       \item
         approximated, or
-      \item<1-><1->
+      \item<alert@1->
         enumerated.
       \end{itemize}
     \end{block}
       \begin{block}{Definition (1987, 1989, 1994, 2001)}
         An \alert{$m$-enumerator} for a function~$f$
         \begin{enumerate}
-        \item<1-><1-4>
+        \item<alert@1-4>
           reads $n$ input words $w_1$, \dots, $w_n$,
-        \item<1-><5>
+        \item<alert@5>
           does a computation,
-        \item<1-><6-8>
+        \item<alert@6-8>
           outputs at most $m$ values,
-        \item<1-><9>
+        \item<alert@9>
           one of which is $f(w_1,\dots,w_n)$.
         \end{enumerate}
       \end{block}
       (\uncover<2->{\alert<1-2>{1987},} \uncover<3->{\alert<3>{1989},}
       \uncover<4->{\alert<4>{1992}})}<2-> 
     \begin{enumerate}
-    \item<2-><2>
+    \item<2-| alert@2>
       If $\chi_A^n$ is $n$-enumerable by a Turing machine, then $A$ is
         recursive.
-    \item<3-><3>
+    \item<3-| alert@3>
       If $\NumA^2$ is $2$-enumerable by a Turing machine, then $A$ is
         recursive.
-    \item<4-><4>
+    \item<4-| alert@4>
       If $\NumA^n$ is $n$-enumerable by a Turing machine that never
         enumerates both $0$ and~$n$, then $A$ is recursive.
     \end{enumerate}

lyx/examples/beamerlyxexample1.lyx

 \layout Standard
   
 \backslash 
-pgfuncover<2->{
+uncover<2->{
 \layout Standard
     
 \backslash 
 \layout Standard
   
 \backslash 
-pgfuncover<3->{
+uncover<3->{
 \layout Standard
     
 \backslash 
 \layout Standard
   
 \backslash 
-pgfuncover<2->{
+uncover<2->{
 \backslash 
 pgfxycurve(1.75,1.5)(1.75,1)(0,1.5)(0,1.05)}
 \layout Standard
   
 \backslash 
-pgfuncover<3->{
+uncover<3->{
 \backslash 
 pgfxycurve(2.65,2.5)(3.75,2.5)(7,1)(7,1.9)}
 \layout Standard
 
 .
 \end_deeper 
+\layout Pause
+
 \layout Column
 
 3.6cm
 \end_inset 
 
 
-\begin_inset ERT
-status Collapsed
-
-\layout Standard
-<2->
-\end_inset 
-
-
 \begin_deeper 
 \layout Itemize
 
 \end_deeper 
 \layout Examples
 
-
-\begin_inset ERT
-status Collapsed
-
-\layout Standard
-<2->
-\end_inset 
-
-
 \begin_deeper 
 \layout Itemize
 
 
 .
 \end_deeper 
+\layout Pause
+
 \layout Column
 
 3.6cm
 \end_inset 
 
 
-\begin_inset ERT
-status Collapsed
-
-\layout Standard
-<3->
-\end_inset 
-
-
 \begin_deeper 
 \layout Itemize
 
 \end_deeper 
 \layout Examples
 
-
-\begin_inset ERT
-status Collapsed
-
-\layout Standard
-<3->
-\end_inset 
-
-
 \begin_deeper 
 \layout Itemize
 
 
 
 \begin_inset ERT
-status Collapsed
-
-\layout Standard
-<1-><1>
+status Inlined
+
+\layout Standard
+<alert@1>
 \end_inset 
 
 Is input 
 
 
 \begin_inset ERT
-status Collapsed
-
-\layout Standard
-<2-><2-8>
+status Inlined
+
+\layout Standard
+<2-| alert@2-8>
 \end_inset 
 
 Map 
 
 
 \begin_inset ERT
-status Collapsed
-
-\layout Standard
-<9-><9>
+status Inlined
+
+\layout Standard
+<9-| alert@9>
 \end_inset 
 
 Query:
 
 
 \begin_inset ERT
-status Collapsed
-
-\layout Standard
-<10-><10-11>
+status Inlined
+
+\layout Standard
+<10-| alert@10-11>
 \end_inset 
 
 A path in\SpecialChar ~
 
 
 \begin_inset ERT
-status Collapsed
-
-\layout Standard
-<12-><12-13>
+status Inlined
+
+\layout Standard
+<12-| alert@12-13>
 \end_inset 
 
 A length-3 path in\SpecialChar ~