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