PlantUML:可以使用文本嵌套组件吗?

问题描述 投票:0回答:2

正如我从 PlantUML 中的示例中看到的,您可以拥有某些带有文本的图形对象,例如

folder folder1 [
    Here you can have some explanation with
    ====
    --Markdown-- //formatting// ~~elements~~
]

呈现为

您还可以使用

folder
(以及其他元素)通过嵌套来对其他项目进行分组

folder folder2 {
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
}

但目前我看不出有什么办法可以组合两者 - 一个带有一些解释文本的对象嵌套元素。

PlantUML 可以实现吗? (如何?)

syntax nested plantuml
2个回答
10
投票

我只能假设 PlantUML 尝试尽可能地类似于 UML。虽然可以向元素添加长描述 (

[...]
),但我几乎可以肯定它仅适用于某些元素类型(例如活动元素、用例等),这些元素通常不包含子元素。但是,对于更正式的图表,注释或进一步解释概念所需的任何“文本”都应添加为注释或标注。

我很多个月前就遇到了这个问题,并且确实按照您的要求做了。我深入研究了我的图表档案,找到了一个非常接近您想要实现的目标的示例。

因此,为了回答您的问题,在分组元素(例如文件夹)中包含描述性文本和 UML 元素的解决方案如下:

@startuml
skinparam rectangle<<desc>> {
    backgroundColor Transparent
    borderColor Transparent
    titleFontColor Red
    stereotypeFontColor Transparent
}

folder folder2 {
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
    rectangle f2<<desc>> [
        Here you can have some explanation with
        ====
        --Markdown-- //formatting// ~~elements~~
    ]

    folder3 -[hidden]- f2
}
@enduml

正如您将注意到的,连接用于调整文本位置,并且可能需要一些更复杂的技巧,具体取决于文本的大小和元素的数量。

从早期开始,我就更加关注 UML 规范;有关评论的更多详细信息,请参阅此answer。不仅添加注释变得更加容易,而且 PlantUML 代码也更加简单。也就是说,以下是使用这种方法的上述变体。

@startuml
folder folder2 {
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
}

note bottom of folder2
    Here you can have some explanation with
    ====
    --Markdown-- //formatting// ~~elements~~
end note
@enduml


0
投票

使用标签怎么样?

@startuml
folder folder2 {
    label "Here you can have some explanation with \n --Markdown-- //formatting// ~~elements~~" as folder2title
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
}
@enduml

[PlantUML.com 的输出][2]

© www.soinside.com 2019 - 2024. All rights reserved.