pic コマンド

目的

描画するために troff コマンドの入力のプリプロセスをします。

構文

pic-T Name ] [  -File ... ]

説明

pic コマンドは、組版システムで簡単な図を描くための troff コマンド・プリプロセッサーです。基本的なオブジェクトは、ボックス、円、楕円、直線、スプライン、矢印、弧、および Text 変数で指定したテキストです。 最高レベルのオブジェクトが、ピクチャーです。

項目 説明
File 描画するために pic コマンドが処理する troff コマンドからの出力を指定します。

ピクチャー

pic コマンド内の最上位のオブジェクトがピクチャーです。

.PS OptionalWidth OptionalHeight

ElementList

.PE

.PF マクロを .PE の代わりに使用した場合、表示後の位置が入力時の状態に復元されます。

項目 説明
OptionalWidth ピクチャーがあれば、内部で使用される寸法に関係なく、その幅をインチ単位で指定します。最大値は 8.5 です。
OptionalHeight 同じ比率にスケールされる高さの値をインチ単位で指定します。この値は、デフォルトとは異なります。最大値は 14 です。
ElementList 以下のようなエレメントのリストを表示します。
Shape AttributeList 
For Statement
Placename: Element 
If Statement 
Placename: Position 
Copy Statement 
Variable = Expression
Print Statement 
Direction
Plot Statement 
{ List of Elements }
sh X Commandline X
[ List of Elements ]
troff-command

変数名は、小文字で始まり、ゼロか複数の文字または数字が続きます。 位置名は大文字で始まり、ゼロまたは複数の文字か数字が続きます。 位置名と変数名は、1 つのピクチャーから次のピクチャーへと、その値を保存します。

リスト内のエレメントは、改行文字か、; (セミコロン) で区切る必要があります。長いエレメントを続けるには、行を ¥ (円記号) で終了します。 コメントは、# 文字で始め、改行文字で終了します。

図形エレメント
図形エレメント・オブジェクトは、以下のとおりです。

box

circle

ellipse

arc

line

arrow

spline

move

Text-List

arrow オブジェクトは、 -> 属性を持つ line オブジェクトと同じです。

属性
AttributeList エレメントは、ゼロ個またはそれ以上の属性を順に並べたものです。各属性は、値が続く場合もあるキーワードで構成されます。
属性 属性
h(eigh)t Expression wid(th) Expression
rad(ius) Expression diam(eter) Expression
up OptionalExpression down OptionalExpression
right OptionalExpression left OptionalExpression
from Position to Position
at Position with Corner
by Expression, Expression then
dotted OptionalExpression dashed OptionalExpression
chop OptionalExpression -> <- <->
invis same
Text-list  

存在しない属性と値は、デフォルトから充てんされます。すべての属性がすべての図形エレメントについて意味があるわけではありません。無関係な属性は処理されません。 現在、意味のある属性は以下のとおりです。

項目 説明
図形エレメント 属性
box h(eigh)t, wid(th), at, same, dotted, dashed, invis, Text
circle, ellipse rad(ius), diam(eter), h(eigh)t, wid(th), at, same, invis, Text
arc up, down, left, right, h(eigh)t, wid(th), from, to, at, rad(ius), invis, ccw, cw, <-, ->, <->, Text
line, arrow up, down, left, right, h(eigh)t, wid(th), from, to, by, then, at, same, dotted, dashed, invis, <-, ->, <->, Text
spline up, down, left, right, h(eigh)t, wid(th), from, to, by, then, at, same, invis, <-, ->, <->, Text
move up, down, left, right, to, by, same, Text
Text-list at, Text-item

at 属性は、指定位置に図形の中心を置くことを意味します。 行、スプライン、および弧の場合、h(eigh)t および wid(th) 属性が矢印の先頭のサイズを示します。

Text-item 変数は、通常、何らかの図形エレメントの属性です。デフォルトでは、その変数はオブジェクトの図形の中心に置かれます。スタンドアロン・テキストのみでも受け入れられます。 Text-list の図形エレメントは、テキスト・エントリーのリストです。テキスト・エントリーは、以下のようにオプションとして位置決め要求が続く引用符で囲まれた文字列です。

"..."

"..." center

"..." ljust

"..." rjust

"..." above

"..." below

一部の図形エレメントに複数のテキスト・エントリーがあると、修飾されている場合を除いて、垂直に中央揃えされます。位置決め要求は各エントリーに独自に適用されます。

テキスト・エントリーには、サイズおよびフォントの変更やローカルの動作などを管理する troff コマンドが含まれています。これらのコマンドのバランスをとって、入力状態が終了前の状態に復元されることを確認します。

項目 説明
位置/ロケーション 1 つの位置は最終的には X,Y の座標対ですが、以下のような方法で指定することもできます。

Place

(Position)

Expression, Expression

(Position) [+/- (Expression, Expression)]

(Position) [+/- Expression, Expression]

(Place1, Place2)

(Place1.X, Place2.Y)

Expression < Position, Position >

Expression [of the way] between Position and Position

Placename [Corner]

Corner Placename

Here

Corner of Nth Shape

Nth shape [Corner]

注: Corner 変数は 、以下のように 8 つのコンパス・ポイントのうちのいずれか、または図形エレメントの中心、始まり、終わりを指定します。

.n .e .w .s .ne .se .nw .sw

.t .b .r .l

c .start .end

ピクチャーの各オブジェクトは、序数を持ちます。Nth は、以下のように参照します。

  • Nth
  • Nth last

pic コマンドは、1th3th などのような名前を受け入れられるほど柔軟なものです。 1st3st も同様に使用されます。

変数

組み込み変数およびそのデフォルト値は、以下のとおりです。

項目 説明
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 で除算されます。
注: .ps (サイズ) 行によって、8 インチより大きいサイズが指定されたときでも、pic コマンドでは、生成され、troff に送られるピクチャーのサイズが 8x8 インチと制限されています。

以下の pic コマンドの式は、浮動小数点で評価されます。 寸法を表す数字はすべて、インチ単位になります。

Expression + Expression

Expression - Expression

Expression * Expression

Expression / Expression

Expression % Expression (modulus)

- Expression

(Expression)

variable

number

Place .x

Place .y

Place .ht

Place .wid

Place .rad

sin(Expression) cos(Expression) atan2(Expression, Expression) log(Expression) sqrt(Expression) int(Expression) max(Expression, Expression) min(Expression,Expression) rand(Expression)

論理演算子

pic コマンドは、論理計算用に以下の演算子を提供します。

項目 説明
! 否定 (ではない)
> よりも大きい
< よりも小さい
>/= よりも大きいか等しい
</= よりも小さいか等しい
&& And
| または
== 等しい
!= 等しくない

定義

以下の define ステートメントは、文法の一部ではありません。

define Name X Replacement text X

Replacement text変数での $1$2 のような値のオカレンスは、Name 変数が呼び出された場合、次のように対応するオプションで置き換えられます。

Name(Option1, Option2, ...)

存在しないオプションは、ヌル・ストリングで置き換えられます。 Replacement text 変数には、改行文字が使えます。

copy および copy thru ステートメント

copy ステートメントには、以下のように直後に続くファイルまたは値からのデータが含まれています。

copy File

copy thru Macro

copy File thru Macro

copy File thru Macro until String

Macro パラメーター値には、定義済みマクロ名か、内容の一部でない何らかの文字で囲まれたマクロの内容が使えます。 ファイル名を指定しないと、copy ステートメントは、次の .PE マクロ行までの入力をコピーします。

for ループと if ステートメント

for ステートメントと if ステートメントは、以下のようにループと意思決定を規定します。


Variable=Expression to Expression by Expression do X anything X

if Expression then X anything X else X anything X

byelse 節は、オプションです。 if ステートメントの Expression 変数は、通常の関係演算子または String1 == (または !=) String2 文字列検査を使用できます。

その他の情報

sh コマンドは以下のようにコマンド・ラインを実行します。

sh X Commandline X

式の値を以下のようにプロットできます。

plot Expression OptionalFormat Attributes

Expression 変数値は、評価されて文字列に変換されます (提供されている場合、フォーマット指定を使用します)。

充てんモードまたは非充てんモードの状態は、ピクチャーについて保存されます。

入力番号は E (指数) 表記で表すことができます。

フラグ

項目 説明
-TName 指定された印刷装置の出力を作成します。Name には、以下の値を使用できます。
ibm3812
3812 ページ・プリンター。
ibm3816
3816 ページ・プリンター。
hplj
Hewlett-Packard LaserJet II。
ibm5587G
5587-G01 漢字プリンター (マルチバイト言語サポート)。
psc
PostScript プリンター。
X100
AIXwindows ディスプレイ。
X100K
AIXwindows ディスプレイ (マルチバイト文字サポート)。

デフォルトは ibm3816 です。

注: troff コマンドの -T Name フラグを使用する代わりに、TYPESETTER 環境変数を上記のいずれかの値に設定してもかまいません。
- 標準入力に逆変換します。