新しいコマンドを理解して編集する

新しいコマンドを理解して編集する

私はいくつかの疑似コード行を強調表示しようとしており、このソリューションを使用しています 疑似コードブロックただし、次の新しいコマンドは理解できませんでした。

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

重要なのは、オーバーレイの仕様が内部にあり、コマンドには実際には指定された引数よりも 1 つ多い引数があることです。つまり、この例では引数が 3 つあります。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}

関連情報