了解新命令並對其進行編輯

了解新命令並對其進行編輯

我試圖突出顯示一些偽代碼行,並且我正在使用這個解決方案 虛擬程式碼區塊。但是,我不理解以下新命令:

\newcommand{\fillcol}{green!20}
\newcommand<>{\boxto}[1]{
\only#2{
    \tikz[remember picture with id=#1]
    \draw[line width=1pt,fill=\fillcol,rectangle,rounded corners]
    (pic cs:#1) ++(8.2,-.1) rectangle (-3.4,-.1);
    }
}

<>前面的符號是什麼意思\newcommand

此外,我想傳遞填滿矩形的顏色作為命令的參數\boxto。在發布的解決方案中,顏色被定義為命令\fillcol如何進行此更改?有人可以幫我嗎?

謝謝!

答案1

只是為了快速:我沒有從連結的問題複製不必要的程式碼,即我禁用了pic座標系和tikz remember picture with id=#1樣式。

該類別beamer添加了新版本的\newcommand,使得可以產生具有覆蓋規範的命令,

\newcommand<>{\cmdname}[number of args]{%...

% rest of code
}

需要了解的重要一點是,覆蓋規範位於內部,而該命令實際上比指定的參數多了一個參數,即在範例中,有 3 個參數。第三個參數用於覆蓋,因此最後一個參數始終是「隱藏」的,但可以存取。

請注意,尖括號<1>屬於最後一個參數,這就是它的\only#3工作原理。

有關這方面的更多信息,請參閱當前投影機文件的第 9.6 節。

\documentclass{beamer}

\usepackage{tikz}


\newcommand{\fillcol}{green!20}
\newcommand<>{\boxto}[2]{
\only#3{%
  \tikz%[remember picture with id=#1]
  \draw[line width=1pt,fill=#2,rectangle,rounded corners] (1,1) rectangle (2,2);
  }%
}

\begin{document}


\begin{frame}{Foo frame}
\boxto<1>{1}{green}

\boxto<2>{1}{red}
\end{frame}

\end{document}

相關內容