![Usando o especificador de slide beamer para \newcommand](https://rvso.com/image/405351/Usando%20o%20especificador%20de%20slide%20%20beamer%20para%20%5Cnewcommand.png)
Estou usando <>
para especificar slides conforme mostrado emhttps://tex.stackexchange.com/a/518585/114719
Tenho problemas ao aplicar este especificador a uma macro definida \newcommand
como neste exemplo:
\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}
O erro de compilação é:
! Package pgf Error: No shape named < is known.
Como posso aplicar o <>
especificador de slide a uma macro definida via \newcommand
?
Responder1
Você deve informar suas macros personalizadas sobre as especificações de sobreposição usando \newcommand<>
. Dentro da definição da macro, estará disponível um argumento adicional que contém a especificação de sobreposição e pode ser passado para outras macros.
No seu exemplo, você tem dois argumentos #1
e #2
. Agora usando \newcommand<>
em vez de \newcommand
, a especificação de sobreposição pode ser acessada via #3
. Você tem que adicioná-lo ao \draw
as \draw#3
. Exemplo completo:
\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}