(如何)是否可以保存一些复杂的TikZ
对象以便重复使用它们(在同一张图片和不同的图片中)?
我知道可以定义自己的样式,但我不确定这是否是我想要的(样式似乎仅适用于属性,而不适用于复杂和完成的对象)。并且可以使用 保存整个图像savebox
,但它可以用于保存图片的部分吗?
让我们举个例子:某人正在构建几个光学实验。所有实验都使用相同类型的元件,如镜子、激光器、偏振器、分束器等,但每个实验的配置和设置都不同。每个元件都有自己的图片(就像在电路中,每种类型的元件都有自己的“图标”一样)。
我如何以及在何处定义我的“元素种类”以便能够在我的大量 TikZ 图片中重复使用它们?
最后,我希望能够画出类似(不一定完全一样)的图片,例如
\begin{tikzpicture}
\mirror at (0,0);
\laser at (1,0);
\draw (1,0) --(0,0) --(0,1);
\end{tikzpicture}
答案1
解决此问题的一种方法是按照 PGF/TikZ 手册第 107.5 节“声明新形状”中的说明定义自己的节点形状,然后将其定义\mirror
为\node [shape=mirror]
(该shape=
部分是可选的,但我建议在此处使用)。但是,不幸的是,您需要使用 PGF 而不是 TikZ 命令来定义节点形状,这使得创建它们变得困难,并且不允许您简单地将现有的 TikZ 图片转换为节点形状。
答案2
最简单的方法可能就是简单地定义\mirror
为一个命令。
\def\mirror at (#1,#2){\draw (#1,#2) rectangle ++(2,2);}
\begin{tikzpicture}
\mirror at (1,2)
\mirror at (2,4)
\end{tikzpicture}
不过与 TikZ 命令不同,您必须小心空格的数量。如果您简单地定义 ,可能会更容易记住\def\mirror(#1,#2){...
,但这取决于您。
使用较新版本(CVS)的 TikZ,您可以选择使用 pic 环境来实现此目的。
\begin{tikzpicture}[mirror/.pic={\draw (0,0) rectangle ++(2,2);}]
\draw (1,2) pic {mirror};
\path (2,4) pic {mirror} ++ (2,2) node {Yes, it is flexible} -- (1,2) pic {mirror};
\end{tikzpicture}