将子节点定位在两个父节点之间

将子节点定位在两个父节点之间
\begin{tikzpicture}[node distance=1.5cm]
 \node[state] (A) {A};
 \node[state] (C) [right of=A] {C};
 \node[state] (B) [below in the middle of=A and C] {B}
\end{tikzpicture}

像这样:

 A C
 \/
 B 

我不知道该怎么做。我相信有 Tree 扩展,但我想在不使用它的情况下编写图表。

答案1

  1. 首先绘制节点B。然后使用above left和分别above right绘制节点AB。或
  2. 使用 xshift 并将节点推至B节点间长度的一半。(您知道节点距离)。但在此方法中,节点A(或C)与节点之间的最小距离B不是 1.5 厘米,而是更大。或
  3. 先画A,然后B然后C

在情况 1 和 3 中,节点Ac之间的距离不超过 1.5 厘米:-(

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[node distance=1.5cm]
 \node at (0,0) (B) {B};
 \node (C) [above right of=B] {C};
 \node (A) [above left of=B] {A};
\end{tikzpicture}
\begin{tikzpicture}[node distance=1.5cm]
 \node at (0,0) (A) {A};
 \node (C) [right of= A] {C};
 \node (B) [below of=A,xshift=.75cm] {B};
\end{tikzpicture}
\begin{tikzpicture}[node distance=1.5cm]
 \node at (0,0) (A) {A};
 \node (B) [below right of= A] {B};
 \node (B) [above right of=B] {C};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您可以使用 tikz 的calc库来计算中点并将节点放置在其下方:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[node distance=1.5cm]
 \node (A) {A};
 \node (C) [right of=A] {C};
 \coordinate (Middle) at ($(A)!0.5!(C)$);
 \node (B) [below of=Middle] {B};
\end{tikzpicture}
\end{document}

答案3

这里有一个解决方案,使用TikZ 库pos=.5找到路径的中间点AC将节点 1cmpositioning放在这个中间点:Bbelow

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[node distance=1.5cm]
 \node (A) {A};
 \node (C) [right of=A] {C};
 \path (A) -- (C) node[pos=.5,below=1cm] (B) {B};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容