如何垂直居中通过上方定位的节点的节点文本

如何垂直居中通过上方定位的节点的节点文本

我有 2 个高度不同的节点。它们相对于它们下面的节点 b1 和 b2 定位,这两个节点的高度和 y 值相同。
我希望 b1、b2 具有与 a1、a2 相同的水平距离,并且我希望它们垂直居中。
但是由于 a1、a2 的长度不同,我不能直接使用,right=of b1因为 x 值不会与 a2 对齐。同样above=of a2会导致错误的 y 值。
我希望我的右上节点同时具有right=of b1和。above=of a2

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

\begin{document}
    \begin{tikzpicture}

      \node [draw] (a1) {loooooooooong};
      \node [draw, right=of a1] (a2) {short};

      \node [draw, above=of a1] (b1) {$\begin{bmatrix}1\\2\\3\\4\end{bmatrix}$};
      \node [draw, blue, above=of a2] (b2) {$\dots$};
      \node [draw, green, right=of b1] (b3) {$\dots$};

    \end{tikzpicture}
\end{document}

图像

答案1

像这样?

在此处输入图片描述

一种可能性是:

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

\begin{document}
    \begin{tikzpicture}

      \node [draw] (a1) {loooooooooong};
      \node [draw, right=of a1] (a2) {short};

      \node [draw, above=of a1] (b1) {$\begin{bmatrix}1\\2\\3\\4\end{bmatrix}$};
      \node [draw, blue, above=of a2] (b2) {$\dots$};
      \node [draw, green, at=(b1 -| a2)] (b3) {$\dots$}; % <---

    \end{tikzpicture}
\end{document}

相关内容