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