在 TikZ 中创建流程表图

在 TikZ 中创建流程表图

我正在教授操作系统课程,我必须为该课程创建许多“进程/内存映射/inode 表”结构。对于那些不知道的人(不确定他们是否会在这里),请参见下图:

在此处输入图片描述

我可以使用 TikZ 创建外部框并将其正确放置,但创建不同表格框的最有效方法是什么,以便我可以在所有图中反复重复使用它们。

更新:根据rectangle split评论中的提示,我有以下内容:

\begin{tikzpicture}
\usetikzlibrary{shapes, positioning}


\node [draw, rectangle split=3, text width=2cm] (p1) {};

\node [left=12pt of p1, rectangle split=3, font=\tiny] {256
\nodepart {second} 255
\nodepart {third} \vdots
\nodepart {fourth} 0
};

\node [draw, rectangle split=3, text width=2cm, right=1cm of p1] (p2) {};

\node[above=12pt of p1, text width=2cm, font=\tiny, text centered] (p1l) {Per Process File Descriptor Table};
\node[above=12pt of p2, text width=2cm, font=\tiny, text centered] (p1l) {File Table};

\end{tikzpicture}

它产生以下输出:

在此处输入图片描述

但还有两个问题:

  1. 我如何制作箭头?
  2. 第一个表格左侧的编号实际上与表格中的分割并不匹配。
  3. 我怎样才能使一些盒子变得更大?

另外,这是最好的方法吗?看来代码应该更干净一些。

答案1

进一步的自动化当然是可能的(foreach调整、标签放置、tikzstyle对所有matrix节点使用定义而不是重复等),但我认为无论如何你都可以更恰当地提供它。

更新:增加了矩阵节点样式,只需要输入矩阵即可。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{table matrix/.style={draw=black,thick,inner sep=0,fill=blue!25,matrix of nodes, nodes in empty cells,%
nodes={minimum width=30mm,minimum height=3mm,draw,outer sep=0,inner sep=0},
      }
}
\begin{document}
\begin{tikzpicture}
\matrix (dbtable) at (0,0) [table matrix,label={[align=center]90:{Per Process File\\Descriptor Table}}]
{
\\
\\
\\
\\
|[minimum height = 3cm]|{}\\
\\
};

\matrix (filetable) at (4,0) [table matrix,label={[align=center]90:{File Table}}]
{
\\
\\
\\
|[minimum height = 12mm]|{}\\
\\
|[minimum height = 12mm]|{}\\
\\
\\
\\
};

\foreach \x/\y in {1/0,2/1,3/2,4/3,6/OPEN\_MAX$-$1} {
\node[anchor=east] at (dbtable-\x-1.west) {\textsf{\y}};
}
\draw[yellow,-latex,ultra thick] (dbtable-3-1.center) -- (filetable-5-1.center);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容