如何在 tikz 中的队列中填充一些数据包?

如何在 tikz 中的队列中填充一些数据包?

我有以下代码,可生成两个队列。我想用黑色(或任何其他颜色)填充第一个队列的第一个数据包,并保持第二个队列未填充。我可以在不更改大量代码的情况下做到这一点吗?

代码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}

NB:期望的输出如下: 在此处输入图片描述

答案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}

在此处输入图片描述

相关内容