我想按顺序显示一个 \draw 命令的各个部分。使用以下代码,我想仅在第一张幻灯片上显示轴,然后在第二张幻灯片上显示轴和蓝线,然后在第三张幻灯片上显示轴和红线以及蓝线。
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{frame}[fragile,t]
\frametitle{}
\begin{tikzpicture}[scale=.9, transform shape]
\draw [thick,-latex](0,0) -- (8,0);
\draw [thick,-latex](0,0) -- (0,8.);
\draw [very thick,blue] (4.,4.) +(-45:4cm) node [black, xshift=.24cm, yshift=-.05cm] {$D$} -- +(135:4cm) +(45:4cm) node [black, xshift=0cm, yshift=.05cm] {$S$} edge[very thick, red] ++(-135:4cm);
\end{tikzpicture}
\end{frame}
\end{document}
答案1
Till Tantau 是 的创建者BEAMER
并与 合作Tikz-PGF
。只需在命令名称后添加覆盖规范即可。overlay
tikz
例如,这里使透明度在第二张和所有后续图像上可见:
draw<2->(0,0)--(2,0);
编辑2:Beamer 手册第 85 页:
9.6.1 使命令和环境覆盖规范感知
beamer 扩展了 LaTeX 标准命令的语法
\newcommand
:
\newcommand<>{< command name>}[< argument number>][< default optional value>]{< text>}
[...]
另外允许的参数是覆盖规范
Till Tantau 以这种方式编写所有Tikz
命令。因此,overlay
命令名称后面必须跟有。所以我们不能按顺序追踪路径。需要写出几条路径,每条路径都用给定的覆盖层写出。
然后,就无法\draw
按顺序显示命令的各个部分。必须\draw
按顺序编写尽可能多的命令。
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{frame}[fragile,t]
\frametitle{}
\begin{tikzpicture}[scale=.9, transform shape]
\useasboundingbox(0,0)rectangle(8,8);
\draw [thick,-latex](0,0) -- (8,0)(0,0) -- (0,8.);
\draw<2-> [very thick,blue] (4.,4.) +(-45:4cm) node [black, xshift=.24cm, yshift=-.05cm] {$D$} -- +(135:4cm) +(40:4cm) node [black, xshift=0cm, yshift=.05cm] {$S$} edge[very thick, purple!90!black, solid] ++(-140:4cm);
\draw<3-> [thick, black, densely dashed] (0,4.) node [black, xshift=-.28cm, yshift=-.05cm] {$P_0$} -- ++(0:4.) node [circle, draw, solid, black, fill=black, scale=0.2, xshift=0cm, yshift=0cm]{} -- +(-90:4.);
\end{tikzpicture}
\end{frame}
\end{document}
注意:不需要写两个\draw
命令:
\draw [thick,-latex](0,0) -- (8,0);
\draw [thick,-latex](0,0) -- (0,8.);
您只能写一个draw
命令
\draw [thick,-latex](0,0) -- (8,0)(0,0) -- (0,8.);
答案2
你想要这三张图吗?
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\usepackage{pgfplots}
\newcommand{\achses}{\draw [thick,-latex](0,0) -- (8,0);\draw [thick,-latex](0,0) -- (0,8.);}
\newcommand{\blueline}{\draw [very thick,blue] (4.,4.) +(-45:4cm) node [black, xshift=.24cm, yshift=-.05cm] {$D$} -- +(135:4cm) +(45:4cm);}
\newcommand{\redline}{\draw [very thick,blue] (4.,4.) +(-45:4cm) node [black, xshift=.24cm, yshift=-.05cm] {$D$} -- +(135:4cm) +(45:4cm) node [black, xshift=0cm, yshift=.05cm] {$S$} edge[very thick, red] ++(-135:4cm);
}% needs removal of blueline!
\newcommand{\myframe}[2]{\frametitle{#1}\begin{tikzpicture}[scale=.9, transform shape]#2\end{tikzpicture}}
\begin{document}
\begin{frame}[fragile,t]\myframe{}{\achses}
\end{frame}
\newpage
\begin{frame}[fragile,t]\myframe{}{\achses\blueline}
\end{frame}
\newpage
\begin{frame}[fragile,t]\myframe{}{\achses\blueline\redline}
\end{frame}
\end{document}
应该从\redline
代码中删除蓝线(否则蓝线会被绘制两次)。
的第一个参数\myframe
是的参数\frametitle
,在最小示例中它是空的。
使用\pause
命令(参见https://tex.stackexchange.com/a/9160/6865(感谢 Bobyandbob 指出这一点)也有可能:
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{frame}[fragile,t]
\frametitle{}
\begin{tikzpicture}[scale=.9, transform shape]
\draw [thick,-latex](0,0) -- (8,0);
\draw [thick,-latex](0,0) -- (0,8.);\pause
\draw [very thick,blue] (4.,4.) +(-45:4cm) node [black, xshift=.24cm, yshift=-.05cm] {$D$} -- +(135:4cm) +(45:4cm);\pause
\draw [very thick,blue] (4.,4.) +(-45:4cm) node [black, xshift=.24cm, yshift=-.05cm] {$D$} -- +(135:4cm) +(45:4cm) node [black, xshift=0cm, yshift=.05cm] {$S$} edge[very thick, red] ++(-135:4cm);
\end{tikzpicture}
\end{frame}
\end{document}