![Evolucione el contenido a través de diapositivas de proyector: use `scope` para agrupar elementos](https://rvso.com/image/405358/Evolucione%20el%20contenido%20a%20trav%C3%A9s%20de%20diapositivas%20de%20proyector%3A%20use%20%60scope%60%20para%20agrupar%20elementos.png)
estoy aplicandohttps://tex.stackexchange.com/a/518585/114719donde uso scope
para 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}
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 \uncover
comando 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 \uncover
las 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}}