在PlantUML中垂直对齐包

4

I have a class structure of something like this:

@startuml
package "A" {
ABase <|-- A1
ABase <|-- A2
ABase <|-- A3
}
package "B" {
BBase <|-- B1
BBase <|-- B2
BBase <|-- B3
}
package "C" {
CBase <|-- C1
CBase <|-- C2
CBase <|-- C3
}
@enduml

PlantUML渲染结果

当类名较长或子类较多时,PlantUML会将包并排显示,这样宽度可能会过大。是否有办法使得包按垂直方向对齐呢?

我尝试使用left to right direction,虽然有所改善但还是存在问题。我想要的是每个包按从上到下的方式排列,而且包之间应该是垂直对齐的。

3个回答

3
许多垂直挑战的图表和似乎数小时的水平滚动使我像你一样提出了同样的问题。唯一的解决方法是在类之间创建垂直辅助链接,但这只适用于小型图表,随着图表的增大,这种方法并不可持续。
@startuml

package "A" {
ABase <|-- A1
ABase <|-- A2
ABase <|-- A3
}
package "B" {
BBase <|-- B1
BBase <|-- B2
BBase <|-- B3
}
package "C" {
CBase <|-- C1
CBase <|-- C2
CBase <|-- C3
}

A2 -[hidden]down- BBase
B2 -[hidden]down- CBase

@enduml

在这种情况下,这样做是有效的,但是如果出现更复杂的结构会怎样呢?一个简单的测试是在包B中添加一个类。是否有办法对齐包的左侧? - albert
我不知道任何将软件包对齐到一侧的方法。正如我所说,这是一个非常肮脏的解决方法,你可以在压力下交付某些东西时使用。如果可能的话,我会将其发布为评论而不是适当的答案。 - khalito

1

也许不是你想要的解决方案,但在每个包之后加上newpage将使它们出现在单独的页面上(你需要一个支持多页图表的GUI,比如PlantUML for VSCode)。如果你要将这些图片合并到一个文档中,这可能会很有用。

@startuml
package "A" {
ABase <|-- A1
ABase <|-- A2
ABase <|-- A3
}
newpage
package "B" {
BBase <|-- B1
BBase <|-- B2
BBase <|-- B3
}
newpage
package "C" {
CBase <|-- C1
CBase <|-- C2
CBase <|-- C3
}
@enduml

package A

package B

package C


0
我用这段代码进行了测试,也许可以实现你想要的。
@startuml
package Main{
}
package A{
}
Main -- A /'Main above A in vertical'/
A -- Main /'A above Main in vertical '/
Main - A  /'same as position of code'/
A - Main /'same as position of code'/
@enduml

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接