为了绘图的目的预处理 troff 命令的输入 。
pic [ -T Name ] [ - | File ... ]
pic 命令是一个为在排字机上绘制简单图形的 troff 命令预处理器。基本的对象是一个矩形、圆、椭圆、直线、曲线、箭头、弧和一个由 Text 变量指定的文本。顶级对象是图形 。
file | 指定由 pic 命令处理来画图的 troff 命令的 输出。 |
在 pic 命令中的顶级对象是图形。
.PS OptionalWidth OptionalHeight
ElementList
.PE
如果使用 .PF 宏而不是 .PE 宏,打印后的位置被恢复到刚进入时的位置 。
变量名以一个小写字母开始,随后是零个或更多的字母或数字。位置名以一个大写字母开始,随后 是零个或更多的字母或数字。位置名或变量名在从一幅图形到下一幅图形的过程中保留其值。
列表中的元素必须由换行符或“;”(分号)分隔;长元素可以通过在行末使用 "\" (反斜杠)来续行。 注释通过 # 字符引入,而以换行符结束。
矩形
圆
椭圆
弧
直线
箭头
曲线
移动
文本列表(Text-List)
箭头 对象与带有-> 属性的 直线 对象相同。
属性 | 属性 |
---|---|
h(eigh)t 表达式 | wid(th) 表达式 |
rad(ius) 表达式 | diam(eter) 表达式 |
up 可选表达式 | down 可选表达式 |
right 可选表达式n | left 可选表达式 |
from 位置 | to 位置 |
at 位置 | with 边角 |
by 表达式,表达式 | then |
dotted 可选表达式 | dashed 可选表达 |
chop 可选表达式 | -> <- <-> |
invis | same |
文本列表(Text-list) |
|
缺失的属性和值均用缺省值。不是所有的属性对所有的图元都有用;不相关的没有作处理。下面的是当前有意义的属性:
at 属性表明将几何中心放置在指定的位置。对直线,曲线和弧, h(eigh)t 和 wid(th) 属性代表箭头大小。
Text-item 变量通常是某些图元的一个属性,缺省情况下,它被放置在对象的几何中心。独立文本也是允许的。一个 文本列表 图元是文本项的列表;一个文本项是一个被引用的字符串,后面有时跟一个定位请求,如:
"..."
"..." 居中
"..." 左对齐
"..." 右对齐
"..." 顶端对齐
"..." 底部对齐
如果有的图元有多个文本项,则将它们垂直居中,除限定的以外。位置请求独立地应用到每个项。
文本项可以包含 troff 命令,这个命令用来控制诸如大小和字体的变化以及本地的运动。确保这些命令均衡以使在退出之前进入状态被恢复。
图形中的每个对象都有一个序数;Nth 就代表它,例如:
pic 命令很灵活,它足够可以接收象 1th 和 3th 这样的名字。象 1st 和 3st 这样的用法也是可以接受的。
内置变量及它们的缺省值如下:
boxwid | 0.75 |
boxht | 0.5 |
circlerad | 0.25 |
arcrad | 0.25 |
ellipsewid | 0.75 |
ellipseht | 0.5 |
linewid | 0.5 |
lineht | 0.5 |
movewid | 0.5 |
moveht | 0.5 |
arrowwid | 0.05 |
arrowht | 0.1 |
textwid | 0 |
textht | 0 |
dashwid | 0.5 |
scale | 1 |
这些缺省值可以在任何时候被修改,并且在从一个图形到另一个图形的转换过程中一直保留新值,直到再次改变它。
textht 和 textwid 变量可以设置为任意值以控制定位。所生成图形的宽度和高度可以分别从 .PS 宏的行中进行设置。在 [(左括号)定界符和 ] (右括号)定界符之间变化的变量在从块中退出时恢复到它们以前的从块中退出时的值。在输出期间,尺寸要被 scale除。
下面的 pic 命令表达式用浮点数进行计算。代表尺寸的所有数字都必须用英寸作单位。
表达式 + 表达式
表达式 - 表达式
表达式 * 表达式
表达式 / 表达式
表达式 % 表达式 (模除)
- 表达式
( 表达式 )
变量
数字
位置 .x
位置 .y
位置 .ht
位置 .wid
位置 .rad
sin(表达式) cos(表达式) atan2(表达式,表达式) log(表达式) sqrt(表达式) int(表达式) max(表达式, 表达式) min(表达式,表达式) rand(表达式)
pic 命令提供下列运算符进行逻辑求值:
! | 非 |
> | 大于 |
< | 小于 |
>/= | 大于等于 |
</= | 小于等于 |
&& | 与 |
| | 或 |
== | 等于 |
!= | 不等于 |
下列定义语句不是语法的一部分:
定义名称 X 替换文本 X
Replacement text 变量中出现的值,如 $1 和 $2 将被相关的选项替换,如果 Name 变量象如下形式被调用的话:
Name(Option1, Option2, ...)
不存在的选项都被空串替代。 Replacement text 变量可以包含换行字符。
copy 语句包括从文件来的数据或紧随的值,例如:
copy File
copy thru Macro
copy File thru Macro
copy File thru Macro until String
Macro 参数值或者是已定义宏的名字,或者是包括在某些字符当中的宏体,这些字符不是宏体的一部分。如果没有给出文件名,copy 语句复制所有的输入,直到下一个 .PE 宏行。
for 和 if 语句提供循环和决策,例如:
变量=表达式 to 表达式 by 表达式 do X 任意语句 X
if 表达式then X 任意语句 X else X 任意语句X
by 和 else 项是可选的。在 if 语句中的表达式变量可以使用通常的关系运算符或者象 String1 == (或 !=) String2 的字符串检测。
sh 命令运行一个命令行,例如:
sh X 命令行 X
能够推测出表达式的值,例如:
plot 表达式可选格式属性
表达式 变量值被求出并被转换成字符串(如果提供的话,使用格式规格说明)。
填充或非填充模式的状态相对于图像来保存。
输入数字可以表达成 E (指数)形式。