我是 TikZ 的新手,这可能被视为替我做功课的问题。我想绘制这样的图表:
首先,我需要有关段本身的最基本帮助。我尝试了具有表格环境的节点:
\documentclass{standalone}
\usepackage{tikz,tabularx}
\begin{document}
\begin{tikzpicture}
\draw (0,0) node {
\begin{tabularx}{4cm}{|X|X|}
\hline
\multicolumn{2}{|c|}{foo} \\
\hline
prev \hfill & \hfill next \\
\hline
\multicolumn{2}{|c|}{type: local\_par} \\
\multicolumn{2}{|c|}{width: 20pt} \\
\hline
\end{tabularx}
};
\end{tikzpicture}
\end{document}
虽然很接近,但是有一个缺点:
- 我觉得这不是正确的做法
- 我不知道如何让行从“下一个”字段转到下一个表。(或上一个表的上一个字段),因为我不知道位置
- 表格的宽度应为“最少 n 个点,但可以根据需要拉伸”。
最终我希望箭头开始在字段(在条目“prev”、“next”和“list”旁边),类似于此示例:
答案1
\documentclass[11pt]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\begin{document}
\begin{tikzpicture}
\node[rectangle split, rectangle split parts=5,
draw, minimum width=4cm,font=\small,
rectangle split part align={center}] (t1)
{ \textbf{Name : glyph}
\nodepart{two}
prev \hspace*{4ex} next
\nodepart{three}
width: 15pt
\nodepart{four}
height: 15pt
\nodepart{five}
list};
\draw (t1.text split) -- (t1.two split);
\begin{scope}[xshift=7cm]
\node[rectangle split, rectangle split parts=5,
draw, minimum width=4cm,font=\small,
rectangle split part align={center}] (t2)
{ \textbf{Name : glyph}
\nodepart{two}
prev \hspace*{4ex} next
\nodepart{three}
width: 15pt
\nodepart{four}
height: 15pt
\nodepart{five}
list};
\draw (t2.text split) -- (t2.two split);
\end{scope}
\draw[->] (t1.two east) to [out=0, in=180](t2.text west);
\end{tikzpicture}
\end{document}