在 TikZ 中,可以嵌套节点吗?

在 TikZ 中,可以嵌套节点吗?

我的用例:我正在绘制化学方案。每个分子包含多个节点。但是,我还想将每个分子放入“包装器”节点中,以便我可以使用通常的锚点将分子组合成反应方案。我该如何实现这一点或类似的东西?

答案1

只是一些初步想法:

根据“内部”部分的复杂程度,一种方法是将分子设为“矩阵”节点(有关如何使用它的详细信息,请参阅 pgfmanual)。另一种可能性是查看“链”库。

另一个选择是在所需大小的分子中心绘制一个不可见的节点(先将其绘制得可见,以获得正确的大小)。 缺点是您必须计算出该大小,而让 TikZ 手动完成会更好。

答案2

您可以滥用矩阵节点。普通节点不允许您在其中放置 TikZ 命令(因为它们会恢复为文本模式),但矩阵节点可以。因此,您可以为每个部分创建一个 1x1 矩阵。例如:

\begin{tikzpicture}
    \node[matrix] (A) {
        \draw (0,0) rectangle (1,1); 
        \node at (0.5,0.5) {A}; \\
    };
    \node[matrix,left of=A] (B) 
    {
        \draw (0.5,0.5) circle (0.5);
        \fill (0.5,0.5) circle (0.1); \\
    };
\end{tikzpicture}

答案3

\begin{tikzpicture} ... \end{tikzpicture} 我通过在每个节点的内容中包含一个整体来实现这一点 。

也许这不是最优雅的方法......但它确实有效。

答案4

我认为我之前没有看到过这个 - 你可以使用它来将一个节点嵌套在另一个节点中。不过,我不确定哪些外部变量/宏可以从内部引用。不过,我还是使用它来用空格填充数字的左侧(考虑到我们在 Latex 中\tikz\node没有):\printf{% 3d}{4}:)

/tmp/test02c.png

代码:

\documentclass[varwidth]{standalone}

\usepackage{tikz}
\usepackage{calc}

\pagecolor{yellow!15}
\begin{document}
\begin{tikzpicture}

\newlength{\wtmp}
\setlength{\wtmp}{\widthof{589}}

% style: node left pad (for) number (padded with space)
\tikzstyle{nlpn} = [draw=none, align=right, inner sep=0pt, outer sep=0pt, minimum size=0pt, minimum width=\wtmp,text width=\wtmp]

% style for function:    
\tikzstyle{nlpnA} = [nlpn,draw]

% function to insert node:
\def\lpn#1{\tikz\node[nlpnA]{#1};} 

% place node - use function to place node inside
\node[draw] at (0,4) {[\lpn{64}/512/\lpn{0}]};

\tikzstyle{nlpnA} = [nlpn]
\node[draw] at (0,3) {[\lpn{64}/512/\lpn{0}]};

\end{tikzpicture}
\end{document}

相关内容