![使用 tikz 包在 overleaf 引擎上绘制哈希表查找方案](https://linux22.com/image/313608/%E4%BD%BF%E7%94%A8%20tikz%20%E5%8C%85%E5%9C%A8%20overleaf%20%E5%BC%95%E6%93%8E%E4%B8%8A%E7%BB%98%E5%88%B6%E5%93%88%E5%B8%8C%E8%A1%A8%E6%9F%A5%E6%89%BE%E6%96%B9%E6%A1%88.png)
据我所知,这是一个 Ti钾z 表格。您能给我介绍一下如何制作这些精美的阴影以及表格单元格之间的点吗?此外,任何类似表格的示例对我来说都是一份珍贵的礼物。
因此问题是:
- 如何使表格标题像右表那样?
- 如何将搜索模式放置在表格的左边?
- 如何在底部绘制阴影以进行比较操作?
ldots
单元格之间大的命令是什么?
答案1
- 由于您不希望表格标题有阴影,因此我制作了两个单独的表格。一个用于标题,一个用于表格本身。
- 与其他表相同
- 使用 tikzlibrary
shadows
并添加drop shadow
到节点的选项列表中。 - 对于
\ldots
我使用了\scalebox
。
箭头使用 tikzlibrary 定位calc
代码:
\documentclass[tikz,border=2mm]{standalone}
\usepackage{array}
\usetikzlibrary{shadows,calc}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}
\begin{tikzpicture}[>=latex,every node/.style={anchor=south west,,inner sep=0,fill=white}]
\node[drop shadow,circle,fill=gray!20,draw] at (5.4,0) (comparison) {=?};
\node[drop shadow] at (5,2) {
\begin{tabular}{|C{1cm}|C{2cm}|C{3cm}|}
\hline
& & \\ \hline
\end{tabular}
};
\node at (5,2.7) {
\begin{tabular}{C{6.7cm}}
\scalebox{5}{...}
\end{tabular}
};
\node[drop shadow] at (5,3.5) (table) {
\begin{tabular}{|C{1cm}|C{2cm}|C{3cm}|}
\hline
& & \\ \hline
& & \\ \hline
& & \\ \hline
& & \\ \hline
& & \\ \hline
& & \\ \hline
& & \\ \hline
\end{tabular}
};
\node at (5,6.6) {
\begin{tabular}{C{1cm}C{2cm}C{3cm}}
valid & tag & address
\end{tabular}
};
\node[drop shadow] at (0,7) (search) {
\begin{tabular}{|C{2cm}|C{1cm}|}
\hline
tag & index \\
\hline
\end{tabular}
};
\draw[->] ($(search.south west)!.3!(search.south east)$) |- (comparison.west);
\draw[->] ($(search.south west)!.8!(search.south east)$) |- (table.west);
\draw[->] ($(comparison.north)+(0,4.6)$) -- (comparison.north);
\draw[->] ($(comparison.north)+(2,4.6)$) |- (comparison.east);
\draw[->] ($(comparison.north)+(5,4.6)$) -- ($(comparison.north)+(5,-2)$);
\draw[->] ($(comparison.south)$) -- ($(comparison.north)+(0,-2)$);
\end{tikzpicture}
\end{document}