\newcommand に ビーマースライド指定子を使用する

\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 つの引数があります。の代わりに#2を使用すると、 を介してオーバーレイ仕様にアクセスできます。 これをとしてに追加する必要があります。完全な例:\newcommand<>\newcommand#3\draw\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}

ここに画像の説明を入力してください

関連情報