我正在用 Beamer 做演示。我想用叠加层展示一些方程式和描述。
代码:
\documentclass[12pt]{beamer}
\usepackage[beamer,markings]{hf-tikz}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{frame}[t]
\frametitle{Total Electron Content}
\uncover<1->{
\begin{equation*}
n_{ion} = 1- \frac{40.3 N_e}{f^2}
\end{equation*}
}
\uncover<2->{
\begin{equation*}
\Delta \rho_{ion}=\frac{40.3}{f^2}\tikzmarkin<{1,3}>[mark at=0.93]{col}(0.2,-0.5)(-0,0.7)\int_S N_e\mathrm{d}S\tikzmarkend{col}
\end{equation*}
}
\uncover<3->{
\begin{tikzpicture}[remember picture,overlay]
\coordinate (col-aa) at ($(col)+(-2,-1.8)$);
\node[align=right,left] at (col-aa) {\small{TEC}};
\path[-stealth,red,draw] (col-aa) -| ($(col)+(1,-1.55)$);
\end{tikzpicture}
}
\end{frame}
\end{document}
这没问题,因为第一张幻灯片没有显示突出显示的方程式。它\tikzmarkin<{1,3}>
可以存在并且不会影响任何事情。
但是,如果我想将公式放在幻灯片 1 上,然后在幻灯片 2 上突出显示它,则无法正常工作。它需要\tikzmarkin{col}
从一开始就指定,但我不想在那里显示它。
部分代码:
\begin{frame}[t]
\frametitle{Total Electron Content}
\begin{equation*}
\Delta \rho_{ion}=\frac{40.3}{f^2}\tikzmarkin<2>[mark at=0.93]{col}(0.2,-0.5)(-0,0.7)\int_S N_e\mathrm{d}S\tikzmarkend{col}
\end{equation*}
\uncover<2>{
\begin{tikzpicture}[remember picture,overlay]
\coordinate (col-aa) at ($(col)+(-2,-1.8)$);
\node[align=right,left] at (col-aa) {\small{TEC}};
\path[-stealth,red,draw] (col-aa) -| ($(col)+(1,-1.55)$);
\end{tikzpicture}
}
\end{frame}
错误:
! Package pgf Error: No shape named col is known.
See the pgf package documentation for explanation.
Type H <return> for immediate help.
...
l.20 \end{frame}
?
是否有可能让它工作?
答案1
Qrrbrbirlbel 在评论中已经解释了这个问题:我的回答也试图展示一种更简单的注释方法。
在 OP 的代码中,该markings
选项仅在理论上使用:标记被放置在位置0.93
,但稍后不会被调用,因此其定义毫无用处。代码片段:
\begin{tikzpicture}[remember picture,overlay]
\coordinate (col-aa) at ($(col)+(-2,-1.8)$);
\node[align=right,left] at (col-aa) {\small{TEC}};
\path[-stealth,red,draw] (col-aa) -| ($(col)+(1,-1.55)$);
\end{tikzpicture}
是该包的初始版本的保留,并且可以使用标记进行大大简化。
这是一个解决方案:
\documentclass[12pt]{beamer}
\usepackage{lmodern}
\usepackage[beamer,markings]{hf-tikz}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{frame}[t]
\frametitle{Total Electron Content}
\begin{equation*}
\Delta \rho_{ion}=\frac{40.3}{f^2}\tikzmarkin<2>[mark at=0.835]{col}(0.2,-0.5)(-0,0.7)\int_S N_e\mathrm{d}S\tikzmarkend{col}
\end{equation*}
\tikz[remember picture,overlay]{
\draw<2->[stealth-,red,draw,use marker id] (0,0)--++(0,-1)--++(-3,0)
node[left,black]{TEC};
}
\end{frame}
\end{document}
该键use marker id
允许开始一条新路径,其中的坐标(0,0)
标识先前标记的点。
回到这个问题,这里只要让突出显示的公式和注释之间的覆盖规范保持一致就足够了。我所说的一致性是指:
overlay specification of formula <= overlay specification of the annotation
例如:
\documentclass[12pt]{beamer}
\usepackage{lmodern}
\usepackage[beamer,markings]{hf-tikz}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{frame}[t]
\frametitle{Total Electron Content}
\begin{equation*}
\Delta \rho_{ion}=\frac{40.3}{f^2}\tikzmarkin<2->[mark at=0.835]{col}(0.2,-0.5)(-0,0.7)\int_S N_e\mathrm{d}S\tikzmarkend{col}
\end{equation*}
\tikz[remember picture,overlay]{
\draw<3->[stealth-,red,draw,use marker id] (0,0)--++(0,-1)--++(-3,0)
node[left,black]{TEC};
}
\end{frame}
\end{document}
结果: