![透過投影機幻燈片發展內容](https://rvso.com/image/405341/%E9%80%8F%E9%81%8E%E6%8A%95%E5%BD%B1%E6%A9%9F%E5%B9%BB%E7%87%88%E7%89%87%E7%99%BC%E5%B1%95%E5%85%A7%E5%AE%B9.png)
在這個例子中:
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{overlayarea}{\linewidth}{0.7\paperheight}
\centering
\begin{tikzpicture}
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 5);
\coordinate (B) at (-5, 5);
\only<1>
{
\draw (O) -- (B);
}
\only<2>
{
\draw (O) -- (B);
\draw (O) -- (A);
}
\only<3>
{
\draw (O) -- (B);
\draw (O) -- (A);
\draw (A) -- (B);
}
\end{tikzpicture}
\end{overlayarea}
\end{frame}
\end{document}
我在投影片上描繪出一幅更複雜的畫面:
然而:
在每張投影片中,我都會重新繪製上一張投影片上繪製的所有內容。如何繼承上一張投影片的內容?
投影片 1 上的線相對於後續投影片上的同一線發生位移。如何在每張投影片上強制使用相同的參考系統。
答案1
解決方案可以使用\onslide
:
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\centering
\begin{tikzpicture}
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 5);
\coordinate (B) at (-5, 5);
\onslide<1->{
\draw (O) -- (B);
}
\onslide<2->{
\draw (O) -- (A);
}
\onslide<3->{
\draw (A) -- (B);
}
\end{tikzpicture}
\end{frame}
\end{document}
答案2
overlay-beamer-styles
就是為此而生的。與使用不同的是\only
,這通常可以避免跳轉,而無需添加硬編碼的邊界框,您需要猜測其坐標,並且如果您決定稍後添加路徑,則需要調整該邊界框。
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}
\begin{overlayarea}{\linewidth}{0.7\paperheight}
\centering
\begin{tikzpicture}
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 5);
\coordinate (B) at (-5, 5);
\draw (O) -- (B);
\draw[visible on=<2->] (O) -- (A);
\draw[visible on=<3->] (A) -- (B);
\end{tikzpicture}
\end{overlayarea}
\end{frame}
\end{document}
如果你想讓線條連接看起來不錯,也許這樣的東西更好。 (在本例中,您需要放大才能看到差異,但總的來說,恕我直言,這更好。)
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}
\begin{overlayarea}{\linewidth}{0.7\paperheight}
\centering
\begin{tikzpicture}
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 5);
\coordinate (B) at (-5, 5);
\draw[visible on=<1>] (O) -- (B);
\draw[visible on=<2>] (B) -- (O) -- (A);
\draw[visible on=<3->] (B) -- (O) -- (A) -- cycle;
\end{tikzpicture}
\end{overlayarea}
\end{frame}
\end{document}
如果您想要使用許多路徑,您可以定義一種樣式 ,accumulate path
它可以幫助您累積這些路徑。您只需繪製這些路徑,只要您希望該路徑和所有後續路徑僅出現在下一幀上,您就需要添加vis+
.您不需要任何範圍或任何東西,只需vis+
。
\documentclass{beamer}
\usepackage{tikz}
\newcounter{Viesturs-step}
\resetcounteronoverlays{Viesturs-step}%
\usetikzlibrary{overlay-beamer-styles}
\tikzset{accumulate path/.style={/utils/exec=\setcounter{Viesturs-step}{#1},
every path/.append style={visible on=<\number\value{Viesturs-step}->}},
accumulate path/.default=1,
vis+/.style={/utils/exec=\stepcounter{Viesturs-step},
visible on=<\number\value{Viesturs-step}->}}
\begin{document}
\begin{frame}[t]
\centering
\begin{tikzpicture}[accumulate path]
\coordinate (O) at (0, 0);
\coordinate (A) at (5, 5);
\coordinate (B) at (-5, 5);
\draw (O) -- (B);
\draw[red] (O) to[bend left] (B);
\draw[vis+] (O) -- (A);
\draw[red] (O) to[bend right] (A);
\draw[vis+] (A) -- (B);
\draw[red] (A) to[bend right] (B);
\end{tikzpicture}
\end{frame}
\end{document}
答案3
\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);
\draw<1-> (O) -- (B);
\draw<2-> (O) -- (A);
\draw<3> (A) -- (B);
\end{tikzpicture}
\end{overlayarea}
\end{frame}
\end{document}