如何在同一Markdown文件内复用PlantUML颜色定义?
单个Markdown内复用PlantUML颜色变量的解决方案
首先明确:单个Markdown文件里的每个PlantUML代码块是独立解析的,PlantUML本身没法直接读取同一文件内其他块的变量定义,所以纯靠PlantUML原生语法做不到跨块共享。下面给几个不用单独创建.puml文件的实用方法:
方法1:编辑器代码片段一键插入
把颜色定义做成编辑器的代码片段,每次写新的PlantUML块时一键插入,避免手动重复输入。
比如在VS Code里操作:
- 打开「文件→首选项→用户代码片段」
- 新建一个全局代码片段,命名比如
plantuml-colors.code-snippets - 填入以下内容:
{ "PlantUML Color Definitions": { "prefix": "plantuml-colors", "body": [ "!$BLOCK_COLOR = \"#FF7500AC\"", "!$BAD_EXIT_COLOR = \"#FF0000AC\"", "!$GOOD_EXIT_COLOR = \"#06FF00AC\"" ], "description": "Insert reusable PlantUML color variables" } }
之后在PlantUML块里输入plantuml-colors,按Tab就能自动插入所有颜色定义,再写后续的图代码即可。
方法2:用脚本预处理Markdown文件
写个简单的脚本(比如Python),自动给每个PlantUML块开头插入颜色定义,不用手动操作。
示例Python脚本:
import re # 读取原Markdown文件 with open("your-file.md", "r", encoding="utf-8") as f: content = f.read() # 定义要插入的颜色代码 color_defs = """!$BLOCK_COLOR = "#FF7500AC" !$BAD_EXIT_COLOR = "#FF0000AC" !$GOOD_EXIT_COLOR = "#06FF00AC" """ # 匹配所有PlantUML块开头,插入颜色定义 pattern = re.compile(r"```@startuml(.*?)\n", re.DOTALL) processed_content = pattern.sub(rf"```@startuml\1\n{color_defs}", content) # 写入处理后的文件 with open("your-file-processed.md", "w", encoding="utf-8") as f: f.write(processed_content)
运行脚本后,所有PlantUML块都会自动带上颜色定义,直接渲染即可。
方法3:退而求其次——极简外部.puml文件
如果能接受一个极小的外部文件(仅几行代码),这是最省心的方案:
- 创建一个
color-defs.puml文件,内容就是你的颜色定义:
!$BLOCK_COLOR = "#FF7500AC" !$BAD_EXIT_COLOR = "#FF0000AC" !$GOOD_EXIT_COLOR = "#06FF00AC"
- 在每个PlantUML块开头用
!include color-defs.puml引用,只要这个.puml和Markdown文件同目录,VS Code插件、GitLab/GitHub等主流渲染器都能正常识别,不需要密钥或专用用户。
内容的提问来源于stack exchange,提问作者lrdewaal
相关产品推荐
相关产品推荐

