固定多部分矩形的相同高度

固定多部分矩形的相同高度

我无法将(垂直)两部分矩形的两个部分的高度固定为相同的高度。因此,指向右侧框的箭头与中线不对齐。我一直在阅读但无法解决。有办法吗?这是我的 MWE:

\documentclass[margin=3mm]{standalone}

\usepackage{tikz}


\usetikzlibrary{
arrows %
,positioning %
,shapes%
,shapes.multipart%
}

\begin{document}

\begin{tikzpicture}

\node[rectangle split, draw, rectangle split, rectangle split parts=2, align=center] (box1) {Application \nodepart[text width=3cm]{two} GFS Client};
\node[rectangle,draw, align=center, right=3.5cm of box1] (box2) {Master};

\draw[->] (box1) -- (box2) node[midway, above] ( ) {Get chunk location};

\end{tikzpicture}


\end{document}

结果如下:

在此处输入图片描述

答案1

在这个特殊情况下,多部分矩形的两个部分不具有相似的高度,因为Application有一个后代部分(p),而 中不存在。您可以在两个文本中GFS Client插入命令,以强制它们相等。\strut

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}

\usetikzlibrary{
arrows %
,positioning %
,shapes%
,shapes.multipart%
}

\begin{document}

\begin{tikzpicture}

\node[rectangle split, draw, rectangle split, rectangle split parts=2, align=center] (box1) {Application\strut \nodepart[text width=3cm]{two} GFS Client\strut};
\node[rectangle,draw, align=center, right=3.5cm of box1] (box2) {Master};

\draw[->] (box1) -- (box2) node[midway, above] ( ) {Get chunk location};

\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

我实际上不会尝试使节点部分同样高(即使可以做到这一点),而只是让箭头从 开始text split

\documentclass[margin=3mm]{standalone}

\usepackage{tikz}


\usetikzlibrary{
arrows %
,positioning %
,shapes%
,shapes.multipart%
}

\begin{document}

\begin{tikzpicture}

\node[rectangle split, draw, rectangle split, rectangle split parts=2, align=center] (box1) {Application \nodepart[text width=3cm]{two} GFS Client};
\node[rectangle,draw, align=center, right=3.5cm of box1.text split east] (box2) {Master};

\draw[->] (box1.text split east) -- (box2) node[midway, above] ( ) {Get chunk location};

\end{tikzpicture}
\end{document}

在此处输入图片描述

但如果你真的需要高度一致,只需召唤幻影即可。

\documentclass[margin=3mm]{standalone}

\usepackage{tikz}


\usetikzlibrary{
arrows %
,positioning %
,shapes%
,shapes.multipart%
}

\begin{document}

\begin{tikzpicture}

\node[rectangle split, draw, rectangle split, rectangle split parts=2,
align=center] (box1) {Application \nodepart[text width=3cm]{two} \vphantom{p}GFS Client};
\node[rectangle,draw, align=center, right=3.5cm of box1] (box2) {Master};

\draw[->] (box1) -- (box2) node[midway, above] ( ) {Get chunk location};

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容