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 \boxto
Befehl übergeben. In der geposteten Lösung ist die Farbe als Befehl definiert. \fillcol
Wie 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 pic
Koordinatensystem und den tikz remember picture with id=#1
Stil deaktiviert.
Die beamer
Klasse 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#3
funktioniert 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}