![Usando especificador de diapositivas del proyector para \newcommand](https://rvso.com/image/405351/Usando%20%20especificador%20de%20diapositivas%20del%20proyector%20para%20%5Cnewcommand.png)
Estoy usando <>
para especificar diapositivas como se muestra enhttps://tex.stackexchange.com/a/518585/114719
Me meto en problemas al aplicar este especificador a una macro definida \newcommand
como en este ejemplo:
\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}
El error de compilación es:
! Package pgf Error: No shape named < is known.
¿Cómo se puede aplicar el <>
especificador de diapositiva a una macro definida mediante \newcommand
?
Respuesta1
Debe hacer que sus macros personalizadas tengan en cuenta las especificaciones de superposición mediante el uso de \newcommand<>
. Dentro de la definición de macro, estará disponible un argumento adicional que contiene la especificación de superposición y se puede pasar a otras macros.
En su ejemplo, tiene dos argumentos #1
y #2
. Ahora, usando \newcommand<>
en lugar de \newcommand
, se puede acceder a la especificación de superposición a través de #3
. Tienes que agregarlo al \draw
as \draw#3
. Ejemplo 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}