本系列介绍 文本转图片 工具支持的图形描述语言。图形描述语言将图片描述为代码或者文本,有利于版本管理,很适合嵌入 LaTeX 或 Markdown 文档。用于网站时,还可以减轻图片存储压力,因为图片可以根据代码在使用时生成。本文是该系列第一篇,介绍 ditaa。
ditaa是什么
ditaa 是 DIagrams Through Ascii Art
,作者是 Stathis Sideris。
ditaa is a small command-line utility written in Java, that can convert diagrams drawn using ascii art ('drawings' that contain characters that resemble lines like | / -
), into proper bitmap graphics.
ditaa interprets ascci art as a series of open and closed shapes, but it also uses special markup syntax to increase the possibilities of shapes and symbols that can be rendered.
From: http://ditaa.sourceforge.net/
文本转图片 工具并没有使用原版 Java 版的 ditaa,而是用了 Golang 版本,因此和原版并不完全一致,比如 Golang 版本中不能使用中文,原版最新版本已经可以使用中文。
语法介绍
圆角
使用 /
或者 \
来连接角,将被解析为圆角。例如以下代码:
ditaa 圆角
颜色
为图形增加颜色的语法是 cXXX
。其中 XXX
是一个十六进制数。数字的第一个数字表示颜色的红色成分,第二个数字表示绿色,第三个数字表示蓝色(good ol' RGB)。下面是使用颜色代码的例子:
/----\ /----\
|c33F| |cC02|
| | | |
\----/ \----/
/----\ /----\
|c1FF| |c1AB|
| | | |
\----/ \----/
/ -- -- \ / -- -- \
| c33F | | cC02 |
| | | |
\ -- -- / \ -- -- /
/ -- -- \ / -- -- \
| c1FF | | c1AB |
| | | |
\ -- -- / \ -- -- /
十六进制颜色代码可能有些冗长,所以这里提供了(目前只有一些)人类可读的颜色代码:
Color codes
/-------------+-------------\
|cRED RED |cBLU BLU |
+-------------+-------------+
|cGRE GRE |cPNK PNK |
+-------------+-------------+
|cBLK BLK |cYEL YEL |
\-------------+-------------/
Color codes
/ -- -- -- -- -- -- - + -- -- -- -- -- -- - \
| cRED RED | cBLU BLU |
+ -- -- -- -- -- -- - + -- -- -- -- -- -- - +
| cGRE GRE | cPNK PNK |
+ -- -- -- -- -- -- - + -- -- -- -- -- -- - +
| cBLK BLK | cYEL YEL |
\ -- -- -- -- -- -- - + -- -- -- -- -- -- - /
/----\ /----\
|c33F| |cC02|
| | | |
\----/ \----/
/----\ /----\
|c1FF| |c1AB|
| | | |
\----/ \----/
ditaa颜色
Color codes
/-------------+-------------\
|cRED RED |cBLU BLU |
+-------------+-------------+
|cGRE GRE |cPNK PNK |
+-------------+-------------+
|cBLK BLK |cYEL YEL |
\-------------+-------------/
ditaa颜色代码
正如您在上面看到的,如果一个彩色的形状包含任何文本,则文本的颜色将根据底层颜色进行调整。如果背景颜色为黑色,则文本颜色将更改为白色(从默认的黑色)。 请注意,颜色代码只适用于闭合形状内的情况,在闭合形状外的任何地方都没有效果。
形状标签
ditaa 能识别一些改变矩形渲染方式的标签。所有标记都在 {
和 }
之间。如下:
+-----+
|{d} |
| |
| |
+-----+
Symbol representing a document.
+-----+
|{s} |
| |
| |
+-----+
Symbol representing a form of storage,
like a database or a hard disk.
+-----+
|{io} |
| |
| |
+-----+
Symbol representing input/output.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+ -- -- - +
| { d } |
| |
| |
+ -- -- - +
Symbol representing a document .
+ -- -- - +
| { s } |
| |
| |
+ -- -- - +
Symbol representing a form of storage ,
like a database or a hard disk .
+ -- -- - +
| { io } |
| |
| |
+ -- -- - +
Symbol representing input / output .
+-----+
|{d} |
| |
| |
+-----+
ditaa tag Document
+-----+
|{s} |
| |
| |
+-----+
ditaa tag Strorage
+-----+
|{io} |
| |
| |
+-----+
ditaa tag Input/Output
虚线
任何包含至少一个 =
(用于水平线)或至少一个 :
(用于垂直线)的行都呈现为虚线。这些字符中只有一个可以使整行变为虚线,所以这个特性可以“扩展”。这背后的基本原理是,您只需要更改一个字符就可以从普通字符切换到虚线字符(反之亦然),而不需要重新绘制整个线条/形状。特殊符号(如文档或存储符号)也可以用虚线表示。见下文:
----+ /----\ +----+
: | | : |
| | | |{s} |
v \-=--+ +----+
-- -- + / -- -- \ + -- -- +
: | | : |
| | | | { s } |
v \ -= -- + + -- -- +
----+ /----\ +----+
: | | : |
| | | |{s} |
v \-=--+ +----+
ditaa 虚线
点标记
如果在一行中遇到 *
(但不在行尾),则将它呈现为一个特殊的标记,称为点标记。见下文:
*----*
| | /--*
* * |
| | -*--+
*----*
* -- -- *
| | / -- *
* * |
| | - * -- +
* -- -- *
*----*
| | /--*
* * |
| | -*--+
*----*
ditaa 点标记
文本处理
如果遇到 o XXXXX
模式(其中 XXXXX
是任何文本),则将 o
解释为项目符号并呈现。注意,o
前面和后面都必须有空格。见下文:
/-----------------\
| Things to do |
| cGRE |
| o Cut the grass |
| o Buy jam |
| o Fix car |
| o Make website |
\-----------------/
/ -- -- -- -- -- -- -- -- - \
| Things to do |
| cGRE |
| o Cut the grass |
| o Buy jam |
| o Fix car |
| o Make website |
\ -- -- -- -- -- -- -- -- - /
/-----------------\
| Things to do |
| cGRE |
| o Cut the grass |
| o Buy jam |
| o Fix car |
| o Make website |
\-----------------/
ditaa 文本处理
ditaa画廊
+--------+ +-------+ +-------+
| | --+ ditaa +--> | |
| Text | +-------+ |diagram|
|Document| |!magic!| | |
| {d}| | c478 | | |
+---+----+ +-------+ +-------+
: ^
| Lots of work :
+-------------------------+
ditaa工作流程
+----------+
Drawing with |cYEL {s}|
ditaa + +
| emacs fu |
+----------+
^
|
+--------+ +-------+ +-------+
|cGRE |-->+ ditaa +--> | |
| Text | +-------+ |diagram|
|Document| | magic!| | |
| {d}| |cBLU | | cRED |
+---+----+ +-------+ +-------+
^
|
+--------+
|cPNK{io}|
| user |
+--------+
Wordpress Text to Chart
+-----------+ +---------+
| PLC | | |
| Network +<------>+ PLC +<---=---------+
| cRED | | c707 | |
+-----------+ +----+----+ |
^ |
| |
| +----------------|-----------------+
| | | |
v v v v
+----------+ +----+--+--+ +-------+---+ +-----+-----+ Windows clients
| | | | | | | | +----+ +----+
| Database +<----->+ Shared +<---->+ Executive +<-=-->+ Operator +<---->|cYEL| . . .|cYEL|
| c707 | | Memory | | c707 | | Server | | | | |
+--+----+--+ |{d} cGRE | +------+----+ | c707 | +----+ +----+
^ ^ +----------+ ^ +-------+---+
| | |
| +--------=--------------------------+
v
+--------+--------+
| |
| Millwide System | -------- Data ---------
| cBLU | --=----- Signals ---=--
+-----------------+
WordPress Text2Chart
+------+----+----+----+----+----+----+
| xxxx | yy | zz | 00 | tt | 11 | ss |
+------+----+----+----+----+----+----+
^ ^ ^ ^ ^ ^ ^
| | | | | | |
| | | | | | +--- storage registry
| | | | | +-------- always set to 1
| | | | +------------- temp value
| | | +------------------ always zeroed
| | +----------------------- zero flag value
| +---------------------------- y register
+----------------------------------- x address
Wordpress Text to Chart
以上就是全部内容,欢迎到 文本转图片工具 试用。
发表回复