如何在 tikz 节点内绘制形状?

如何在 tikz 节点内绘制形状?

我知道如何使用 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 中搜索它们,你会找到更多示例。其中两个:

包含您的代码的简单示例。

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

然而,由于各种原因,我们不鼓励这样做,但是对于简单的设计来说它是可行的。

另一个选择是使用picPGF 3.0 的新功能。

回答最后一个问题:您可以简单地将\includegraphics命令放入您的节点。

相关内容