我有以下代码,可生成两个队列。我想用黑色(或任何其他颜色)填充第一个队列的第一个数据包,并保持第二个队列未填充。我可以在不更改大量代码的情况下做到这一点吗?
代码1:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{chains,shapes.multipart}
\usetikzlibrary{shapes,calc,fit}
\usetikzlibrary{automata,positioning}
\tikzset{
queuei/.pic={
\draw[line width=1pt]
(0,0) -- ++(2cm,0) -- ++(0,-1cm) -- ++(-2cm,0);
\foreach \Val in {1,...,3}
\draw ([xshift=-\Val*10pt]2cm,0) -- ++(0,-1cm);
\node[above] at (1cm,0) {Queue $#1$};
},
}
\begin{document}
\begin{tikzpicture}[>=latex]
% the shapes
\path
(0,3cm) pic {queuei=1}
(0,1cm) pic {queuei=2};
\end{tikzpicture}
\end{document}
答案1
我建议您对pic
使用库rectangle split
中的形状进行一些修改shapes.multipart
,以便填充以下部分:
\documentclass[border=3pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{chains,shapes.multipart}
\usetikzlibrary{shapes,calc,fit}
\usetikzlibrary{automata,positioning,shapes.multipart}
\newcounter{cntr}
\tikzset{
queuei/.pic={
\stepcounter{cntr}
\node[outer sep=0pt,draw,rectangle split,rectangle split horizontal,minimum height=1cm,rectangle split parts=3] (queue-\thecntr) [pic actions] {};
\draw
(queue-\thecntr.north west) -- ++(-1cm,0)
(queue-\thecntr.south west) -- ++(-1cm,0);
\node[above] at ([xshift=-0.5cm]queue-\thecntr.north) {Queue $#1$};
},
}
\begin{document}
\begin{tikzpicture}[>=latex]
% the shapes
\path
(0,3cm) pic[rectangle split part fill={white,white,gray!80}] {queuei=1}
(0,1cm) pic {queuei=2};
\end{tikzpicture}
\end{document}