TikZ:节点边缘之间的距离

TikZ:节点边缘之间的距离

我希望能够控制 TikZ 中节点边缘之间的距离。在下面的示例中,我希望“节点 B”的左边缘与节点 A 的右边缘正好相距 5 厘米。但是,right of=A, node distance=5cm设置节点中心之间的距离。

在此处输入图片描述

\documentclass[tikz,border=10pt]{standalone}

\usetikzlibrary{arrows, arrows.meta, backgrounds, calc, intersections, decorations.markings, decorations.pathreplacing, positioning, shapes}

\begin{document}

\begin{tikzpicture}

\draw node[draw, rectangle, text centered] (A) {Node A};

\draw node[draw, rectangle, right of=A, node distance=5cm, text centered] (B) {Node B};

\begin{scope}[>=latex]
\draw[<->] ($(A.east)$) -- ($(B.west)$) node[midway, above] {\tiny{I want this distance to be 5 cm}};
\draw[<->] ($(A)+(0mm,-5mm)$) -- ($(B)+(0mm,-5mm)$) node[midway, below] {\tiny{not this distance}};
\end{scope}

\end{tikzpicture}

\end{document}

我找到了这个相关的答案,但解决方案(即使用“right = of A”而不是“right of = A”)对我来说不起作用:在tikz中设置边界之间的节点距离

答案1

您的代码示例最好按以下方式编写:

\documentclass[tikz, border=10pt]{standalone}

\usetikzlibrary{arrows, arrows.meta, 
                backgrounds, 
                calc, 
                decorations.markings, decorations.pathreplacing, 
                intersections, 
                positioning, 
                shapes}

\begin{document}
    \begin{tikzpicture}[> = latex,
node distance = 50mm,
                        ]

\draw node[draw]                (A) {Node A};  % default shape is rectangle
\draw node[draw, right=of A]    (B) {Node B};   % used is positioning package sybntay

\draw[<->]  (A) -- node[above, font=\tiny] {I want this distance to be 5 cm} (B);
\draw[<->]  ($(A.south)+(0mm,-5mm)$) 
                -- node[below, font=\tiny] {not this distance}
            ($(B.south)+(0mm,-5mm)$);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

  • 正如@Qrrbrbirlbel 在他的评论中提到的,node distance最好在节点之外定义。上面定义为tikzpicture选项,但是您可以在\tikzset节点之前甚至在文档序言中全局定义它。
  • 在绘图节点处采用默认形状rectangle
  • 如果您未规定节点的大小,则其边框将围绕其内容绘制(考虑默认值)inner sep,因此在这种情况下定义text=centered没有意义。顺便说一句,text=centered是过时的语法(除了一些罕见的例外),您应该使用align=center
  • 对于节点边界之间的距离,您应该使用positioning语法。根据您的情况right=of A(或者right= 5cm od A,如果您不喜欢使用全局定义的“节点距离”)。
  • 有关详细信息,tikz您需要阅读其文档,请参阅第一部分和第三部分中的第一个教程:TikZ 不是一个绘画程序(完整文档非常庞大(1321页)。
  • 顺便说一句,在您的文档示例(MWE:最小工作示例)中,仅加载和arrows库就足够了。calcpositioning

相关内容