我知道如何使用 tikz 绘制不同的形状,如下所示:
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) ellipse (1 and 1.5)
(0,2.5) circle (1)
(2.5,0) circle (1.5);
\end{tikzpicture}
\end{document}
但是,我想将多个不同的形状放在一个节点内,但目前我还没有找到一种简单的方法来实现这一点。我将制作一个小图形,将其包含在已经由多个节点组成的大图中。
如果这不可能,或者不容易,那么如何在节点中包含 JPG 或 EPS 文件?
谢谢你!
答案1
TiKZ 3.0
介绍pics
。它们并不完全一样nodes
,但它们允许绘制复杂的图形并将它们作为单个图形进行管理。
在 TeX.SX 中搜索它们,你会找到更多示例。其中两个:
- 在 TikZ 中将图片和标签与图片一起旋转(这个还展示了如何将 .pdf 图形包含到 中
node
) - 如何在 TikZ 中创建类似函数(过程、宏等)的东西?
包含您的代码的简单示例。
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[%
complexnode/.pic={
\draw (0,0) ellipse (1 and 1.5)
(0,2.5) circle (1)
(2.5,0) circle (1.5);}]
\draw (0,0) pic {complexnode} (3,3) pic[blue, rotate=30] {complexnode};
\end{tikzpicture}
\end{document}
答案2
另一个选择是使用 LaTeX box
--- 从来没有遇到过这个问题(尽管您可能无法连接到“内部”对象)。对于简单的情况,这很容易:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,calc}
\begin{document}
\newsavebox{\genericfilt}
\savebox{\genericfilt}{%
\begin{tikzpicture}[font=\small,
>=stealth,
]
\draw[thick, blue] (0,0) --(0.2,0) ..controls (0.5,1)..(1,1)..controls(1.2,1) and (1.8,0)..
node[black,left]{$H(f)$} (2,0) -- (2.5,0);
\draw (0,0) node[below]{$0$} (1,0) node[below]{$f$} (2,0) node[below]{$\rightarrow\infty$};
\end{tikzpicture}%
}
\begin{tikzpicture}
\draw (0,0) node[draw](filt){\usebox{\genericfilt}};
\draw [<-] (filt.west) -- ++(-0.5,0);
\draw [->] (filt.east) -- ++(0.5,0);
\end{tikzpicture}
\end{document}
答案3
快速回答:您可以将tikzpicture
环境嵌套到节点的内容中:
\node[draw] (A) {
\begin{tikzpicture}
\draw (0,0) ellipse (1 and 1.5)
(0,2.5) circle (1)
(2.5,0) circle (1.5);
\end{tikzpicture}};
然而,由于各种原因,我们不鼓励这样做,但是对于简单的设计来说它是可行的。
另一个选择是使用pic
PGF 3.0 的新功能。
回答最后一个问题:您可以简单地将\includegraphics
命令放入您的节点。