如何在 pgf-umlsd 中创建实例?

如何在 pgf-umlsd 中创建实例?

我正在使用 Modelio,但我想用 LaTeX 完成论文中的所有内容,因此我选择 pgf-umlsd 来制作序列图。我遇到的麻烦是我不知道如何使用此库创建消息来创建实例,您能帮助我吗?查看下面的图片,您可以看到我在说什么。

这个图片

我的第一个代码:

\documentclass{article}
\usepackage{tikz} 
\usetikzlibrary{arrows,shadows}
\usepackage{pgf-umlsd}

\begin{document}
\begin{sequencediagram}
    \newinst{act}{Actor}
    \newthread{nr}{NetRoute}
    \newthread{nr}{NetScan}
    \begin{call}{act}{ Buscar una red}{nr}{ redes }
        %\begin{call}{act}{ Buscar una red}{nr}{ redes }
    \end{call}
\end{sequencediagram}
\end{document}

得出的结果是:

在此处输入图片描述

答案1

你可能想看看TikZ-uml它为您定义了这样一个宏(\umlcreatecall{}{})。只需将其下载tikz-uml.sty到您的主文件夹中并编译以下内容:

% arara: pdflatex

\documentclass{article}
\usepackage{tikz-uml} 

\begin{document}
\begin{tikzpicture}
\begin{umlseqdiag}
\umlactor[class=A, fill=blue!20]{Actor}
\umlobject[class=B]{NetRoute}
\umlobject[class=C]{NetScan}
\umlcreatecall[class=D]{NetScan}{NetModel}
\begin{umlcall}[op={buscar una red}, return=redes]{NetScan}{NetModel}
\end{umlcall}
\end{umlseqdiag}
\end{tikzpicture} 
\end{document}

得出的结果是:

在此处输入图片描述

你应该能够根据自己的需要进行调整。如果没有,你仍然可以在 TikZ 中绘制所有内容,或者你可以看看绘制 UML 的其他可能解决方案

答案2

如果我理解得好,你想要的是类似的东西\mess,但上面有一个盒装标签,还有一条连接标签和中点的线。

你可以做类似的事情定制 \mess。我已将\mess定义从复制pgf-umlsd.sty到序言并做了少许更改。结果是\create{origin}{label}{destination}具有类似语法的命令。

\documentclass[border=2mm]{standalone}
\usepackage{tikz} 
\usetikzlibrary{arrows,shadows}
\usepackage{pgf-umlsd}

\newcommand{\create}[4][0]{
  \stepcounter{seqlevel}
  \path
  (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess from) {};
  \addtocounter{seqlevel}{#1}
  \path
  (#4)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess to) {};
  \draw[->,>=angle 60] (mess from) -- (mess to) node[midway, above=1mm, draw, inner sep=1pt] (create_aux_node)
  {#3} coordinate[midway] (create_aux);
   \draw (create_aux) -- (create_aux_node); 
  \node (#3 from) at (mess from) {};
  \node (#3 to) at (mess to) {};
}

\begin{document}
\begin{sequencediagram}
    \newinst{act}{Actor}
    \newthread{nr}{NetRoute}
    \newthread{ns}{NetScan}
    \begin{call}{act}{ Buscar una red}{ns}{ redes }
    \end{call}
    \create{act}{create}{nr}
\end{sequencediagram}
\end{document}

在此处输入图片描述

相关内容