在 Orgmode 中使用 PlantUML 画时序图

配置使用 PlantUML

  1. 配置 babel 变量支持

    (org-babel-do-load-languages
      'org-babel-load-languages
      '(;; other Babel languages
        (plantuml . t)))
    
  2. 配置 jar 文件路径

    (setq org-plantuml-jar-path
          (expand-file-name "/Users/ljg/Library/Mobile Documents/com~apple~CloudDocs/org/org-resources/plantuml.jar"))
    

PlantUML 时序图配置方法

  1. 基础用法

    -> 参与者之间传递消息的箭头

    –> 虚线的箭头, 可以用于表示返回消息

    箭头颜色的修改, 可通过在- 和 > 之间添加 [#颜色代码] 实现

    如需对消息自动添加编号, 只需要添加关键词 autonumber 即可

    :cmdline -charset utf-8 在 orgmode 的代码块参数加上这个配置, 解决中文乱码问题

    autonumber
    Phone -> Server : 请求网页
    Server --[#0c0f0a]> Phone : 返回 HTML
    

    basic.png

  2. 参与者名称和类型

    参与者的类型除了默认的长方形这种样式以外, 还支持其它类型, 最常用的包括 actor 和 database 等.

    有时候一个参与者名称较长, 在多次使用时为避免麻烦, 可使用 as 关键词给它定义一个别名.

    参与者是中文或者是多个英文单词时, 需使用""引号.

    参与者的前景色也可以指定, 直接在参与者后面添加代码颜色即可.

    actor Phone #ffff00
    database Server as s #41ead4
    Phone -> s : 请求网页
    s --> Phone : 返回 HTML
    

    participant.png

  3. 表示 delay

    有时候消息传递过程中会出现 delay 现象, 如停顿 3 分钟后, 再返回结果. 可以通过…来表示 dalay:

    actor Phone #ffff00
    database Server as s #41ead4
    Phone -> s : 请求网页
    ...
    s --> Phone : 返回 HTML
    Phone -> Phone : 解析网页
    ...解析三秒...
    Phone -> Phone : 成功加载
    

    delay.png

  4. 配色配置

    默认生成的结果中, 上下都有参与者, 需要不想要下面的显示, 可以通过使用 hide footbox 关键词移除.

    使用 skinparam 命令改变颜色和字体:

    skinparam backgroundColor #EEEBDC 修改图片背景色

    skinparam sequenceArrowThickness 2 修改箭头粗细度

    skinparam roundcorner 20 修改参与者形状

    skinparam handwritten true 打开手绘风格

    skinparam backgroundColor #EEEBDC
    
    skinparam sequenceArrowThickness 2
    
    skinparam roundcorner 20
    
    skinparam handwritten true
    
    hide footbox
    
    actor Phone #ffff00
    database Server as s #41ead4
    Phone -> s : 请求网页
    ...
    s --> Phone : 返回 HTML
    Phone -> Phone : 解析网页
    ...解析三秒...
    Phone -> Phone : 成功加载
    

    skinparam.png