如何才能使从节点(包含一行或多行文本)到 +(...) 的行具有相同的长度?

如何才能使从节点(包含一行或多行文本)到 +(...) 的行具有相同的长度?

我想从一个节点画一个箭头,+(0,1.5)使得箭头的长度始终相同。

但它会根据节点有多少行而变化。

我不喜欢使用它minimum height,因为如果我使用它,一行节点中的文本将垂直居中(我知道我可以这样做,{one line\\}但这很无聊,因为我有很多节点)。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{tikzpicture}
    \node (bar) {A node with some long text};
    \node[below left = 50pt and 10pt of bar, align=center] (two) {two\\ rows};
    \draw[->] (two) -- +(0,1.5);
    \node[below left = 50pt and -80pt of bar, align=center] (twon) {two rows\\line from north};
    \draw[->] (twon.north) -- +(0,1.5);
    \node[below right = 50pt and -20pt of bar] (one) {one row};
    \draw[->] (one) -- +(0,1.5);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

节点,当用其名称来指代时,使用其中心作为锚点。现在你实际上并不需要那样。你想要箭头的高度相同,所以你需要选择一个与节点高度无关的锚点。在这种情况下,这可能是外部锚点之一,如北、南等。

此实现的重要细节是将节点放置在相同的高度(就像您对below …语句所做的那样)。

相同高度

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{tikzpicture}
    \node (bar) {A node with some long text};
    \node[below left = 50pt and 10pt of bar, align=center] (two) {two\\ rows};
    \draw[->] (two.north) -- +(0,1.5);
    \node[below left = 50pt and -80pt of bar, align=center] (twon) {two rows\\line from north};
    \draw[->] (twon.north) -- +(0,1.5);
    \node[below right = 50pt and -20pt of bar] (one) {one row};
    \draw[->] (one.north) -- +(0,1.5);
\end{tikzpicture}

\end{document}

相关内容