![固定多部分矩形的相同高度](https://linux22.com/image/380473/%E5%9B%BA%E5%AE%9A%E5%A4%9A%E9%83%A8%E5%88%86%E7%9F%A9%E5%BD%A2%E7%9A%84%E7%9B%B8%E5%90%8C%E9%AB%98%E5%BA%A6.png)
我无法将(垂直)两部分矩形的两个部分的高度固定为相同的高度。因此,指向右侧框的箭头与中线不对齐。我一直在阅读但无法解决。有办法吗?这是我的 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}