![Непересекающиеся линии на диаграмме классов](https://rvso.com/image/254720/%D0%9D%D0%B5%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D0%BA%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F%20%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8%20%D0%BD%D0%B0%20%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B5%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2.png)
\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{mpost}[use,mpsettings={input metauml;}]
Class.A("A")()();
Class.B("B")()();
Class.C("C")()();
Class.D("D")()();
B.n = A.s + (0,-80);
C.w = D.w + (-80,0);
A.s = C.w + (50,40);
drawObjects(A, B, C, D);
clink(association)(A,B);
clink(association)(C,D);
\end{mpost}
\end{document}
На выходе я получаю:
Как вы видите, линии A--B и C--D пересекаются.
Мне действительно нужно что-то вроде этого:
Как мне это сделать?
решение1
Взгляните на раздел 8 и особенно на подраздел 8.5metauml
руководство.
Код
\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{mpost}[use,mpsettings={input metauml;}]
Class.A("A")()();
Class.B("B")()();
Class.C("C")()();
Class.D("D")()();
B.n = A.s + (0,-80);
C.w = D.w + (-80,0);
A.s = C.w + (50,40);
drawObjects(A, B, C, D);
clink(association)(A,B);
%clink(association)(C,D);
path cool;
cool := C.e -- C.c+(38,0) .. C.c+(40,2) .. D.c+(-38,0) -- D.w;
link(association)(cool);
\end{mpost}
\end{document}