我正在尝试突出显示一些伪代码行,并且正在使用这个解决方案 伪代码块。但是,我还没理解下面这个新命令:
\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
工作原理。
有关更多信息,请参阅当前 beamer 文档的第 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}