Evolucione el contenido a través de diapositivas de proyector: use `scope` para agrupar elementos

Evolucione el contenido a través de diapositivas de proyector: use `scope` para agrupar elementos

estoy aplicandohttps://tex.stackexchange.com/a/518585/114719donde uso scopepara agrupar elementos mientras desarrollo contenido en varias diapositivas del proyector:

\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
  \begin{overlayarea}{\linewidth}{0.7\paperheight}
    \centering
    \begin{tikzpicture}
    \useasboundingbox(-5.5,-.5)rectangle(6,5.5);%                                                                                                                                                           
      \coordinate (O) at (0, 0);
      \coordinate (A) at (5, 5);
      \coordinate (B) at (-5, 5);
      \begin{scope}<1->
        \draw (O) -- (B);
      \end{scope}
      \begin{scope}<2->
        \draw (O) -- (A);
      \end{scope}
      \draw<3> (A) -- (B);
      % \begin{scope}<3>                                                                                                                                                                                   
      %   \draw (A) -- (B);                                                                                                                                                                                
      % \end{scope}                                                                                                                                                                                        
    \end{tikzpicture}
  \end{overlayarea}
\end{frame}
\end{document}

En caso de que también agrupe elementos en la última diapositiva, reemplazando

      \draw<3> (A) -- (B);

con

      \begin{scope}<3>                                                                                                                                                                                   
         \draw (A) -- (B);                                                                                                                                                                                
      \end{scope}  

la serie de diapositivas se colapsa solo hasta la última diapositiva. ¿Por qué es así y cómo puedo agrupar elementos también en la última diapositiva usando scope?

Respuesta1

Si desea tener una versión de un alcance que se incluya en \onslide, puede hacerlo de la siguiente manera:

\newenvironment<>{Scope}[1][]{\onslide#2\begingroup\begin{scope}[#1]}{%
\end{scope}\endgroup}

Entonces puedes usar \begin{Scope}<3> ... \end{Scope}en lugar de \begin{scope}<3> ... \end{scope}, lo cual está un poco mal y no funciona, como dices.

Ejemplo:

\documentclass{beamer}
\usepackage{tikz}
\newenvironment<>{Scope}[1][]{\onslide#2\begingroup\begin{scope}[#1]}{%
\end{scope}\endgroup}
\begin{document}
\begin{frame}
  \begin{overlayarea}{\linewidth}{0.7\paperheight}
    \centering
    \begin{tikzpicture}
    \useasboundingbox(-5.5,-.5)rectangle(6,5.5);%  unnecessary                                                                                                                                                         
      \coordinate (O) at (0, 0);
      \coordinate (A) at (5, 5);
      \coordinate (B) at (-5, 5);
      \begin{Scope}<1->[blue]
        \draw (O) -- (B);
      \end{Scope}
      \begin{Scope}<2->
        \draw (O) -- (A);
      \end{Scope}
      \begin{Scope}<3>
         \draw (A) -- (B);
      \end{Scope}
    \end{tikzpicture}
  \end{overlayarea}
\end{frame}
\end{document}

ingrese la descripción de la imagen aquí

La línea azul es sólo para mostrar cómo puede agregar las opciones del alcance.

Personalmente sigo pensando que overlay-beamer-styles, como se ilustra enesta respuestay sugerido por Skillmon ayudará bastante a largo plazo, al menos lo estoy usando mucho precisamente para este tipo de aplicaciones.

Respuesta2

Aquí hay un método que usa \uncover, que se usa como (por ejemplo) \uncover<1->{..}, y todo lo que está dentro de las llaves {..}se muestra en la diapositiva 2, diapositiva 1 en adelante. Aquí está el código:

\documentclass{beamer}
\usepackage{tikz}
\begin{document} \begin{frame} \begin{overlayarea}{\linewidth}{0.7\paperheight}
\centering

\begin{tikzpicture}
\useasboundingbox(-5.5,-.5)rectangle(6,5.5);
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 5);
\coordinate (B) at (-5, 5);
\uncover<1->{\begin{scope}\draw (O) -- (B);\end{scope}}
\uncover<2->{\begin{scope}\draw (O) -- (A);\end{scope}}
\uncover<3>{\draw (A) -- (B);}
\end{tikzpicture}

\end{overlayarea} \end{frame} \end{document}

El \uncovercomando se puede anidar si desea mostrar un alcance después (por ejemplo) de la diapositiva 2, pero algunas partes del alcance más adelante. En su ejemplo, el código anterior dará el mismo resultado si reemplaza las tres líneas que comienzan con \uncoverlas siguientes líneas. Agregué sangría para mostrar el anidamiento.

\uncover<1->{
  \begin{scope}
  \draw (O) -- (B);
  \uncover<2->{
    \begin{scope}
    \draw (O) -- (A);
    \uncover<3>{
      \draw (A) -- (B);
    }
  \end{scope}}
\end{scope}}

información relacionada