grap 命令

用途

对图表进行排版以供 pic 命令处理。

语法

格拉普 [ -我 ] [ -T 名称 ] [ ] [ 文件 ... ]

描述

grap 命令处理 grap 语言输入文件并生成 pic 命令的输入。 grap 语言是一种图表排版语言。 以下是其典型的命令行语句:

grap  File  |  pic  |  troff  |  Typesetter

图表在 .G1.G2 troff 命令请求之间。 这些请求所封装的数据会使用自动提供的选项得到缩放并被绘制成图表。 同时也提供了修改框架、添加标签、替代缺省选项、更改绘图样式、定义坐标范围和转换以及从文件包含数据的命令。 此外, grap 命令提供与 pic 命令相同的循环,条件和宏处理。

Grap 语言文件包含 grap 程序。 grap 程序是用以下形式编写的:

.G1
grap Statement
grap Statement
grap Statement
.G2

参数

描述
文件 指定将通过 grap 命令处理并输入到 pic 命令的 grap 语言文件(grap 程序)。

grap 语句摘要

以下对可用于创建 grap 程序的 grap 语句进行了总结:

描述
frame 定义图表周边的框架。 语法是:
frame [ht Expression] [wid Expression] [[Side] LineDescription]

有关属性定义为如下所示:

  • :top,bot,left, right
  • 线路描述solid,invis,dotted [Expression], dashed [Expression]

高度值缺省为 2 英寸,宽度值缺省为 3 英寸,侧边缺省为实线。 如果sidelinedesc 将应用于整个框架。

描述
标签 在图表的指定一侧放置标签。 语法是:
label Side StringList ... Shift

有关属性定义为如下所示:

  • 轮班:left,right,up,或down expression(表达式)
  • StringList : str...rjust,ljust,above, below [size (+)Expression] ...
  • 字符串: "..."
描述
协调 定义替换的坐标系统。 语法是:
coord [Name] [x Expression,Expression] [y  Expression,Expression] [[log x] [log y] [log log]]
信号 将 tick 标记放在框架的一侧。 语法是:
ticks side [[in] [out] [Expression]] [Shift] [TickLocations]

有关属性定义为如下所示:

  • 轮班:left,right,up, down Expression
  • TickLocations : at [Name ] Expression [String ], Expression [String ],... 从 [名称] 表达式表达式 [by [操作] 表达式] 字符串

如果未指定任何记号,那么将自动提供这些记号;ticks off禁止自动记号。

描述
电网 沿着(也就是垂直于)指定的一侧生成网格线。 语法是:
grid Side [LineDescription] [Shift] [TickLocations]

在标注网格时会使用与标记相同的机制。

描述
绘制 在某处放置文本。 语法是:
StartList at Point plot Expression [Start] at Point

有关属性定义为如下所示:

  • StringList : str...rjust,ljust,above, below [size +)Expression] ...
  • :[Name] Expression Expression
描述
在两个点之间绘制线条或箭头。 语法是:
{line | arrow} from Point to Point [LineDescription]

linedesc 的属性定义如下所示:

  • : [名称] 表达式 表达式
  • 线路描述solid,invis,dotted [Expression], dashed Expression]
描述
circle 绘制圆。 语法是:
circle at Point [radius Expression]

半径单位为英寸;缺省大小为“小”。

描述
拖曳 定义线条序列。 语法是:
draw [Name] at Point[LineDescription]
下一步 继续序列。 语法是:
next [Name] at Point [LineDescription]
新建 开始新序列。 语法是:
new [Name] at Point [LineDescription]
数字列表 按照给定的一组数字创建线条。 这些数字被视作 xy1、y 2 等坐标点;在绘图时将在单个的 x 坐标值描点。 语法是:
number x, y1, y2 ...
for 创建循环。 语法是:
for Variable {from | =} Expression to Expression \
[by [arithmetic or multiplicative operator] Expression] do X Anything X

X 为任何未在字符串中出现的单个字符。 如果X是左花括号 {, then the string may contain internally balanced braces followed by a right brace}。 文本Anything重复为Variable采用第一个值Expression到第二个Expression.

IF 创建条件评估。 语法是:
if Expression then X Anything X [else X Anything X]
定义 提供与“优先级中断控制器 (PIC)”相同的宏处理程序。 语法是:
define MacroName X Anything X
复制 复制文件;包含该文件的当前内容。 语法是:
copy Filename
复制到 通过宏复制文件。
copy Filename thru MacroName

所有数字或引用的字符串都被视作参数。 复制一直持续到文件结束或下一个文件结束.G2. 可选条款until String导致复制在第一个字段为String调度。

以下语句可通过宏复制后继的行:

copy thru MacroName

在所有情况下,您都可以按内联而不是按名称来指定宏:

copy thru x MacroBody x
sh 将文本传递到 UNIX shell。 语法是:
sh x Anything x

变量Anything已扫描宏。 pid 宏是内置的。 它是由进程标识号组成的字符串;您可以使用它来生成唯一的文件名。

pic 将文本传递到 picpic已除去。 变量和宏将被忽略。 以句点开始的行(不是数字)会假设为 troff 命令而按字面传递。
图形 定义名为 Picname 的新图表,并且重新设置所有的坐标系统。 语法是:
graph Picname [pic-text]

如果在 grap 程序中使用 graph 命令,那么在.G1必须是 graph 命令。 您可以使用pic-text通过引用其帧来定位此图形相对于先前图形的位置,如以下示例中所示。

graph First
 ...
graph Second with .Frames.w at First.Frame.e + [0.1,0]

宏和表达式pic-text未评估。Picnames必须根据 pic 语法以大写字母开头。

PRINT 写入stderr当 grap 处理其输入时。 此语句在调试时可能非常有用。 语法是:
print [Expression | String]

grap 语言约定

grap 语言使用以下约定:

  • #(井号) 引入注释。 注释在行末自动结束。
  • 继续执行多行的语句必须在每行的开头加上 \ (反斜杠字符)。
  • 出现在一行上的多个语句必须以分号分隔。
  • grap 语言将忽略空白行。
  • 预定义字符串包含bullet,plus,box,star,dot,times,htick,vtick,squaredelta.
  • grap include 中可用的内置函数log(基数 10) ,exp(基数 10) ,int,sin,cos,atan2,sqrt,min,maxrand.

标志

描述
-l 禁止 grap 命令查找 /usr/lib/dwb/grap.defines 宏定义库文件。
-T名称 Name 变量的值指定为 grap 命令的输出设备。 缺省值为 -Tibm3816
- - (一对破折号)指示标志的结束。

文件

描述
/usr/lib/dwb/grap.defines 包含标准绘图字符的定义。