troff と TeX で用いるピクチャコンパイラ
filename
...
]
pic
-t
[
-cvzCSU
]
[
filename
...
]
-C
-S
-U
-n
-t
-c
-v
-z
-D
-T dev
dev
のための出力を行います。
pic
が
troff
に出
力する内容はデバイス非依存なので、本オプションは不要です。
for variable = expr1 to expr2 \
variable
を
expr1
に設定します。
variable
の値が
expr2
以下の間、
body
を実行して
variable
を
expr3
だけ増加させます;
もし
by
が指定されない場合、
variable
の増分は 1 です。
もし
expr3
の前に
*
が指定された場合、
variable
には
expr3
が掛けられます。
X
は
body
に存在しない任意の文字を使用して構いません。
if expr then X if-true X \
X
は
if-true
に存在しない任意の文字であり、
Y
は
if-false
に存在しない任意の文字です。
print arg...
arg
は式、位置、テキストのいずれかである必要が有ります。
デバッグに有効です。
command arg...
arg
は式、位置、テキストのいずれかである必要が有ります。
これは
や
\
で始まる行と同様の効果が有りますが、
値や変数をそのまま通します。
sh X command X
command
をシェルに渡します。
X
は
command
中に存在しない任意の文字です。
copy filename
filename
をファイルのこの位置に埋め込みます。
copy [filename] thru X body X \
copy [filename] thru macro \
body
を
filename
の各行に対して 1 度づつ実行します。
行は空白で区切られた語に分割され、
body
中の
$ i
ただし
i
は 1 から 9 までは、
行の
i
番目の語に置換されます。
filename
が指定されない場合、行は現在の行から
の行までが使用されます。
until
節が指定されると、
行の最初の語が
word
の行までが読み込まれます;
その行は捨てられます。
X
は
body
に含まれない任意の文字です。
例えば
B
.PS copy thru % circle at ($1,$2) % until END 1 2 3 4 5 6 END box .PEは以下等価です。 B
.PS circle at (1,2) circle at (3,4) circle at (5,6) box .PE各行に対して実行されるコマンドは、 thru の引数としてマクロ名を与えることで、 すでに定義されているマクロをとりうる。 reset
reset variable1, variable2 ...
variable2
... をデフォルト値にリセットします。
引数が指定されない場合、すべての既定義の変数はデフォルト値にリセットされます。
また
scale
に値を定義すると、寸法を管理する全ての既定義の変数は、
それらのデフォルト値に新しい scale を掛けたものになります。
plot expr [text\*(ic]
text
をフォーマットとして
expr
を引数として sprintf を用いて構成します。
text
が省略された場合にはフォーマット文字列
ts%gts
が使用されます。
通常のテキストオブジェクトと同様属性を指定できます。
適切なフォーマット文字列を指定するように非常に気を付ける必要が有ります;
pic
は文字列に関して非常に限られたチェックしか行いません。
この仕様は、
sprintf
のことを考慮して批判されています。
variable := expr
variable
が既に定義されていなければならず、
variable
が変更される場合は、これが定義された最内側ブロックでなければなりません。
(これに対して
=
は、variable がまだ定義されていない場合には現在のブロックにおいて定義し、
現在のブロックに置いて値を変更します。)
X anything X
という形式に対しては
{ anything }
も許されます。
この場合、
anything
には
{
と
}
がバランスして登場する必要が有ります。
文字列に
X
が含まれる場合、
{
と
}
のバランスが悪い場合に対応します。
dir
は現在の方向です。
例えば
line 2i
は 2 インチの長さの線を現在の方向へ描きます。
ピクチャの最大の幅と高さは変数
maxpswid ,
maxpsht
により指定されます。
初期値は 8.5 および 11 です。
数を表すのに科学技術的表記が可能です。
例えば
x = 5e-2
テキストの属性は組み合わせることが可能です。
例えば
foo above ljust
は正しいです。
ブロックが検査される深さには制限は有りません。
例えば
[A: [B: [C: box ]]] with .A.B.C.sw at 1,2
circle at last [].A.B.C
は受理可能です。
円弧はコンパスポイントを持ち、円弧が部分となるような円から決定されます。
円と円弧は点線や破線で書くことが出来ます。
\*(tx モードではスプラインを点線や破線で書くことが出来ます。
ボックスの角を丸くできます。
rad
属性は、角を構成する 1/4 円の半径を指定します。
rad ,
diam
属性が与えられない場合、
boxrad
が半径として使用されます。
初期値では
boxrad
は値 0 です。
角の丸いボックスは点線や破線で書くことが出来ます。
行は 2 番目の引数としてピクチャの最大の高さを指定できます。
幅として 0 が指定された場合には、
ピクチャのスケーリングファクタの計算においては幅は無視されます。
GNU
pic
は常に水平方向と垂直方向ともに同じ縮尺で
スケーリングしていることに注意して下さい。
これは
高さが指定された場合に水平方向と垂直方向を同じ縮尺でスケーリングしない
DWB
2.0
pic
と異なります。
テキストオブジェクトはそれぞれに関連づけられた見えないボックスを持っています。
テキストオブジェクトのコンパスポイントはこのボックスによって決定されます。
オブジェクトに関連づけられた暗示的な動きもこのボックスによって決定されます。
このボックスの寸法は width, height 属性から定まります;
もし width 属性が与えられていない場合は幅は
textwid
となります;
もし height 属性が与えられていない場合は高さは
textht
となります。
初期値では
textwid ,
textht
は値 0 です。
クオートされされたテキストが使用される場合、
sprintf(ts format ts, arg ,...)
という形式の式を使用可能です;
これは引数を
format
に従い整形したものを出力します。
format
は
printf (3)
に記述されている文字列であり、
与えられる数及び引数に適切なものである必要が有ります。
e ,
f ,
g ,
%
フォーマット文字のみ使用可能です。
オブジェクトを描画する時に使用する線の太さは
linethick
変数で制御可能です。
これは線の太さをポイントで指定します。
負の値はデフォルトの太さを使用することを意味します:
\*(tx 出力モードでは、8 ミリインチを使用することを意味します;
\*(tx 出力モードで
-c
オプション使用時には、線の太さには
行で指定されるものを使用ことを意味します;
troff 出力モードでは、ポイントサイズに比例する太さを使用することを意味します。
値 0 ではデバイスがサポートするもっとも細い線で描画します。
初期値は -1 です。
また、
thick [ ness ]
属性が有ります。
例えば
circle thickness 1.5
は 1.5 ポイントの太さの円を描画します。
線の太さは
scale
変数の値の影響も
行における高さの影響も受けません。
ボックス (角の丸いボックスを含みます)、
円、楕円は塗りつぶすことが可能であり、
属性
fill [ ed ]
で指定します。
これは値が 0 から 1 の式をオプションで引数として取ります;
0 は白で塗りつぶし、1 は黒で塗りつぶし、その間の値では
適切な灰色で塗りつぶします。
1 より大きい値も使用可能です:
この場合、現在のテキスト及び線に使用している灰色で塗りつぶします。
通常これは黒ですが、出力デバイスが変更する機構を持っているかも知れません。
引数を取らない場合、
fillval
変数の値が使用されます。
初期値では 0.5 です。
invisible 属性はオブジェクトの塗りつぶしには影響しません。
塗りつぶされたオブジェクトに関連づけられたテキストは、
塗りつぶし後に追加されます。
このため、塗りつぶしによってテキストが隠されることは有りません。
変数
arrowhead
が非 0 でありかつ \*(tx モードが有効もしくは
-x
オプションが与えられている場合には、
矢印の頭を実線の三角形で描画します。
初期値では
arrowhead
は 1 です。
pic
の troff 出力はデバイス独立です。
それゆえ
-T
オプションは冗長です。
全ての数値はインチとして扱われます;
数値は troff マシン単位としては解釈されません。
オブジェクトは
aligned
属性を取りえます。
これは後処理が
grops
で実行される場合のみ機能します。
オブジェクトに関連づけられたテキストで
aligned
属性を持つものは全て
オブジェクトの中央において回転されます。
それゆえ、オブジェクトの始点から終点への方向にあわせられます。
この属性は始点と終点が同じオブジェクトに関しては効果が有りません。
n th
と言う表現が許されている場所では
` expr 'th
という表現も許されます。
'th
は単一のトークンであることに注意して下さい:
'
と
th
の間には空白を入れてはなりません。
使用例は以下です。
for i = 1 to 4 do { line from `i'th box.nw to `i+1'th box.se }
B .de PS .. .de PE ..groff 自身は、他のグラフィックスファイル書式への直接変換はできません。 しかし、 groff オプション -Tps の使用により、ピクチャを最初に PostScript\*R 書式へ変換すれば、 多くの可能性があります。 この ps ファイルは、BoundingBox 情報が無いので、 それ自身は非常に使用し易いというものではないので、 他の変換プログラム、通常は ps2 other や psto other といった名前のものに喰わせます。 さらに、PostScript インタプリタ ghostscript ( gs ) は、 次のオプションで呼び出し可能な組み込みのグラフィックス変換デバイスを持ちます: gs -sDEVICE= <devname> 使用可能なデバイス一覧を得るには、次のように呼び出します: gs --help Encapsulated PostScript ファイル書式 EPS がより重要になっており、 また変換が過去のようには簡単ではないので、正しい仕事を行う ps2eps という名前の変換ツールの存在を知っていると良いでしょう。 これは、 gs にパッケージされているツール ps2epsi よりも良いものです。 ビットマップグラフィックス書式用には、 pstopnm を使用します。結果の (中間出力の) PNM ファイルは、 netpbm パッケージを使用することにより、 実質的に任意のグラフィックス書式に変換可能です。