目录
索引 🔎︎

# LibreLogo

LibreLogo 是简单、本地化的类 Logo 编程环境，带有一只海龟矢量图形，用于计算机 (编程及文字处理) 、DTP 及图形设计的教学。参见 http://www.numbertext.org/logo/librelogo.pdf。

## LibreLogo 工具栏

LibreLogo 工具栏 (视图 - 工具栏 - Logo) 包括海龟移动、程序启动/停止、主页、清屏、程序编辑器/语法高亮/翻译图标，还有一个输入栏 (命令行)。

## 海龟移动图标

它们等效于 Logo 命令「FORWARD 10」「BACK 10」「LEFT 15」「RIGHT 15」。点击这些图标还可以选中海龟形状，使页面滚动到其所在位置。

## 启动Logo程序

点击 “启动 Logo 程序” 可将 Writer 文档中的文本 (或只有选中的部分文本) 作为 LibreLogo 程序执行。对于空文档，将插入示例程序并执行之。

点击「停止」图标可中止程序执行。

## 主页

点击「归位」图标可重置海龟的位置与设置。

## 清屏

点击「清屏」图标可删除文档中绘制的对象。

## 程序编辑器/代码高亮/翻译

“魔法棒”图标可将 Writer 文档设为双页布局，用于程序编辑、展开以及将缩略小写的 Logo 命令转换为大写。更改文档的语言 (工具 - 选项 - 语言设置 - 语言 - 西方) 并点击该图标可将 Logo 程序翻译为选中语言。

## 命令行

在命令行按【回车】键可执行其内容。要停止程序执行请使用“停止”图标。

按回车键可重复命令行，如对于下述命令序列:

     FORWARD 200 LEFT 89

要重置命令行，请在命令行处三击，或按 Ctrl+A 选择先前命令，再输入新命令。

## 基本乌龟设置的图形用户界面

LibreLogo 的海龟形状是一个固定大小的常规绘图对象。您可以用标准操作 (鼠标或“绘图对象属性”工具栏的“旋转”图标) 来改变它的位置以及旋转它。修改海龟形状的“线条宽度”“线条颜色”“区域颜色”设置可设置 LibreLogo 的 PENSIZE, PENCOLOR 与 FILLCOLOR 属性。

## 程序编辑

LibreLogo 绘制的图形与程序本身使用同一个 Writer 文档。LibreLogo 画板位于 Writer 文档的第一页。您可以在 LibreLogo 程序之前插入分页符，并使用 Logo 工具栏的“魔法棒”图标设置页面缩放，同时改变字体大小为适合双页视图的比例，以方便使用 LibreLogo 编程: 左边 (第一页) 作为画板，而右边 (第二页) 作为 LibreLogo 程序编辑器。

# LibreLogo 编程语言

LibreLogo 是一款易于本地化的类 Logo 编程语言，由 LibreOffice 母语团队本地化为多种语言版本。对于教学等领域的简单的 Logo 程序，它可向下兼容旧版 Logo 系统。

     TO triangle :size
     REPEAT 3 [
       FORWARD :size
       LEFT 120
     ]
     END

     triangle 10 triangle 100 triangle 200

## 与 Logo 编程语言的不同之处

- 列表成员以逗号分隔: POSITION [0, 0]

- 程序块与列表不同

- - 程序块需加括号，并用空格或换行分隔语句: REPEAT 10 [ FORWARD 10 LEFT 36 ]

  - 列表需要闭合括号: POSITION [0, 0] 而不是 POSITION [ 0, 0 ]

- 不支持单行函数声明 (TO 与 END 需要独立成行)。

## LibreLogo 的其他功能

- 变量名称前后的冒号可选。

       TO triangle size
         REPEAT 3 [ FORWARD size LEFT 120 ]
       END

- 字符串常量支持同样合理，采用 Python 语法。

       PRINT "word ; 原 Logo 语法
       PRINT “任意文本，1 2 3。” ; 正写法，Writer
       PRINT '任意文本，1 2 3。' ; Python 语法

- Python 列表与字符串处理

       PRINT “text”[2] ; 输出 「x」
       PRINT “text”[1:3] ; 输出 「ex」

- 类 Python 的 FOR 循环

- 类 Python 的变量声明:

       x = 15
       PRINT x

- 没有额外的查询函数:

       PRINT FILLCOLOR
       p = POSITION
       PRINT p
       REPEAT 10 [ POSITION ANY POSITION p ]

- 函数调用时括号可选

       TO star size color
       FILLCOLOR color
       REPEAT 5 [ LEFT 72 FORWARD size RIGHT 144 FORWARD size ]
       FILL
       END

       star 100 “red”
       star (100, “green”)
       star(100, “blue”)

# LibreLogo 命令

## 基本语法

### 大小写敏感性

命令、颜色常量不区分大小写:

     PRINT “Hello, World!”
     print “Hello, World, again!”

变量名区分大小写:

     a = 5
     A = 7
     PRINT a
     PRINT A

### 程序行

LibreLogo 程序的行就是 LibreOffice Writer 文档中的段落。程序行可包含多条命令:

     PRINT “Hello, World!” PRINT “LibreLogo”

### 注释

分号开始直到行 (段落) 末尾的部分或整行为注释:

     ; 一些注释
     PRINT 5 * 5 ; 一些注释

### 跨段落的程序行

可以通过行末的波浪线符号将程序行分散在多个段落中:

     PRINT “这是一行非常长的 ” + ~
           “警告消息”

## 海龟移动

### FORWARD (fd)

     FORWARD 10 ; 向前移动 10 磅 (1磅 = 1/72 英寸)
     FORWARD 10pt ; 参见上行
     FORWARD 0.5in ; 向前移动 0.5 英寸 (1 英寸 = 2.54 厘米)
     FORWARD 1" ; 参见上文
     FD 1mm
     FD 1cm

### BACK (bk)

     BACK 10 ; 向后移动 10 磅

### LEFT (lt)

     LEFT 90 ; 逆时针旋转 90 度
     LEFT 90° ; 参见上行
     LT 3h ; 参见上行 (时钟位置)
     LT any ; 转到随机位置 (即旋转任意角度)

### RIGHT (rt)

     RIGHT 90 ; 顺时针旋转 90 度

### PENUP (pu)

     PENUP ; 向上移动海龟，但不绘图

### PENDOWN (pd)

     PENDOWN ; 移动海龟，同时绘图

### POSITION (pos)

     POSITION [0, 0] ; 转向并移动至左上角
     POSITION PAGESIZE ; 转向并移动至右下角
     POSITION [PAGESIZE[0], 0] ; 转向并移动至右上角
     POSITION ANY ; 转向并移动至任意位置

### HEADING (seth)

     HEADING 0 ; 朝北
     HEADING 12h ; 同上
     HEADING [0, 0] ; 朝左上角
     HEADING ANY ; 朝向随机方向

## 其他海龟命令

### HIDETURTLE (ht)

     HIDETURTLE ; 隐藏海龟 (直到执行到 showturtle 命令)

### SHOWTURTLE (st)

     SHOWTURTLE ; 显示海龟

### HOME

     HOME ; 重置初始的海龟位置

### CLEARSCREEN (cs)

     CLEARSCREEN ; 移除文档的绘图对象

### FILL 与 CLOSE

     FILL ; 关闭并填充实际的线条形状或点
     CLOSE ; 关闭实际线条形状或连接各点

示例: 填充正三角形:

     FORWARD 50 LEFT 120 FORWARD 50 FILL

示例: 绘制正三角形:

     FORWARD 50 LEFT 120 FORWARD 50 CLOSE

## 笔迹设置

### PENSIZE (ps)

     PENSIZE 100 ; 线条宽度为 100 点
     PENSIZE ANY ; 等效于 PENSIZE RANDOM 10

### PENCOLOR/PENCOLOUR (pc)

     PENCOLOR “red” ; 设置红色笔迹 (参数为颜色名称，参见颜色常量)
     PENCOLOR [255, 255, 0] ; 设置黄色 (RGB 列表)
     PENCOLOR 0xffff00 ; 设置黄色 (十六进制颜色代码)
     PENCOLOR 0 ; 设置黑色 (0x000000)
     PENCOLOR ANY ; random color
     PENCOLOR [5] ; 设置红色 (参数为颜色 ID，参见颜色常量)
     PENCOLOR “invisible” ; 透明笔迹颜色，供没有可见边缘的形状使用
     PENCOLOR “~red” ; 设置随机红色

### PENTRANSPARENCY

     PENTRANSPARENCY 80 ; 将实际的笔颜色透明度设置为80%

### PENCAP/LINECAP

     PENCAP “none” ; 不要额外的线条端点 (默认)
     PENCAP “round” ; 圆形线条端点
     PENCAP “square” ; 方形线条端点

### PENJOINT/LINEJOINT

     PENJOINT “rounded” ; 圆形线条接头 (默认)
     PENJOINT “miter” ; 锋利线条接头
     PENJOINT “bevel” ; 斜面线条接头
     PENJOINT “none” ; 无线条接头

### PENSTYLE

     PENSTYLE “solid” ; 实线 (默认)
     PENSTYLE “dotted” ; 点线
     PENSTYLE “dashed” ; 虚线

     ; 下述参数可通过列表指定自定义的点线纹路:
     ; – 相邻点数
     ; – 点长
     ; – 相邻线条数
     ; – 线长
     ; – 点/线距离
     ; – 类型 (可选):
     ;   0 = 矩形点 (默认)
     ;   2 = 方形点 (长度与距离与笔迹尺寸相关)

     PENSTYLE [3, 1mm, 2, 4mm, 2mm, 2] ; ...––...––...––

## 填充设置

### FILLCOLOR/FILLCOLOUR (fc)

     FILLCOLOR “blue” ; 用蓝色填充，参见 PENCOLOR
     FILLCOLOR “invisible” CIRCLE 10 ; 取消填充圆圈
     FILLCOLOR [“blue”, “red”] ; 红蓝渐变
     FILLCOLOR [[255, 255, 255], [255, 128, 0]] ; 白橙渐变
     FILLCOLOR [“blue”, “red”, 1, 0, 0] ; 设置轴渐变 (提供需要的旋转与边框参数), 可选的值: 0-5 = 线性, 轴, 放射, 椭圆, 方形及矩形渐变
     FILLCOLOR [“red”, “blue”, 0, 90, 20] ; 线性，20% 的边框，从海龟的实际头部旋转 90 度
     FILLCOLOR [“red”, “blue”, 0, 90, 20, 0, 0, 200, 50] ; 从 200% 到 50% 的强度
     FILLCOLOR [ANY, ANY, 2, 0, 0, 50, 50] ; 放射状渐变，随机颜色，50-50% 水平与垂直方向的中间位置

### FILLTRANSPARENCY

     FILLTRANSPARENCY 80 ; 设置实际填充颜色的透明度为 80%
     FILLTRANSPARENCY [80] ; 设置线性透明度渐变，从 80% 到 0%
     FILLTRANSPARENCY [80, 20] ; 设置线性透明度渐变，从 80% 到 20%
     FILLTRANSPARENCY [80, 20, 1, 90] ; 设置轴向透明度渐变，从海龟的实际头部旋转 90 度
     FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; 设置放射状透明度渐变，从外圈的 80% 透明度到内圈的 20%，边框占 20% border，50-50% 水平与垂直方向的中间位置

### FILLSTYLE

     FILLSTYLE 0 ; 全部涂满 (默认)
     FILLSTYLE 1 ; 黑色，单方向空隙 (水平)
     FILLSTYLE 2 ; 黑色，单方向空隙 (45 度)
     FILLSTYLE 3 ; 黑色，单方向空隙 (-45 度)
     FILLSTYLE 4 ; 黑色，单方向空隙 (垂直)
     FILLSTYLE 5 ; 红色交叉空隙 (45 度)
     FILLSTYLE 6 ; 红色交叉空隙 (0 度)
     FILLSTYLE 7 ; 蓝色交叉空隙 (45 度)
     FILLSTYLE 8 ; 蓝色交叉空隙 (0 度)
     FILLSTYLE 9 ; 蓝色三重交叉
     FILLSTYLE 10 ; 黑色单方向宽空隙 (45 度)

     ; 通过下述参数用列表指定自定义空隙:
     ; – 样式 (1 = 单方向, 2 = 双方向, 3 = 三方向)
     ; – 颜色
     ; – 距离
     ; – 角度

     FILLSTYLE [2, “green”, 3pt, 15°] ; 绿色交叉空隙 (15 度)

## 绘制对象

### CIRCLE

     CIRCLE 100 ; 绘制圆圈图形 (直径 = 100pt)

### ELLIPSE

     ELLIPSE [50, 100] ; 绘制直径分别为 50 和 100 的椭圆
     ELLIPSE [50, 100, 2h, 12h] ; 绘制椭圆扇区 (从 2h 到 12h 的时钟位置)
     ELLIPSE [50, 100, 2h, 12h, 2]  ; 绘制椭圆部分
     ELLIPSE [50, 100, 2h, 12h, 3]  ; 绘制椭圆弧线

### SQUARE

     SQUARE 100 ; 绘制正方形 (尺寸 = 100pt)

### RECTANGLE

     RECTANGLE [50, 100] ; 绘制矩形 (50×100pt)
     RECTANGLE [50, 100, 50] ; 绘制圆角矩形

### POINT

     POINT ; 以笔迹尺寸与颜色绘制一个点

CLOSE 可连接最后的点，FILL 可填充由点定义的形状。例如，很容易从中间开始绘制“平面”的星星:

     PENUP
     REPEAT 5 [
       FORWARD 80
       POINT
       BACK 80
       RIGHT 36
       FORWARD 50
       POINT
       BACK 50
       RIGHT 120
     ] FILL

### LABEL

     LABEL “text” ; 在海龟位置输出 text
     LABEL 'text' ; 参见上行
     LABEL "text ; 参见上行 (仅适用于单个单词)

### TEXT

     CIRCLE 10 TEXT “文字” ; 设置实际绘制对象的文字内容

## 字体设置

### FONTCOLOR/FONTCOLOUR

     FONTCOLOR “green” ; 设置字体颜色

### FONTFAMILY

     FONTFAMILY “Linux Libertine G” ; 设置字体 (族)
     FONTFAMILY “Linux Libertine G:smcp=1” ; 同时设置字体功能 (小型大写)
     FONTFAMILY “Linux Libertine G:smcp=1&onum=1” ; 小型大写 + 旧式字体

### FONTSIZE

     FONTSIZE 12 ; 设置 12pt

### FONTWEIGHT

     FONTWEIGHT “bold” ; 设置粗体
     FONTWEIGHT “normal” ; 设置正常粗细

### FONTSTYLE

     FONTSTYLE “italic” ; 设置倾斜变体
     FONTSTYLE “normal” ; 设置常规变体

## PICTURE (pic)

PICTURE 用于

- 形状组合;

- 开始新行形状;

- 保存SVG图像和SVG/SMIL动画;

- 在左边框保持位置与线形的一致性。

### 形状组合

     ; PICTURE [ LibreLogo_commands ]
     PICTURE [ FORWARD 100 CIRCLE 100 ] ; 像树一样的组合形状

请参见 LibreOffice Writer 帮助中的「组合」章节。

     TO tree location
       PENUP POSITION location HEADING 0 PENDOWN
       PICTURE [ FORWARD 100 CIRCLE 100 ] ; 像树一样的组合形状
     END

     PICTURE [ tree [230, 400] tree [300, 400] ] ; 组合形状嵌套组合形状

### 开始新行形状

     PICTURE ; 开始新一行形状
     FORWARD 10 PICTURE FORWARD 10 ; 两行形状

### 保存SVG图像

     PICTURE “example.svg” [ CIRCLE 5 ] ; 将图片保存到用户目录，格式为 SVG 图像文件
     PICTURE “Desktop/example.svg” [ FORWARD 100 CIRCLE 5 ] ; 同上，使用相对路径
     PICTURE “/home/user/example.svg” [ CIRCLE 5 ] ; Unix/Linux 平台的绝对路径
     PICTURE “C:\example.svg” [ CIRCLE 5 ] ; Windows 平台的绝对路径

### 保存SVG/SMIL动画 (使用SLEEP命令绘制)

     PICTURE “animation.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 ] ; 另存为 SVG/SMIL 动画 (参见 SLEEP)
     PICTURE “animation2.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 SLEEP 2000 ] ; 同上，但在最后一个对象后使用 SLEEP 可导致循环: 在符合 SMIL 规范的浏览器中，SVG 动画在 2 秒后会重新播放

### 左边框一致

使用 PICTURE 使位置与线条形状在 Writer 左边框保持一致:

     PICTURE [ CIRCLE 20 POSITION [-100, 100] CIRCLE 20 ]

## 循环

### REPEAT

     ; REPEAT 数字 [ 命令 ]

     REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; 重复 10 次

     ; 数字是可选的

     REPEAT [ POSITION ANY ] ; 无休止循环

### REPCOUNT

循环变量 (在 FOR 与 WHILE 循环中也存在)。

     REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

### FOR IN

按列表元素循环:

     FOR i IN [1, 5, 7, 9, 11] [
       FORWARD i
       LEFT 90
     ]

按字符序列中的字符循环:

     FOR i IN “text” [
       LABEL i
       FORWARD 10
     ]

### WHILE

     WHILE TRUE [ POSITION ANY ] ; 无休止循环
     WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; 与 REPEAT 10 [ ... ] 类似

### BREAK

停止循环。

     REPEAT [ ; 无休止循环
       POSITION ANY
       IF REPCOUNT = 100 [ BREAK ]  ; 等效于 REPEAT 100 [ ... ]
     ]

### CONTINUE

跳到下一次循环。

     REPEAT 100 [
       POSITION ANY
       IF REPCOUNT % 2 = 0 [ CONTINUE ]
       CIRCLE 10 ; 在每个偶数位置绘制圆圈
     ]

## 条件

### IF

     ; IF 条件 [ 真值块 ]
     ; IF 条件 [ 真值块 ] [ 假值块 ]

     IF a < 10 [ PRINT “小” ]
     IF a < 10 [ PRINT “小” ] [ PRINT “大” ]

### AND、OR、NOT

逻辑运算符。

     IF a < 10 AND NOT a = 5 [ PRINT “0, 1, 2, 3, 4, 6, 7, 8 or 9” ]
     IF a < 10 AND a != 5 [ PRINT “0, 1, 2, 3, 4, 6, 7, 8 or 9” ] ; 同上

## 子过程

### TO, END

新单词 (或过程)。

     TO triangle
       REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL
     END

     REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]

### OUTPUT

函数返回值。

     TO randomletter
       OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
     END

     PRINT randomletter + randomletter + randomletter ; 输出 3 个字母长的随机字符序列

### STOP

从过程返回。

     TO example number
       IF number < 0 [ STOP ]
       PRINT SQRT number ; 输出平方根
     ]

     example 100
     example -1 ; 没有输出结果，也不会出错
     example 25

## 默认变量

### ANY

颜色等的默认变量值。

     PENCOLOR ANY ; 随机笔迹颜色

### TRUE

逻辑值。

     WHILE TRUE [ POSITION ANY ] ; 无休止循环
     PRINT TRUE ; 输出 true

### FALSE

逻辑值。

     WHILE NOT FALSE [ POSITION ANY ] ; 无休止循环
     PRINT FALSE ; 输出 false

### PAGESIZE

     PRINT PAGESIZE ; 输出页面尺寸列表，单位为点，如 [595.30, 841.89]

### PI/π

     PRINT PI ; 输出 3.14159265359

## 输入/输出

### PRINT

     PRINT “文字” ; 在对话框中输出“文字”
     PRINT 5 + 10 ; 输出 15

### INPUT

     PRINT INPUT “输入数值?” ; 要求并通过请求对话框输出字符串
     PRINT FLOAT (INPUT “第一个数字?”) + FLOAT (INPUT “第二个数字?”) ; 简单计算

## SLEEP

     SLEEP 1000 ; 等待 1000 ms (1 秒)

## GLOBAL

设置用于过程的全局变量。

     GLOBAL about
     about = “LibreLogo”

     TO example
       PRINT about
       GLOBAL about ; 希望添加新数值时
       about = “全局变量的新数值”
     END

     example
     PRINT about

## 函数

### RANDOM

     PRINT RANDOM 100 ; 随机浮点数 (0 <= x < 100)
     PRINT RANDOM “text” ; “text”中的任一字母
     PRINT RANDOM [1, 2] ; 随机列表元素 (1 或 2)

### INT

     PRINT INT 3.8 ; 输出 3 (3.8 的整数部分)
     PRINT INT RANDOM 100 ; 随机整数 (0 <= x < 100)
     PRINT INT “7” ; 将字符串参数转换为整数

### FLOAT

     ; 将字符串参数转换为浮点数
     PRINT 2 * FLOAT “5.5” ; 输出 11.0

### STR

     ; 将数字参数转换为字符串
     PRINT “结果: ” + STR 5 ; print “结果: 5”
     PRINT 10 * STR 5 ; 输出 5555555555

### SQRT

     PRINT SQRT 100 ; 输出 10，即 100 的平方根

### SIN

     PRINT SIN 90 * PI/180 ; 输出 1.0 (90° 角的正弦值)

### COS

     PRINT COS 0 * PI/180 ; 输出 1.0 (0° 角的余弦值)

### LOG10

     PRINT LOG10 100 ; 输出 2.0 (100的常用对数)

### ROUND

     PRINT ROUND 3.8 ; 输出 4 (3.8 四舍五入后的结果)
     PRINT ROUND RANDOM 100 ; 随机整数 (0 <= x <= 100)

### ABS

     PRINT ABS -10 ; 输出 10，即 -10 的绝对值

### COUNT

     PRINT COUNT “text” ; 输出 4，即“text”的字符个数
     PRINT COUNT [1, 2, 3] ; 输出 3，即列表大小

### SET

     ; 将列表转换为 Python 集
     PRINT SET [4, 5, 6, 6] ; 输出 {4, 5, 6}
     PRINT SET [4, 5, 6, 6] | SET [4, 1, 9] ; 输出 {1, 4, 5, 6, 9}，并集
     PRINT SET [4, 5, 6, 6] & SET [4, 1, 9] ; 输出{4}，交集
     PRINT SET ([4, 5, 6, 6]) - SET [4, 1, 9] ; 输出 {5, 6}，差集
     PRINT SET [4, 5, 6, 6] ^ SET [4, 1, 9] ; 输出 {1, 5, 6, 9}, 对称差集

### RANGE

     ; 类 Python 的列表生成
     PRINT RANGE 10 ; print [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     PRINT RANGE 3 10 ; 输出 [3, 4, 5, 6, 7, 8, 9]
     PRINT RANGE 3 10 3 ; 输出 [3, 6, 9]

     FOR i IN RANGE 10 50 10 [ ; 循环体 [10, 20, 30, 40]
       FORWARD i
       LEFT 90
     ]

### LIST

     ; 通过 set 与 list 将列表重复元素移除
     PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; 输出 [1, 3, 5, 2]

### TUPLE

转换为 Python 元组 (不可修改列表)

     PRINT TUPLE [4, 5]

### SORTED

返回排序后的列表。

     PRINT SORTED [5, 1, 3, 4] ; 输出 [1, 3, 4, 5]

### SUB

用正则表达式匹配规则替换字符序列。

     PRINT SUB (“t”, “T”, “text”) ; 输出 “Text”，将 “t” 替换为了 “T”
     PRINT SUB (“(.)”, “\\1\\1”, “text”) ; 输出 “tteexxtt”，每个字符重复两遍

### SEARCH

使用正则表达式匹配规则搜索字符序列。

     IF SEARCH (“\w”, "word") [ PRINT “单词中有字母。” ]

### FINDALL

查找与给定正则表达式匹配的所有字符序列。

     PRINT FINDALL(“\w+”, “Dogs, cats.”) ; 输出 [“Dogs”, “cats”]，即单词列表。

### MIN

     PRINT MIN [1, 2, 3] ; 输出 1，列表中最小的元素

### MAX

     PRINT MAX [1, 2, 3] ; 输出 3，列表的最大元素

## 颜色常量

     PENCOLOR “SILVER” ; 按颜色名称设置
     PENCOLOR [1] ; 按颜色 ID 设置
     PENCOLOR “~SILVER” ; 随机银色

ID | 名称
0 | BLACK (黑色)
1 | SILVER (银色)
2 | GRAY/GREY (灰)
3 | WHITE (白)
4 | MAROON (栗色)
5 | RED (红色)
6 | PURPLE (紫色)
7 | FUCHSIA/MAGENTA (品红)
8 | GREEN (绿色)
9 | LIME (绿黄)
10 | OLIVE (黄绿)
11 | YELLOW (黄色)
12 | NAVY (海蓝)
13 | BLUE (蓝色)
14 | TEAL (蓝绿)
15 | AQUA (水色)
16 | PINK (粉红)
17 | TOMATO (西红柿红)
18 | ORANGE (橙色)
19 | GOLD (金色)
20 | VIOLET (紫罗兰色)
21 | SKYBLUE (天蓝)
22 | CHOCOLATE (巧克力色)
23 | BROWN (棕色)
24 | INVISIBLE (透明)