Dhole 语言
所有种类的 Dhole 示意图都以同样的方式编写:无论画的是什么,同样的意思都用同样的词来表达。本页介绍所有种类共通的内容;每个种类的页面再补充其特有的内容。
四条基本规则
- 读起来就是对其图片的描述。 形状和颜色用单词命名 ——
[database]、[green]—— 设置则由一个单词、一个冒号和一个值组成:direction: right。 - 宽容。 Dhole 读不懂的行会被略过并给出说明 —— 所在行、所在列、哪里有误以及应改写成什么 —— 其他内容照常绘制。拼错的单词会得到它很可能想写的那个词作为提示。
- 一致。 在所有种类中,事物都在首次命名处创建,标签跟在冒号之后,特性写在其所属对象后的方括号中,缩进在另一行下方的行从属于该行。
- 处处相同。 同样的文本在任何机器上、任何语言环境下、任何一天,都会画出同样的图片。
第一行
第一个既非空行也非注释的行指明要画什么,种类单词之后的内容即为标题。
pie Where the day goes
种类单词后可以带一个冒号(gantt: Launch)。匹配这些单词时会忽略大小写、空格、连字符和下划线,因此 Mind Map、mind-map 和 mindmap 是同一个种类。种类也可以写成两个单词 —— state machine、pie chart、class diagram —— 并被读作一个。
| 种类 | 其单词 | 别名 |
|---|---|---|
| 流程图 | flowchart |
flow, graph, flowchart-v2 |
| 时序图 | sequence |
sequence diagram, seq |
| 状态图 | state |
states, state diagram, state machine, stateDiagram-v2 |
| 类图 | class |
classes, class diagram, uml |
| 实体图 | entity |
entities, er, er diagram, entity relationship, database, schema |
| 思维导图 | mindmap |
mind map, mind, tree |
| 时间线 | timeline |
history, milestones |
| 甘特图 | gantt |
schedule, plan, gantt chart |
| 饼图 | pie |
pie chart,以及表示带中心孔饼图的 donut、doughnut 或 ring |
| 条形图 | bar |
bars, bar chart, column, columns, column chart |
| 折线图 | line |
lines, line chart, line plot |
| 散点图 | xy |
scatter, xy chart, scatter plot, points |
| 雷达图 | radar |
radar chart, spider, web |
| 象限图 | quadrant |
quadrant chart, matrix, quadrants |
| 桑基图 | sankey |
sankey-beta, flows |
| 表格 | table |
grid |
| 看板 | kanban |
board, kanban board |
如果第一个单词不是种类名,但只是某个种类名的笔误 —— 相差一两个字母 —— 则按该种类绘制,并给出说明。与任何种类名都相去甚远的单词会被指出,该示意图不会绘制。
行、注释和缩进
- 第一个字符为
#的行是注释。注释和空行可以出现在任何位置。 - 缩进在另一行下方的行从属于该行:步骤属于其分组,成员属于其类,分支属于它所生长出来的想法,卡片属于其列,消息属于其块。缩进被解读为嵌套关系,而不是被度量:一行从属于其上方最近的、缩进更少的那一行,无论两者相差多少个空格。
- 制表符计为到下一个四列倍数的位置。同时用制表符和空格缩进的行能被读取,但会收到警告。
- 缩进在不能容纳任何内容的行(如设置、单个步骤)下方的行,会被当作未缩进来读取,并收到警告。
设置
示意图顶部由设置名、冒号和值组成的行是设置;其他所有行都是示意图的内容。设置的匹配方式与种类相同 —— 忽略大小写、空格和连字符 —— 并且每个设置都对应若干个名称,因此 direction: LR 和 rankdir: LR 是同一个设置。写了两次的设置取后一次的值,并会收到警告。
所有种类都接受以下设置:
| 设置 | 别名 | 值 |
|---|---|---|
title |
图形的标题;第一行中种类之后的文字与此相同 | |
subtitle |
标题下方的一行文字 | |
caption |
source, note |
图形下方的一行文字 |
theme |
style, look |
主题之一;未指定时为 light |
font |
typeface, face |
字体系列的名称,用于图形中的所有文字 |
size |
图形的宽度和高度(像素):800 x 600、800x600、800 by 600 |
名称和标签
一个事物 —— 步骤、状态、参与者、扇区 —— 在首次命名处创建,再次命名时指的是同一个事物。名称匹配时忽略大小写和连续空格,因此 Order food 和 order food 是同一个步骤,并保留其首次出现时的写法。
名称可以包含任何字符,但在所在行中具有特殊含义的字符除外 —— 箭头、后跟空格的冒号、方括号。需要包含这些字符的名称要放在引号中,直引号或弯引号均可:"A -> B" -> C。在引号内,\" 表示引号,\\ 表示反斜杠。
在由方框和连线组成的示意图中,可以在单独一行上为短名称指定一个较长的标签,这样书写箭头时仍然简短:
flowchart
pay: Pay at the till
cart -> pay
冒号
一行会在第一个后跟空格的冒号处、在位于行尾的冒号处,或在全角冒号 : 处被切分;若这些都没有,则在第一个任意形式的冒号处切分。因此一天中的时刻能保留其冒号 —— 09:00: Gates open 表示时间 09:00 —— 而 Start->End:yes 依然有其标签。冒号之前是这一行所描述的对象;冒号之后是它的标签、值或数据。
特性
事物后方括号中的单词是它的特性,以逗号分隔:Enjoy [end, good]。单词可以是什么取决于它所属的对象 —— 形状属于流程图,键属于实体 —— 并列在每个种类的页面上。颜色和角色适用于所有种类。
不属于其中任何一种的单词会收到警告;如果有相近的词,会提示它很可能想写的词 —— 'rond' is not something a step can be. Write 'round' if that is what you mean. —— 否则会列出所有可用的词。未闭合的方括号会被指出,但其中的单词仍会被读取。
颜色和角色
| 单词 | 别名 | 含义 |
|---|---|---|
blue |
蓝色 | |
orange |
橙色 | |
green |
绿色 | |
yellow |
amber, gold |
黄色 |
pink |
magenta |
粉色 |
purple |
violet |
紫色 |
red |
红色 | |
teal |
cyan |
青色 |
grey |
gray |
主题的低调墨色 |
accent |
highlight, primary |
主题自身的第一种颜色 |
good |
ok, success, done, yes |
绿色 |
bad |
error, fail, failure, danger, no |
红色 |
warn |
warning, caution |
黄色 |
muted |
quiet, faded, disabled, inactive |
以主题的低调墨色绘制的方框或连线 |

颜色并不是固定值:它是主题调色板中与该色相最接近的颜色,因此用另一个主题绘制的示意图,会以该主题的颜色保留其含义。如果调色板中没有与某色相接近的颜色,则使用最接近的那一种 —— 在 light 主题中,teal 就是它的绿色。角色说明的是事物的含义,而不是它的外观,通常更值得这样写。
值
| 值 | 写法 |
|---|---|
| 数字 | 12、-3.5、1_000_000、1e6 —— 在任何语言环境下都以点号作为小数点;数字之间的下划线会被忽略 |
| 百分比 | 40%,用于表示占比的地方 |
| 范围 | 0..100、0 to 100、0 – 100、0~100 |
| 日期 | 2026-11-02、2026-11-02 14:30、2026/11/02、2026-11、2026 |
| 时长 | 3d、2w、4h、30min、1d 4h、1.5 days |
| 开关 | on、yes、true、show,或 off、no、false、hide、none |
| 方向 | down、right、up、left;也可写作 TD、TB、top down、vertical、LR、left to right、horizontal、across、BT、bottom up、RL、right to left |
| 尺寸 | 800 x 600,单位为像素 |
| 列表 | 以逗号分隔的各项:North, South, East |
箭头
流程图、状态图、类图、实体图和时序图,都通过在两个名称之间书写箭头来连接这两个事物。一行可以串联多个箭头 —— A -> B -> C —— 冒号后的标签属于该行的最后一个箭头。
| 箭头 | 绘制 |
|---|---|
-> |
带箭头的线 |
-->, ..> |
带箭头的虚线 |
=>, ==> |
带箭头的粗线 |
->>, -->> |
与 -> 和 --> 相同 |
<-, <--, <.. |
指回第一个名称的箭头:B <- A 即 A -> B |
<->, <-->, <=> |
两端都有箭头 |
--, --- |
无箭头的线 |
.. |
无箭头的虚线 |
== |
无箭头的粗线 |

可能成为名称一部分的箭头 —— --、---、..、== —— 只有在两侧各有一个空格时才是箭头,因此 well-known -- trusted 连接两个名称,而 well--known 是一个名称。其他箭头不需要空格:A->B 就是一个箭头。类图增加了 UML 的端点符号,实体图增加了计数 —— 参见类图和实体图。
形似箭头但该种类并不支持的写法 —— -.->、--x、~~~ —— 会被指出,并列出该种类支持的箭头;该行会被略过,而不会被当作以其各个片段命名的方框来读取。
在一段文本中编写多张示意图
一行仅由三个或更多短横线组成时,会结束一张示意图并开始下一张。每张示意图都有自己的第一行,它们并排绘制 —— 不超过四张时每行两张,超过四张时每行三张 —— 各有自己的标题,整个图形采用第一张的主题、副标题和说明文字。
pie Where the day goes
Sleep: 8
Work: 8
Family: 4
Reading: 2
Errands: 2
---
bar Sales by region
labels: North, South, East, West
y axis: Units
2025: 42, 31, 27, 18
2026: 45, 28, 34, 22
---
line A week of weather
labels: Mon, Tue, Wed, Thu, Fri, Sat, Sun
y axis: Degrees
points: on
Low: 3, 5, 4, 6, 7, 5, 4
High: 9, 11, 10, 12, 14, 13, 11
---
xy Height and weight
x axis: Height (cm)
y axis: Weight (kg)
trend: on
Team A: (160, 55), (165, 61), (170, 66), (175, 70), (180, 79), (185, 84)
Team B: (150, 48), (158, 53), (163, 60), (171, 63), (178, 71)

主题
theme: 接受绘图框架的任意主题 —— light(默认)、dark、presentation、minimal、classic、print —— 或取自 Divooka Compute 调色板的四个主题之一:golden、quiet gold、silver gold 和 high contrast,它们采用编辑器自身的底色、墨色和颜色。绘制好的示意图中没有任何固定颜色,因此绘图框架的 Set Theme 可以在 Dhole 示意图绘制完成后为其重新着色,就像为任何图表重新着色一样。

语言中的词
Dhole 读取的词 —— flowchart、direction、note、after —— 在任何语言环境下都是英文,正如编程语言的关键字一样;而示意图所表达的内容可以使用任何语言,中文或机器字体所覆盖的任何文字都会按原样绘制。Dhole 对文本给出的说明则使用读者的语言:Write Dhole 的卡片以编辑器的语言列出问题,而 Draw Dhole 的 Problems 输出为英文,在任何机器上读起来都一样。