![使用 \newcommand 的 投影機幻燈片說明符](https://rvso.com/image/405351/%E4%BD%BF%E7%94%A8%20%5Cnewcommand%20%E7%9A%84%20%20%E6%8A%95%E5%BD%B1%E6%A9%9F%E5%B9%BB%E7%87%88%E7%89%87%E8%AA%AA%E6%98%8E%E7%AC%A6.png)
我用來<>
指定幻燈片,如下所示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}