我创建了一个简单的 UML 图,其中一个类框有一个包含多个元素的联合。我想表明这些元素是联合的一部分。
但是我如何使用 tikz 来实现这一点呢?我尝试使用矩阵,但它抱怨说我无法嵌套矩阵。
\documentclass[a4paper,12pt]{scrreprt}
\usepackage[utf8x]{inputenc}
\usepackage{tikz}
\usetikzlibrary{matrix,positioning,calc,arrows,shapes}
\tikzstyle{class}=[matrix of nodes, draw=black, font=\ttfamily\small]
\begin{document}
\begin{tikzpicture}[node distance=2cm]
\matrix (value) [class] {
\textbf{Value} \\
\hline
TypeA m\_type \\
\textit{Union:} \\ % TODO: want to have a rectangle around the next 6 entries!
TypeB int64Val\\
TypeC float64Val\\
TypeD stringVal\\
TypeE *funcVal\\
TypeF varsVal\\
};
\end{tikzpicture}
\end{document}
答案1
\usetikzlibrary{calc}
[...]
\draw (value.north west) rectangle (value.south east);
\draw ($(value.north west)!(value-3-1.north west)!(value.south west) + (4pt,0)$) rectangle ($(value.south east) + (-4pt,4pt)$);
(value-3-1.north west)
draw语句中第一个坐标是(左上角锚点第三行第一个节点)到和之间的线的投影(value.north west)
,(value.south west)
然后向右移动4pt。