我用来<>
指定幻灯片,如图所示https://tex.stackexchange.com/a/518585/114719
当我将此说明符应用于通过\newcommand
以下示例定义的宏时,我遇到了麻烦:
\documentclass{beamer}
\usepackage{tikz}
\newcommand{\drawline}[2]{
\draw (#1) -- (#2);
}
\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); %OK
\drawline<2> {A}{B}; %trouble
\end{tikzpicture}
\end{overlayarea}
\end{frame}
\end{document}
编译错误是:
! Package pgf Error: No shape named < is known.
如何将<>
幻灯片说明符应用于通过定义的宏\newcommand
?
答案1
您必须使用 让您的自定义宏了解覆盖规范\newcommand<>
。在宏定义中,将有一个附加参数可用,该参数包含覆盖规范,可以传递给其他宏。
在您的示例中,您有两个参数#1
和#2
。现在使用\newcommand<>
而不是\newcommand
,可以通过 访问覆盖规范#3
。您必须将其添加到\draw
as \draw#3
。完整示例:
\documentclass{beamer}
\usepackage{tikz}
\newcommand<>{\drawline}[2]{
\draw#3 (#1) -- (#2);
}
\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);
\drawline<2> {A}{B};
\end{tikzpicture}
\end{overlayarea}
\end{frame}
\end{document}