tikz専用のマクロ
\newcommand完全に新しいtikz-environmentを含むマクロが書かれています。
これから、tikz-environmentのコンテンツのみを含むマクロを作成して、この描画を複数回実行したい場合に、1つのtikz-environmentに描画するにはどうすればよいでしょうか。
マクロ内のtikz-environmentの宣言を単純に削除できることはわかっていますが、それにより、tikz-environmentの外部でもマクロを使用できるようになります。
例:
次のようなマクロがあります。
\newcommand{\myTikzMacro}{
\begin{tikzpicture}
\draw (0,0) rectangle (1,1);
\draw (1,1) rectangle (2,0);
\end{tikzpicture}
これで、次のようにマクロを次々と複数回使用できます。
\myTikzMacro \\
\myTikzMacro \\
しかし、その後、複数のtikz環境が使用されます。それを避けるために、私はこのマクロを作ることができるでしょう:
\newcommand{\myTikzMacro2}{
\draw (0,0) rectangle (1,1);
\draw (1,1) rectangle (2,0);
そして、次のように使用します。
\begin{tikzpicture}
\myTikzMacro2
\myTikzMacro2
\end{tikzpicture}
しかし、これにより、私tikzpictureも避けたい環境の外でもマクロを使用できるようになります。
tikzpicture環境内でのみ使用可能/表示可能なマクロを宣言する方法はありますか?(多分pgfkeysで)
回答
よると、現在のコードがtikzpicture内にあるかどうかはどのように確認できますか? tikzマクロを提供します
\tikzifinpicture{true branch}{false branch}
にあるかどうかをテストするためtikzpicture; しかし、その定義のコメントは、その正しさに疑問を投げかけているようです。(ネストされた画像では失敗する可能性があると思います。)最も単純なケースで機能すると仮定すると、次のように定義できます。
\newcommand*{\myTikzPicture}
{\tikzifinpicture
{%
\draw (0,0) rectangle (1,1);
\draw (1,1) rectangle (2,0);
}%
{%
\GenericError{}{Unallowed command}
{\string\myTikzPicture\space can be used only inside a tikz picture.}{}%
}%
}
ここで使用しました\GenericError。コマンドがカスタムパッケージに含まれる場合は、を使用\PackageErrorする方が適切です。