tikz-uml 创建组件图

tikz-uml 创建组件图

我正在尝试使用包设置 UML 组件图tikz-uml。由于 chujowa 文档的原因,我有一些问题想问您。

  1. 如何将提供的接口放置在组件指定侧的指定位置。
  2. 我怎样才能用指定的名称来命名接口,而不仅仅是COMPONENT-west-interface
  3. 如何将两个必需的接口连接到一个提供的接口。

以下是 MWE:

\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz-uml}

\begin{document}
    \begin{tikzpicture}    
        \umlbasiccomponent{A}
        \umlprovidedinterface{A}            
    \end{tikzpicture}
\end{document}

答案1

  1. 好吧,我不知道什么是包接口、组件等(甚至 UML),所以我只是按照手册操作。看起来不可能更改接口位置。提供的接口在右边,需要的接口在左边(可能会更改它,但似乎没有必要,因为连接器可能就足够了)。我可以在代码中看到它们被硬编码为eastwest。但连接器对任何类型的路径声明都是开放的,从手册示例中可以看出\umlassemblyconnector(我无法在此处复制它,因为手册的代码部分不允许我在不进行大量清理的情况下进行复制/粘贴)
  2. 这通常是通过节点选项完成的alias=...,但由于 tikz-uml 不接受不相关的选项,我们可以通过较低级别的命令来强制执行它\pgfnodealias{newname}{oldname}。例如:

    \documentclass{standalone}
    \usepackage{tikz-uml}
    
    \begin{document}
    \begin{tikzpicture}    
    \begin{umlcomponent}{Some name}
    \umlbasiccomponent[x=2]{A}
    \umlprovidedinterface{A}
    \umlrequiredinterface[interface=C]{A}
    \pgfnodealias{newname}{A-west-interface} %<- Adding another name
    \end{umlcomponent}
    \draw[blue,ultra thick] (newname) -- (0,-1); %<- using new name
    \end{tikzpicture}
    \end{document}
    

    在此处输入图片描述

  3. 这个问题有多个正确答案。在这里我做了一个快速破解,但可以做得更正式一些。我画了一个组装连接器(还是不知道!)通过提供一个空文本只是为了欺骗代码,我为界面提供了一个文本(出于某种原因,interface=绘制该符号需要选项),然后我使用常规的 TikZ 语法从 C 绘制线。但如果我不使用角度 60,那么它直接指向中间,这很遗憾。但是,也可以通过使用不同的策略正确绘制它。

    \documentclass{standalone}
    \usepackage{tikz-uml}
    
    \begin{document}
    \begin{tikzpicture}
    
    \umlbasiccomponent[x=-2]{A}
    \umlbasiccomponent[x=4]{B}
    \umlbasiccomponent[x=4,y=3]{C}
    \umlassemblyconnector[interface={\space},name=abconn]{A}{B}
    \draw (C) -| (abconn-interface.60);
    
    \end{tikzpicture}
    \end{document}
    

在此处输入图片描述

最后一点:你似乎对 UML 图表包有非常特殊的需求(据我从你的其他问题中了解到),但我们完全无法获得它们。因此,如果你能用一段具体的代码更好地阐述你的问题,我相信你会更快、更容易得出结论。正如你所见,提供小型 MWE 并不需要太多努力,但它们对于阐明观点很有帮助。因此,我鼓励你提出具体的工作问题。如果你能一次问一个问题,那就太好了,因为这样可以限制范围。这也会鼓励我们去尝试。

相关内容