mcpField
P
plantuml-ascii

plantuml-ascii

github.com/github文档处理40.5k9.8k 次安装今天更新
代码仓库

关于 plantuml-ascii

plantuml-ascii 是从 PlantUML 文件生成文本图表的技能,适合文档作者和终端用户,可输出 ASCII 或 Unicode 格式的多种图表。

主要功能

  1. 01生成 ASCII 和 Unicode 图表
  2. 02支持多种 PlantUML 图表类型
  3. 03处理单个文件或目录
  4. 04指定输出目录
  5. 05使用 PlantUML 命令行或 JAR

适用场景

  1. 01在终端文档中加入图表
  2. 02在 README 中嵌入文本图表
  3. 03以版本控制管理非图片图表
  4. 04在纯文本环境中分享图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/github/awesome-copilot --skill plantuml-ascii

安装后在 Claude Code 中输入/plantuml-ascii确认已加载。

详细介绍

PlantUML ASCII 艺术图生成器

概述

使用 PlantUML 创建基于文本的 ASCII 艺术图。非常适合终端环境中的文档、README 文件、电子邮件,或任何不适合使用图形化图表的场景。

什么是 PlantUML ASCII 艺术图?

PlantUML 可以生成纯文本(ASCII 艺术)形式的图表,而非图片。这对于以下场景非常有用:

  • 基于终端的工作流
  • 不支持图片的 Git 提交/PR
  • 需要纳入版本控制的文档
  • 无法使用图形化工具的环境

安装

# macOS
brew install plantuml

# Linux (varies by distro)
sudo apt-get install plantuml  # Ubuntu/Debian
sudo yum install plantuml      # RHEL/CentOS

# Or download JAR directly
wget https://github.com/plantuml/plantuml/releases/download/v1.2024.0/plantuml-1.2024.0.jar

输出格式

参数格式描述
-txtASCII纯 ASCII 字符
-utxtUnicode ASCII使用制表符增强视觉效果

基本工作流

1. 创建 PlantUML 图表文件
@startuml
participant Bob
actor Alice

Bob -> Alice : hello
Alice -> Bob : Is it ok?
@enduml
2. 生成 ASCII 艺术图
# Standard ASCII output
plantuml -txt diagram.puml

# Unicode-enhanced output (better looking)
plantuml -utxt diagram.puml

# Using JAR directly
java -jar plantuml.jar -txt diagram.puml
java -jar plantuml.jar -utxt diagram.puml
3. 查看输出

输出将保存为 diagram.atxt(ASCII)或 diagram.utxt(Unicode)。

支持的图表类型

时序图
@startuml
actor User
participant "Web App" as App
database "Database" as DB

User -> App : Login Request
App -> DB : Validate Credentials
DB --> App : User Data
App --> User : Auth Token
@enduml
类图
@startuml
class User {
  +id: int
  +name: string
  +email: string
  +login(): bool
}

class Order {
  +id: int
  +total: float
  +items: List
  +calculateTotal(): float
}

User "1" -- "*" Order : places
@enduml
活动图
@startuml
start
:Initialize;
if (Is Valid?) then (yes)
  :Process Data;
  :Save Result;
else (no)
  :Log Error;
  stop
endif
:Complete;
stop
@enduml
状态图
@startuml
[*] --> Idle
Idle --> Processing : start
Processing --> Success : complete
Processing --> Error : fail
Success --> [*]
Error --> Idle : retry
@enduml
组件图
@startuml
[Client] as client
[API Gateway] as gateway
[Service A] as svcA
[Service B] as svcB
[Database] as db

client --> gateway
gateway --> svcA
gateway --> svcB
svcA --> db
svcB --> db
@enduml
用例图
@startuml
actor "User" as user
actor "Admin" as admin

rectangle "System" {
  user -- (Login)
  user -- (View Profile)
  user -- (Update Settings)
  admin -- (Manage Users)
  admin -- (Configure System)
}
@enduml
部署图
@startuml
actor "User" as user
node "Load Balancer" as lb
node "Web Server 1" as ws1
node "Web Server 2" as ws2
database "Primary DB" as db1
database "Replica DB" as db2

user --> lb
lb --> ws1
lb --> ws2
ws1 --> db1
ws2 --> db1
db1 --> db2 : replicate
@enduml

命令行选项

# Specify output directory
plantuml -txt -o ./output diagram.puml

# Process all files in directory
plantuml -txt ./diagrams/

# Include dot files (hidden files)
plantuml -txt -includeDot diagrams/

# Verbose output
plantuml -txt -v diagram.puml

# Specify charset
plantuml -txt -charset UTF-8 diagram.puml

Ant 任务集成

<target name="generate-ascii">
  <plantuml dir="./src" format="txt" />
</target>

<target name="generate-unicode-ascii">
  <plantuml dir="./src" format="utxt" />
</target>

获得更佳 ASCII 图表的技巧

  1. 保持简单:复杂的图表在 ASCII 中渲染效果不佳
  2. 使用短标签:长文本会破坏 ASCII 对齐
  3. 使用 Unicode(-utxt):借助制表符获得更好的视觉效果
  4. 分享前先测试:在终端中使用等宽字体进行验证
  5. 考虑替代方案:对于复杂图表,请使用 Mermaid.js 或 graphviz

输出示例对比

标准 ASCII(-txt):

     ,---.          ,---.
     |Bob|          |Alice|
     `---'          `---'
      |   hello      |
      |------------->|
      |              |
      |  Is it ok?   |
      |<-------------|
      |              |

Unicode ASCII(-utxt):

┌─────┐        ┌─────┐
│ Bob │        │Alice│
└─────┘        └─────┘
  │   hello      │
  │─────────────>│
  │              │
  │  Is it ok?   │
  │<─────────────│
  │              │

快速参考

# Create sequence diagram in ASCII
cat > seq.puml << 'EOF'
@startuml
Alice -> Bob: Request
Bob --> Alice: Response
@enduml
EOF

plantuml -txt seq.puml
cat seq.atxt

# Create with Unicode
plantuml -utxt seq.puml
cat seq.utxt

故障排除

问题:Unicode 字符乱码

  • 解决方案:确保终端支持 UTF-8 并具有合适的字体

问题:图表看起来未对齐

  • 解决方案:使用等宽字体(Courier、Monaco、Consolas)

问题:找不到命令

  • 解决方案:安装 PlantUML 或直接使用 Java JAR

问题:未创建输出文件

  • 解决方案:检查文件权限,确保 PlantUML 具有写入权限

评论

支持 Markdown