![Inhalte über Beamer-Folien weiterentwickeln: Elemente mit „Scope“ gruppieren](https://rvso.com/image/405358/Inhalte%20%C3%BCber%20Beamer-Folien%20weiterentwickeln%3A%20Elemente%20mit%20%E2%80%9EScope%E2%80%9C%20gruppieren.png)
ich bewerbe michhttps://tex.stackexchange.com/a/518585/114719wo ich scope
Elemente gruppiere, während ich Inhalte über mehrere Beamer-Folien entwickle:
\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}
Falls ich auch Elemente auf der letzten Folie gruppiere, ersetze ich
\draw<3> (A) -- (B);
mit
\begin{scope}<3>
\draw (A) -- (B);
\end{scope}
die Folienanordnung wird auf die letzte Folie reduziert. Warum ist das so und wie kann ich mit auch auf der letzten Folie Elemente gruppieren scope
?
Antwort1
Wenn Sie eine Version eines Bereichs haben möchten, die in verpackt wird \onslide
, können Sie das wie folgt tun:
\newenvironment<>{Scope}[1][]{\onslide#2\begingroup\begin{scope}[#1]}{%
\end{scope}\endgroup}
Dann können Sie \begin{Scope}<3> ... \end{Scope}
anstelle von verwenden \begin{scope}<3> ... \end{scope}
, was, wie Sie sagen, etwas falsch ist und nicht funktioniert.
Beispiel:
\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}
Die blaue Linie dient lediglich dazu, anzuzeigen, wie Sie die Optionen des Bereichs hinzufügen können.
Ich persönlich bin nach wie vor der Meinung overlay-beamer-styles
, dassdiese Antwortund von Skillmon vorgeschlagen wird auf lange Sicht ziemlich hilfreich sein, zumindest verwende ich es häufig für genau solche Anwendungen.
Antwort2
Hier ist eine Methode mit \uncover
, die (zum Beispiel) als verwendet wird \uncover<1->{..}
, und alles innerhalb der Klammern wird auf Folie 2, Folie 1 und weiter {..}
angezeigt . Hier ist der Code:
\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}
Der \uncover
Befehl kann verschachtelt werden, wenn Sie beispielsweise einen Bereich nach Folie 2, aber einige Teile des Bereichs später anzeigen möchten. In Ihrem Beispiel liefert der obige Code dasselbe Ergebnis, wenn Sie die drei Zeilen, die mit beginnen, durch \uncover
die folgenden Zeilen ersetzen. Ich habe Einrückungen hinzugefügt, um die Verschachtelung anzuzeigen.
\uncover<1->{
\begin{scope}
\draw (O) -- (B);
\uncover<2->{
\begin{scope}
\draw (O) -- (A);
\uncover<3>{
\draw (A) -- (B);
}
\end{scope}}
\end{scope}}