Einen neuen Befehl verstehen und bearbeiten

Einen neuen Befehl verstehen und bearbeiten

Ich versuche, einige Pseudocodezeilen hervorzuheben, und verwende diese Lösung Pseudocode-Block. Allerdings habe ich den folgenden neuen Befehl nicht verstanden:

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

Was bedeuten die Symbole <>vor \newcommand?

Außerdem möchte ich die Farbe zum Füllen des Rechtecks ​​als Parameter für den \boxtoBefehl übergeben. In der geposteten Lösung ist die Farbe als Befehl definiert. \fillcolWie kann ich diese Änderung vornehmen? Kann mir jemand helfen?

Danke!

Antwort1

Nur der Schnelligkeit halber: Ich habe keinen unnötigen Code aus der verlinkten Frage kopiert, d.h. ich habe das picKoordinatensystem und den tikz remember picture with id=#1Stil deaktiviert.

Die beamerKlasse fügt eine neue Version von hinzu \newcommand, die es ermöglicht, Befehle mit Overlay-Spezifikation zu generieren, mit

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

% rest of code
}

Wichtig zu wissen ist, dass die Overlay-Spezifikation darin enthalten ist und dass der Befehl tatsächlich ein Argument mehr hat als angegeben, d. h. im Beispiel gibt es 3 Argumente. Das dritte ist für das Overlay gedacht, daher ist das letzte Argument immer „versteckt“, kann aber abgerufen werden.

Bitte beachten Sie, dass die spitzen Klammern <1>zum letzten Argument gehören, so \only#3funktioniert es dann.

Näheres hierzu finden Sie im Abschnitt 9.6 der aktuellen Beamer-Dokumentation.

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

verwandte Informationen