我使用该graphs
库来创建图形。笛卡尔布局对于我的需求来说是一个非常方便的工具。
有时我需要放置一个相对于由 自动创建的现有节点的新节点\graph
,然后从该节点开始一个新的节点链:
不幸的是,在线策略显然从第一个节点开始逻辑宽度这是在此自动创建的\graph
:
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[SCbox/.style={rectangle,draw=black}]
\graph[grow right sep=10mm]
{
A[SCbox] ->
B[SCbox];
};
\node (C) [SCbox, below=of B] {C};
\graph[grow right sep=10mm]
{
(C) ->
D[SCbox];
};
\end{tikzpicture}
\end{document}
答案1
我真的不知道为什么人们会期望上述方法有效。在我看来,需要移动整个图表(但我可能错了)。至少这似乎有效,并且它将继续适用于更复杂的图表。
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[SCbox/.style={rectangle,draw=black}]
\graph[grow right sep=10mm]
{
A[SCbox] ->
B[SCbox];
};
\coordinate[below=of B.west](aux);
\begin{scope}[shift={(aux)}]
\graph[grow right sep=10mm]
{
C[SCbox] ->
D[SCbox];
};
\end{scope}
\end{tikzpicture}
\end{document}
或者,如果您想要有 1cm 的距离(但这不是这里的重点):
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[SCbox/.style={rectangle,draw=black}]
\graph[grow right sep=10mm]
{
A[SCbox] ->
B[SCbox];
};
\coordinate[below=of B.south west](aux);
\begin{scope}[shift={(aux)}]
\graph[grow right sep=10mm]
{[nodes={anchor=north west}]
C[SCbox] ->
D[SCbox];
};
\end{scope}
\end{tikzpicture}
\end{document}
我强调,我不认为这是问题的重点,也不是答案的重点。我对这个问题的解释是,OP 想要“重置路径的原点”,这可以通过范围界定来实现。OP 很可能清楚,这个图表可以用更简单的术语来实现,但我的解释是,OP 想要在一个 tikzpicture 中定位复杂的图表。这可以通过将它们放在范围内来实现。人们可以通过多种方式简化、修改和模糊这一点。