使用 beamer slide 说明符作为 \newcommand

使用  beamer slide 说明符作为 \newcommand

我用来<>指定幻灯片,如图所示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。您必须将其添加到\drawas \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}

在此处输入图片描述

相关内容