我的图片中有两个节点(绘制为矩形),一个填充绿色,另一个填充红色。我希望生成第三个“矩形”,以显示拼接这两个矩形并将它们重新缝合在一起的效果。
或者换句话说,我希望生成一个宽度为起始矩形两倍的矩形,并将其细分为更小的段,每个段交替填充红色和绿色。
给出我的照片:
\begin{tikzpicture}[node distance=5mm]
\node [fill=red!30,minimum width=40mm] (b1) {Bank 1 \unit[1024]{MiB}};
\node [fill=green!30,minimum width=40mm,right=of b1] (b2) {Bank 2 \unit[1024]{MiB}};
\end{tikzpicture}
我已经能够使用两个\foreach
循环来“创建”所需的效果:
\foreach \n in {0,2,...,10}
\draw [fill=red!30] (\n*6.66mm,1) +(-3.33mm,0) rectangle
++(3.33mm,5mm);
\foreach \n in {1,3,...,11}
\draw [fill=green!30] (\n*6.66mm,1) +(-3.33mm,0) rectangle
++(3.33mm,5mm);
但是,这需要几个手动因素(40 / 6 = 6.66,6.66 / 2 = 3.33),并且由于使用绝对坐标,我无法将其定位在现有的两个节点下。
有没有更好的方法可以让我更多/更轻松地控制“组”的定位?我研究过分割矩形,但这似乎仅限于四个水平分割。
答案1
您可以使用链并使用未分裂节点的锚点来定位链中的第一个节点:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{chains}
\begin{document}
\newlength\nodewidth
\setlength\nodewidth{40mm}
\tikzset{%
fill1/.style={fill=red!30,outer sep=0pt},
fill2/.style={fill=green!30,outer sep=0pt},
split/.style={%
minimum width=0.5/3*\nodewidth,
minimum height=5mm,
%inner sep=0pt,
outer sep=0pt,
on chain},
split1/.style={split,fill1},
split2/.style={split,fill2},
}
\begin{tikzpicture}[%
start chain,
node distance=0pt]
\node [fill1,minimum width=\nodewidth] (b1) {Bank 1 1024 MiB};
\node [fill2,minimum width=\nodewidth,right=of b1] (b2) {Bank 2 1024 MiB};
\node [split1,anchor=north west] at (b1.south west) {};
\node [split2] {};
\foreach \n in {0,1,...,4} {%
\node [split1] {};
\node [split2] {};
};
\end{tikzpicture}
\end{document}
答案2
您可以使用 TikZ \scope 指令将您的图片本地化,然后使用移位和比例作为 \scope 的选项将整个组放置在您想要的位置。