我正在尝试使用包设置 UML 组件图tikz-uml
。由于 chujowa 文档的原因,我有一些问题想问您。
- 如何将提供的接口放置在组件指定侧的指定位置。
- 我怎样才能用指定的名称来命名接口,而不仅仅是
COMPONENT-west-interface
- 如何将两个必需的接口连接到一个提供的接口。
以下是 MWE:
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz-uml}
\begin{document}
\begin{tikzpicture}
\umlbasiccomponent{A}
\umlprovidedinterface{A}
\end{tikzpicture}
\end{document}
答案1
- 好吧,我不知道什么是包接口、组件等(甚至 UML),所以我只是按照手册操作。看起来不可能更改接口位置。提供的接口在右边,需要的接口在左边(可能会更改它,但似乎没有必要,因为连接器可能就足够了)。我可以在代码中看到它们被硬编码为
east
和west
。但连接器对任何类型的路径声明都是开放的,从手册示例中可以看出\umlassemblyconnector
(我无法在此处复制它,因为手册的代码部分不允许我在不进行大量清理的情况下进行复制/粘贴) 这通常是通过节点选项完成的
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}
这个问题有多个正确答案。在这里我做了一个快速破解,但可以做得更正式一些。我画了一个组装连接器(还是不知道!)通过提供一个空文本只是为了欺骗代码,我为界面提供了一个文本(出于某种原因,
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 并不需要太多努力,但它们对于阐明观点很有帮助。因此,我鼓励你提出具体的工作问题。如果你能一次问一个问题,那就太好了,因为这样可以限制范围。这也会鼓励我们去尝试。