我想将东侧的 UML 类与 连接起来pst-uml
。遗憾的是,文档是法语的,而且/usr/share/texmf-dist/tex/latex/pst-uml
也没有帮助。
概念(直径)
当前状态(pst-uml
,texlive-pstricks 2011.22586-1
)
来源
\documentclass[a4paper,12pt]{article}
\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pst-uml}
\begin{document}
\begin{center}
\begin{pspicture}(10,3)\psgrid
\rput[r](4,1){\rnode{lorem}{
\umlClass{LoremText}{}
}}
\rput[l](6,2){\rnode{ipsum}{
\umlClass{IpsumText}{}
}}
\rput[l](6,1){\rnode{dolor}{
\umlClass{DolorText}{}
}}
\ncEVE[armA=1]{lorem}{ipsum}
\ncputicon{umlHerit}
\ncline{lorem}{dolor}
\ncputicon{umlHerit}
\ncEXN[armA=1]{ipsum}{dolor} % update me
\nbput[npos=0]{1}
\naput[npos=3]{0..*}
\naput{do sth.}
\ncputicon{umlAgreg}
\end{pspicture}
\end{center}
\end{document}
请忽略多重性(线上/线下),因为我没有在概念上对其进行调整。
答案1
修改ipsum
节点dolor
连接为
\ncEXN[armA=1,angleB=0]{ipsum}{dolor} % update me
ipsum
和之间的节点连接dolor
由 给出\ncangles
,默认选项angleA=0
和angleB=-90
。上述代码将后者的角度 ( angleB
) 覆盖为0
,使连接输入“从东侧”。
为了完整起见,这里是 MWE:
\documentclass{article}
\usepackage{pst-uml}% http://ctan.org/pkg/pst-uml
\begin{document}
\begin{center}
\begin{pspicture}(10,3)\psgrid
\rput[r](4,1){\rnode{lorem}{
\umlClass{LoremText}{}
}}
\rput[l](6,2){\rnode{ipsum}{
\umlClass{IpsumText}{}
}}
\rput[l](6,1){\rnode{dolor}{
\umlClass{DolorText}{}
}}
\ncEVE[armA=1]{lorem}{ipsum}
\ncputicon{umlHerit}
\ncline{lorem}{dolor}
\ncputicon{umlHerit}
\ncEXN[armA=1,angleB=0]{ipsum}{dolor} % update me
\nbput[npos=0]{1}
\naput[npos=3]{0..*}
\naput{do sth.}
\ncputicon{umlAgreg}
\end{pspicture}
\end{center}
\end{document}
答案2
\documentclass{article}
\usepackage{pst-uml}
\def\UML[#1](#2)#3#4{\rput[#1](#2){\rnode{#3}{#4}}}
\begin{document}
\begin{pspicture}%[showgrid]
(10,3)
\UML[r](4,1){lorem}{\umlClass{LoremText}{}}
\UML[l](6,2.5){ipsum}{\umlClass{IpsumText}{}}
\UML[l](6,1){dolor}{\umlClass{DolorText}{}}
\ncEVE[armA=1]{lorem}{ipsum}
\ncputicon{umlHerit}
\ncline{lorem}{dolor}
\ncputicon{umlHerit}
\ncEXN[armA=1,angleB=0]{ipsum}{dolor}
\naput[npos=0.6]{1}
\nbput[npos=3]{0..*}
\naput{do sth.}
\ncputicon{umlAgreg}
\end{pspicture}
\end{document}
答案3
感谢您的帮助。在了解angleA
and的用法后,我做了一些研究angleB
,现在我知道了诀窍:
为了得到期望的结果我只需要替换
\ncEXN[armA=1]{ipsum}{dolor} % update me
和
\ncEVW[armA=1]{admin}{customer}
因为:EVW
意味着draw right (East) then vertical (Vertical) then left (West)
。代码代表两个对象的相对绘制方向,而不是连接器的位置。
查看/usr/share/texmf-dist/tex/latex/pst-uml
中的定义(例如)会更容易理解:
\newpsobject{ncEVW}{ncangles}{angleA=0,angleB=0}