理解新命令并编辑它

理解新命令并编辑它

我正在尝试突出显示一些伪代码行,并且正在使用这个解决方案 伪代码块。但是,我还没理解下面这个新命令:

\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}

相关内容