PlantUML图例、页脚、标题间距及水平线实现问题
解决PlantUML序列图的间距与分隔线问题
针对你遇到的三个问题,我整理了PlantUML原生语法范围内的调整方案,完全适配IntelliJ IDEA环境,不会触发报错:
1. 拉开图例与页脚的间距
要解决图例和页脚挤在一起的问题,你可以在endlegend和center footer之间添加垂直间距指令\vspace{数值},数值越大间距越宽,比如\vspace{15}就能留出足够的空白:
endlegend \vspace{15} # 插入垂直间距 center footer MyCompany.com (c) 2020
2. 缩小标题(Caption)与图例的空白
默认情况下Caption和图例之间的间距确实偏大,你可以在Caption之后添加负的垂直间距\vspace{-数值}来拉近两者距离,比如\vspace{-12}就能有效压缩多余空白:
caption \nVersion 1.0 - 6/26/2020 (Draft)\n \vspace{-12} # 缩小与图例的间距 autonumber
3. 在序列图内添加水平线划分区域
PlantUML序列图不支持直接使用HTML的<hr>标签,但有自带的分隔线语法:用== 区域名称 ==生成实线分隔,或--- 区域名称 ---生成虚线分隔;如果不需要文字,直接写== ==即可。比如在你的代码里划分不同阶段:
activate DatingRestController == 内部服务处理 == # 水平线划分区域 DatingRestController -> DatingService: processService()
修改后的完整代码
@startuml skinparam Shadowing false title __Dating API Sequence Diagram__\n caption \nVersion 1.0 - 6/26/2020 (Draft)\n \vspace{-12} # 缩小Caption与图例的间距 autonumber activate DatingApp DatingApp -> DatingRestController: hitExternalApi() activate DatingRestController == 内部服务处理 == # 水平线划分区域 DatingRestController -> DatingService: processService() activate DatingService DatingService -> DatingService: findProfile() activate DatingService #90EE90 == 嵌套方法执行 == # 另一组水平线 DatingService -> DatingService: doSomething() DatingService -> DatingService: doSomethingElse() deactivate DatingService DatingService -> DatingRestController: return retValue DatingRestController -> DatingApp: jsonPayload deactivate DatingRestController deactivate DatingApp legend bottom right Legend |=Color |= Name |= Type |= Lifeline | |<back:#FFFFFF> </back>| DatingApp.hitExternalApi() | method | default | |<back:#FFFFFF> </back>| DatingRestController.processService() | method | default | |<back:#FFFFFF> </back>| DatingService.findProfile | method | default | |<back:#90EE90> </back>| DatingService.doSomething() | method | nested | |<back:#90EE90> </back>| DatingService.doSomethingElse() | method | nested | endlegend \vspace{15} # 拉开图例与页脚的间距 center footer MyCompany.com (c) 2020 @enduml
这些调整都是PlantUML原生支持的语法,在IntelliJ IDEA的PlantUML插件中能正常渲染,不会出现报错情况。
内容的提问来源于stack exchange,提问作者PacificNW_Lover




