垂直对齐节点底部边缘

垂直对齐节点底部边缘

我想绘制一个带有不同高度的框的图表,使得每个框的底部位于同一高度。此外,我想通过水平箭头连接节点。我的方法是使用相对定位(positioning库)。

下面是一个可以说明该问题的 MWE:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz,pgfplots}
\usetikzlibrary{positioning}

\tikzset{ % from http://tex.stackexchange.com/a/49909/78282
    flowbox/.style={
        rectangle, rounded corners, minimum width=1cm, minimum height=1cm,text centered, draw=black
    },
    stdarrow/.style={->,>=stealth}
}

\begin{document}
\begin{tikzpicture}[node distance=1cm]
    \node[center,flowbox] (A) {A};
    \node[flowbox,right=of A] (B) {\tikz \draw (0,0)--(0,3);};
    \draw [stdarrow] (A) -- (B);
\end{tikzpicture}
\end{document}

第一个版本 注意这里节点是垂直居中的,箭头就是我想要的。

我的想法是使用基础进行相对定位:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz,pgfplots}
\usetikzlibrary{positioning}

\tikzset{ % from http://tex.stackexchange.com/a/49909/78282
    flowbox/.style={
        rectangle, rounded corners, minimum width=1cm, minimum height=1cm,text centered, draw=black
    },
    stdarrow/.style={->,>=stealth}
}

\begin{document}
\begin{tikzpicture}[node distance=1cm]
    \node[flowbox] (A) {A};
    \node[flowbox, base right=of A] (B) {\tikz \draw (0,0)--(0,3);};
    \draw [stdarrow] (A) -- (B);
\end{tikzpicture}
\end{document}

第二个版本 问题是,这里的第二个框的底部比第一个框的底部高(因为它以文本为参考),并且箭头不是水平的。正如我所说,我希望两个框的底部边缘处于相同的水平高度,并且箭头从框 A 的垂直中心开始向右水平移动。这怎么可行?

答案1

以下代码应该给出所需的结果(下面的注释):

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

\tikzset{ % from https://tex.stackexchange.com/a/49909/78282
    flowbox/.style={
        rectangle, rounded corners, minimum width=1cm, minimum height=1cm,text centered, draw=black
    },
    stdarrow/.style={->,>=stealth}
}

\begin{document}
\begin{tikzpicture}[node distance=2cm]
    \coordinate (A-Coord) at (0,0);
    \coordinate[right=of A-Coord] (B-Coord);
    \node[flowbox, anchor=south] (A-Node) at (A-Coord) {A};
    \node[flowbox, anchor=south] (B-Node) at (B-Coord) {\tikz \draw (0,0)--(0,3);};
    \draw [stdarrow] (A-Node.east) -- (A-Node-|B-Node.west);
\end{tikzpicture}

\end{document}

结果:

在此处输入图片描述

评论:

  • 为了调整放置,我定义了两个坐标和节点选项anchor=south(可能这方面有更好的解决方案)。
  • 为了强制箭头水平,我使用了正交坐标系标识符(A-Node|-B_Node.west)(参见这个答案的打击乐
  • 为了保持间距,我不得不调整节点距离[node distance=2cm]

相关内容