Понимание новой команды и ее редактирование

Понимание новой команды и ее редактирование

Я пытаюсь выделить некоторые строки псевдокода и использую это решение блок псевдокода. Однако я не понял следующую новую команду:

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

Связанный контент