使用 \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。現在使用\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}

在此輸入影像描述

相關內容