Развитие контента с помощью слайдов проектора: использование `scope` для группировки элементов

Развитие контента с помощью слайдов проектора: использование `scope` для группировки элементов

Я подаю заявкуhttps://tex.stackexchange.com/a/518585/114719где я использую scopeдля группировки элементов при разработке контента на нескольких слайдах проектора:

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

В случае, если я также сгруппирую элементы на последнем слайде, заменив

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

с

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

массив слайдов сворачивается только до последнего слайда. Почему это так и как я могу сгруппировать элементы также на последнем слайде с помощью scope?

решение1

Если вы хотите иметь версию области видимости, которая оборачивается в \onslide, вы можете сделать это следующим образом:

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

Тогда вы можете использовать \begin{Scope}<3> ... \end{Scope}вместо \begin{scope}<3> ... \end{scope}, что немного неправильно и не работает, как вы говорите.

Пример:

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

введите описание изображения здесь

Синяя линия показывает только, как можно добавлять опции области действия.

Я лично все еще думаю, что overlay-beamer-styles, как показано вэтот ответи предложенный Skillmon в долгосрочной перспективе очень поможет, по крайней мере я часто его использую именно для таких приложений.

решение2

Вот метод с использованием \uncover, который используется как (например) \uncover<1->{..}, и все внутри фигурных скобок {..}показано на слайде 2 слайде 1 и далее. Вот код:

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

Команда \uncoverможет быть вложенной, если вы хотите показать область после (например) слайда 2, но некоторые части области позже. В вашем примере код выше даст тот же результат, если вы замените три строки, которые начинаются с , на \uncoverследующие строки. Я добавил отступы, чтобы показать вложенность.

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

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