我正在 pgf-umlcd 中创建类图。我有两个类,其中一个类聚合了另一个类的两个实例。执行此操作的明显方法如下。
\begin{figure}[ht]
\begin{tikzpicture}[show background grid]
\begin{class}[text width=8 cm]{A}{0,0}
\end{class}
\begin{class}[text width=8 cm]{B}{0,-2}
\end{class}
\aggregation{A}{first}{1}{B}
\aggregation{A}{second}{1}{B}
\end{tikzpicture}
\end{figure}
效果并不好,因为圆弧是从同一位置绘制到同一位置的,所以它们彼此重叠,标记圆弧的文本也是如此。
有没有一种方法可以控制边缘的位置,而不需要弄清楚箭头和线条样式并使用\draw
?
答案1
下面解决这个问题。
\begin{figure}[ht]
\begin{tikzpicture}[show background grid]
\begin{class}[text width=8 cm]{A}{0,0}
\end{class}
\begin{class}[text width=8 cm]{B}{0,-2}
\end{class}
\aggregation{[xshift=2cm] A.south}{first}{1}{[xshift=-2cm] B.north}
\aggregation{[xshift=-2cm] A}{second}{1}{[xshift=-2cm] B.north}
\end{tikzpicture}
\end{figure}
第一个和第四个参数传递到\draw
括号内,因此可以在那里使用节点锚点(.south 和 .north)代码[xshift]
为当前节点设置该参数并调整该节点在路径中的位置。
您需要指定 .south 和 .north,否则路径将从类图的中心绘制。因此,如果您要修改图表的高级布局,这将有些脆弱。