概要
PlantUMLで入れ子になった図、ネストした図を作成する方法を探してもなかなか見つからなかったので、備忘録として書き残しておきます。
動作を確認した環境
- Visual Studio CodeのPlantUMLの拡張機能(jebbs.plantuml, v2.17.5)
入れ子になった図を作成する方法
単純な例
入れ子にしたい部分を{{ ... }}
で括るだけです。
{{
と}}
の前後には改行を入れる必要があります。
具体的には以下のようにします。
@startuml nested-diagram-example
:開始;
:処理
{{
:処理1;
:処理2;
}}
;
:終了;
@enduml
上記のコードから、以下のような図が生成されます。
このように入れ子になった図を作成することができます。
入れ子部分の背景を透過させる例
入れ子の内側は別の図として扱われるせいか、先程の例では入れ子部分の図の背景が白くなっていました。
入れ子部分の図の背景を透過させたい場合は、入れ子の内側にskinparam backgroundcolor transparent
の設定を追加します。
具体的には以下のようにします。
@startuml nested-diagram-example
:開始;
:処理
{{
skinparam backgroundcolor transparent
:処理1;
:処理2;
}}
;
:終了;
@enduml
上記のコードから、以下のような図が生成されます。
このように入れ子の内側と外側で背景色を合わせた方が自然な見た目になります。
その他の例
入れ子の内側は別の図として扱われるため、別の種類の図を組み合わせて使用することもできます。
以下の例では、アクテビティ図のノードの中に、シーケンス図を埋め込んでいます。
@startuml nested-diagram-example
:開始;
:
{{
skinparam backgroundcolor transparent
Alice -> Bob: Send request
}}
;
:終了;
@enduml
上記のコードから、以下のような図が生成されます。
補足(Visual Studio Codeでの図の文字化けについて)
Visual Studio Codeのプレビュー機能を使用すると、入れ子の内側に書かれた日本語などのテキストが以下のように文字化けしてしまう場合があります。
この文字化けを回避するには、Visual Studio Codeのsettings.json
で以下のようにエンコーディングを指定する必要があります。
{
"plantuml.commandArgs": ["-Dfile.encoding=UTF-8"]
}