aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/pic.1
blob: 3a7dd2d819298964a19f74a371475de86574be87 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
.ig \"-*- nroff -*-
Copyright (C) 1989-1995 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
..
.\" jpman %Id: pic.1,v 1.2 1997/03/29 07:11:03 horikawa Stab %
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X
.el .ds tx TeX
.ie \n(.g .ds ic \/
.el .ds ic \^
.\" The BSD man macros can't handle " in arguments to font change macros,
.\" so use \(ts instead of ".
.tr \(ts"
.TH PIC 1 "7 September 1996" "Groff Version 1.10"
.SH 名称
pic \- troff と TeX で用いるピクチャコンパイラ
.SH 書式
.B pic
[
.B \-nvC
]
[
.I filename
\&.\|.\|.
]
.br
.B pic
.B \-t
[
.B \-cvzC
]
[
.I filename
\&.\|.\|.
]
.SH 解説
.LP
本マニュアルでは、groff ドキュメントフォーマットシステムの一部である 
GNU バージョンの
.B pic
について記述します。
.B pic
は、
.B troff
か \*(tx の入力ファイルに埋め込まれたピクチャの記述を
.B troff
か \*(tx が解釈できるコマンドに変換します。
ピクチャは
.B .PS
で始まる行から開始され、
.B .PE
で始まる行で終了します。
.B .PS 
と
.B .PE
に狭まれた領域以外は、変更せずに素通しします。
.LP
.B .PS
と
.B .PE
マクロの適切な定義はユーザに任されています。使用している
マクロパッケージが適当な定義を提供しない場合(たとえば、古いバージョンの
\-ms マクロの場合)、
.B \-mpic
マクロから取り出すことができます。
\-mpic マクロではピクチャ
は中央寄せになります。
.SH オプション
.LP
引数を伴わないオプションは
.B \-
のあとにまとめて続けることができます。
特別なオプション
.B \-\^\-
は、オプションの最後を意味します。ファイル名のかわ
りに用いられる
.B \-
は、標準入力を意味します。
.TP
.B \-C
.B .PS
や
.B .PE
のあとに空白や改行以外の文字がきても、それを
.B .PS
や
.B .PE
であると解釈します。
.TP
.B \-S
より安全なモード;
.B sh
コマンドを実行しません。
信用できない入力を処理する場合に便利です。
.TP
.B \-n
groff の troff に対する独自拡張を用いません。後処理に独自拡張を解釈
できないものを用いるときに、このオプションを指定します。拡張については、
.BR groff_out (5)
に記述されています。
.B \-n
オプションはまた、troff モードにお
いて、点を打つために長さ 0 の直線を使わないようにします。
.TP
.B \-t
\*(tx モードです。
.TP
.B \-c
より
.B tpic
との互換性が高い処理を行います。本オプションは自動的に -t 
オプションも設定します。
.B \e
で始まる行が透過的に出力されることがなくなり
ます。
.B .
で始まる行は先頭の
.B .
を
.B \e
に置き換えます。
.B .ps
で始まる行は、特
別な扱いを受けます。すなわち、整数のオプションを続けることができ、それ
は直線の太さ(ペンのサイズ)を 1000 分の 1 インチで示します。オプションが
省略された場合は、直
前の直線の太さに戻します。直線の太さの初期値は 1000 分の 8 インチです。
このように指定された直線の太さは、
.B thickness
属性、または、
.B linethick
変数によって負でない値が設定されていない場合にのみ有効です。
.TP
.B \-v
バージョン番号を表示します。
.TP
.B \-z
\*(tx モードにおいて、長さ 0 の直線を用いて点を描画します。
.LP
他のバージョンの pic でサポートされている以下のオプションは無視されます。
.TP
.B \-D
すべての直線を
.B \eD
エスケープシーケンスにより描画します。
.B pic
は、つねに
この動作を行います。
.TP
.BI \-T \ dev
.B troff
のデバイス
.I dev
のための出力を行います。
.B pic
が
.B troff
に出
力する内容はデバイス非依存なので、本オプションは不要です。
.SH 使用例
本節では GNU pic とオリジナルバージョンの pic との違いのみを説明します。
これらの違いの多くは新しいバージョンの Unix pic にもあてはまります。
.SS \*(tx モード
.LP
\*(tx モードは
.B \-t
オプションにて有効になります。
\*(tx モードでは、各ピクチャのために
.B \egraph
から呼び出される vbox を、pic は定義します。
例えば以下のようにして、自分自身で vbox を表示する必要が有ります。
.RS
.LP
.B
\ecenterline{\ebox\egraph}
.RE
.LP
実際、vbox は高さが 0 ですから、この表現ではピクチャの上の空間が
ピクチャの下の空間よりも若干大きくなります。
.RS
.LP
.B
\ecenterline{\eraise 1em\ebox\egraph}
.RE
.LP
はこの問題を避けます。
.LP
\*(tx ドライバで
.B tpic
スペシャルバージョン 2 をサポートするものを使用する必要が有ります。
.LP
.B \e
で始まる行は透過的に通されます; 単一の
.B %
が行末に追加され、望まれない空白が出るのを防ぎます。
この機能を使用して、安全にフォントを変更したり
.B \ebaselineskip
の値を変更できます。
この方法以外で実行すると、望ましくない結果となるでしょう;
各自のリスクで実行して下さい。
ピリオドで始まる行は特別には扱われません。
.SS コマンド
.TP
\fBfor\fR \fIvariable\fR \fB=\fR \fIexpr1\fR \fBto\fR \fIexpr2\fR \
[\fBby\fR [\fB*\fR]\fIexpr3\fR] \fBdo\fR \fIX\fR \fIbody\fR \fIX\fR
.I variable
を
.IR expr1
に設定します。
.I variable
の値が
.IR expr2
以下の間、
.I body
を実行して
.I variable
を
.IR expr3
だけ増加させます;
もし
.B by
が指定されない場合、
.I variable
の増分は 1 です。
もし
.I expr3
の前に
.B *
が指定された場合、
.I variable
には
.IR expr3
が掛けられます。
.I X
は
.IR body
に存在しない任意の文字を使用して構いません。
.TP
\fBif\fR \fIexpr\fR \fBthen\fR \fIX\fR \fIif-true\fR \fIX\fR \
[\fBelse\fR \fIY\fR \fIif-false\fR \fIY\fR]
.IR expr
を評価します;
もし非 0 ならば、
.IR if-true
を実行します、
そうでないなら
.IR if-false
を実行します。
.I X
は
.IR if-true
に存在しない任意の文字であり、
.I Y
は
.IR if-false
に存在しない任意の文字です。
.TP
\fBprint\fR \fIarg\fR\|.\|.\|.
引数を結合し、標準エラー出力に 1 行で出力します。
各
.I arg
は式、位置、テキストのいずれかである必要が有ります。
デバッグに有効です。
.TP
\fBcommand\fR \fIarg\fR\|.\|.\|.
引数を結合し、troff または \*(tx に 1 行として渡します。
各
.I arg
は式、位置、テキストのいずれかである必要が有ります。
これは
.B .
や
.BR \e
で始まる行と同様の効果が有りますが、
値や変数をそのまま通します。
.TP
\fBsh\fR \fIX\fR \fIcommand\fR \fIX\fR
.I command
をシェルに渡します。
.I X
は
.IR command
中に存在しない任意の文字です。
.TP
\fBcopy\fR \fB"\fIfilename\fB"\fR
.I filename
をファイルのこの位置に埋め込みます。
.TP
\fBcopy\fR [\fB"\fIfilename\fB"\fR] \fBthru\fR \fIX\fR \fIbody\fR \fIX\fR \
[\fBuntil\fR \fB"\fIword\*(ic\fB"\fR]
.ns
.TP
\fBcopy\fR [\fB"\fIfilename\fB"\fR] \fBthru\fR \fImacro\fR \
[\fBuntil\fR \fB"\fIword\*(ic\fB"\fR]
この構造は
.I body
を
.IR filename
の各行に対して 1 度づつ実行します。
行は空白で区切られた語に分割され、
.IR body
中の
.BI $ i
ただし
.I i
は 1 から 9 までは、
行の
.IR i
番目の語に置換されます。
.I filename
が指定されない場合、行は現在の行から
.BR .PE
の行までが使用されます。
.B until
節が指定されると、
行の最初の語が
.IR word
の行までが読み込まれます;
その行は捨てられます。
.I X
は
.IR body
に含まれない任意の文字です。
例えば
.RS
.IP
.ft B
.nf
\&.PS
copy thru % circle at ($1,$2) % until "END"
1 2
3 4
5 6
END
box
\&.PE
.ft
.fi
.RE
.IP
は以下等価です。
.RS
.IP
.ft B
.nf
\&.PS
circle at (1,2)
circle at (3,4)
circle at (5,6)
box
\&.PE
.ft
.fi
.RE
.IP
各行に対して実行されるコマンドは、
.BR thru
の引数としてマクロ名を与えることで、
すでに定義されているマクロをとりうる。
.LP
.B reset
.br
.ns
.TP
\fBreset\fI variable1\fB,\fI variable2 .\^.\^.
既定義の変数
.IR variable1 ,
.I variable2
\&.\^.\^. をデフォルト値にリセットします。
引数が指定されない場合、すべての既定義の変数はデフォルト値にリセットされます。
また
.B scale
に値を定義すると、寸法を管理する全ての既定義の変数は、
それらのデフォルト値に新しい scale を掛けたものになります。
.TP
\fBplot\fR \fIexpr\fR [\fB"\fItext\*(ic\fB"\fR]
これはテキストオブジェクトであり、
.I text
をフォーマットとして
.IR expr
を引数として sprintf を用いて構成します。
.I text
が省略された場合にはフォーマット文字列
.B "\(ts%g\(ts"
が使用されます。
通常のテキストオブジェクトと同様属性を指定できます。
適切なフォーマット文字列を指定するように非常に気を付ける必要が有ります;
pic は文字列に関して非常に限られたチェックしか行いません。
この仕様は、
.BR sprintf
のことを考慮して批判されています。
.TP
.IB variable := expr
これは
.B =
と同じですが、
.I variable
が既に定義されていなければならず、
.I variable
が変更される場合は、これが定義された最内側ブロックでなければなりません。
(これに対して
.B =
は、variable がまだ定義されていない場合には現在のブロックにおいて定義し、
現在のブロックに置いて値を変更します。)
.LP
.IP
.IR X\  anything\  X
.LP
という形式に対しては
.IP
.BI {\  anything\  }
.LP
も許されます。
この場合、
.I anything
には
.B {
と
.BR }
がバランスして登場する必要が有ります。
文字列に
.I X
が含まれる場合、
.B {
と
.BR }
のバランスが悪い場合に対応します。
.SS 式
式の文法が少し拡張されました:
.LP
.IB  x\  ^\  y
(指数)
.br
.BI sin( x )
.br
.BI cos( x )
.br
.BI atan2( y , \ x )
.br
.BI log( x )
(base 10)
.br
.BI exp( x )
(base 10, ie 10\v'-.4m'\fIx\*(ic\fR\v'.4m')
.br
.BI sqrt( x )
.br
.BI int( x )
.br
.B rand()
(0 から 1 までの乱数を返す)
.br
.BI rand( x )
(1 から
.IR x
までの乱数を返す;
勧められません)
.br
.BI max( e1 , \ e2 )
.br
.BI min( e1 , \ e2 )
.br
.BI ! e
.br
\fIe1\fB && \fIe2\fR
.br
\fIe1\fB || \fIe2\fR
.br
\fIe1\fB == \fIe2\fR
.br
\fIe1\fB != \fIe2\fR
.br
\fIe1\fB >= \fIe2\fR
.br
\fIe1\fB > \fIe2\fR
.br
\fIe1\fB <= \fIe2\fR
.br
\fIe1\fB < \fIe2\fR
.br
\fB"\fIstr1\*(ic\fB" == "\fIstr2\*(ic\fB"\fR
.br
\fB"\fIstr1\*(ic\fB" != "\fIstr2\*(ic\fB"\fR
.br
.LP
曖昧さを避けるために、
文字列の比較式はあるコンテキストにおいては括弧で括られる必要が有ります
.SS その他の変更
.LP
単なる式
.IR expr
は属性として受理可能です;
これは
.IR dir\ expr
と同じであり、
.I dir
は現在の方向です。
例えば
.IP
.B line 2i
.LP
は 2 インチの長さの線を現在の方向へ描きます。
.LP
ピクチャの最大の幅と高さは変数
.BR maxpswid ,
.B maxpsht
により指定されます。
初期値は 8.5 および 11 です。
.LP
数を表すのに科学技術的表記が可能です。
例えば
.RS
.B
x = 5e\-2
.RE
.LP
テキストの属性は組み合わせることが可能です。
例えば
.RS
.B
"foo" above ljust
.RE
は正しいです。
.LP
ブロックが検査される深さには制限は有りません。
例えば
.RS
.B
[A: [B: [C: box ]]] with .A.B.C.sw at 1,2
.br
.B
circle at last [\^].A.B.C
.RE
は受理可能です。
.LP
円弧はコンパスポイントを持ち、円弧が部分となるような円から決定されます。
.LP
円と円弧は点線や破線で書くことが出来ます。
\*(tx モードではスプラインを点線や破線で書くことが出来ます。
.LP
ボックスの角を丸くできます。
.B rad
属性は、角を構成する 1/4 円の半径を指定します。
.BR rad ,
.B diam
属性が与えられない場合、
.B boxrad
が半径として使用されます。
初期値では
.B boxrad
は値 0 です。
角の丸いボックスは点線や破線で書くことが出来ます。
.LP
.B .PS
行は 2 番目の引数としてピクチャの最大の高さを指定できます。
幅として 0 が指定された場合には、
ピクチャのスケーリングファクタの計算においては幅は無視されます。
GNU pic は常に水平方向と垂直方向ともに同じ縮尺で
スケーリングしていることに注意して下さい。
これは
高さが指定された場合に水平方向と垂直方向を同じ縮尺でスケーリングしない
.SM DWB
2.0 pic と異なります。
.LP
テキストオブジェクトはそれぞれに関連づけられた見えないボックスを持っています。
テキストオブジェクトのコンパスポイントはこのボックスによって決定されます。
オブジェクトに関連づけられた暗示的な動きもこのボックスによって決定されます。
このボックスの寸法は width, height 属性から定まります;
もし width 属性が与えられていない場合は幅は
.BR textwid
となります;
もし height 属性が与えられていない場合は高さは
.BR textht
となります。
初期値では
.BR textwid ,
.B textht
は値 0 です。
.LP
クオートされされたテキストが使用される場合、
.IP
.BI sprintf(\(ts format \(ts,\  arg ,\fR.\|.\|.\fB)
.LP
という形式の式を使用可能です;
これは引数を
.IR format
に従い整形したものを出力します。
.I format
は
.BR printf (3)
に記述されている文字列であり、
与えられる数及び引数に適切なものである必要が有ります。
.BR e ,
.BR f ,
.BR g ,
.B %
フォーマット文字のみ使用可能です。
.LP
オブジェクトを描画する時に使用する線の太さは
.B linethick
変数で制御可能です。
これは線の太さをポイントで指定します。
負の値はデフォルトの太さを使用することを意味します:
\*(tx 出力モードでは、8 ミリインチを使用することを意味します;
\*(tx 出力モードで
.B -c
オプション使用時には、線の太さには
.B .ps
行で指定されるものを使用ことを意味します;
troff 出力モードでは、ポイントサイズに比例する太さを使用することを意味します。
値 0 ではデバイスがサポートするもっとも細い線で描画します。
初期値は -1 です。
また、
.BR thick [ ness ]
属性が有ります。
例えば
.RS
.LP
.B circle thickness 1.5
.RE
.LP
は 1.5 ポイントの太さの円を描画します。
線の太さは
.B scale
変数の値の影響も
.PS
行における高さの影響も受けません。
.LP
ボックス(角の丸いボックスを含みます)、
円、楕円は塗りつぶすことが可能であり、
属性
.BR fill [ ed ]
で指定します。
これは値が 0 から 1 の式をオプションで引数として取ります;
0 は白で塗りつぶし、1 は黒で塗りつぶし、その間の値では
適切な灰色で塗りつぶします。
1 より大きい値も使用可能です:
この場合、現在のテキスト及び線に使用している灰色で塗りつぶします。
通常これは黒ですが、出力デバイスが変更する機構を持っているかも知れません。
引数を取らない場合、
.B fillval
変数の値が使用されます。
初期値では 0.5 です。
invisible 属性はオブジェクトの塗りつぶしには影響しません。
塗りつぶされたオブジェクトに関連づけられたテキストは、
塗りつぶし後に追加されます。
このため、塗りつぶしによってテキストが隠されることは有りません。
.LP
変数
.B arrowhead
が非 0 でありかつ \*(tx モードが有効もしくは
.B \-x
オプションが与えられている場合には、
矢印の頭を実線の三角形で描画します。
初期値では
.B arrowhead
は 1 です。
.LP
pic の troff 出力はデバイス独立です。
それゆえ
.B \-T
オプションは冗長です。
全ての数値はインチとして扱われます;
数値は troff マシン単位としては解釈されません。
.LP
オブジェクトは
.B aligned
属性を取りえます。
これは後処理が
.BR grops
で実行される場合のみ機能します。
オブジェクトに関連づけられたテキストで
.B aligned
属性を持つものは全て
オブジェクトの中央において回転されます。
それゆえ、オブジェクトの始点から終点への方向にあわせられます。
この属性は始点と終点が同じオブジェクトに関しては効果が有りません。
.LP
.IB n th
と言う表現が許されている場所では
.BI ` expr 'th
という表現も許されます。
.B 'th
は単一のトークンであることに注意して下さい:
.B '
と
.BR th
の間には空白を入れてはなりません。
使用例は以下です。
.IP
.B
.nf
for i = 1 to 4 do {
   line from `i'th box.nw to `i+1'th box.se
}
.fi
.SH 関連ファイル
.Tp \w'\fB/usr/share/tmac/tmac.pic'u+3n
.B
/usr/share/tmac/tmac.pic
.B PS
と
.B PE
マクロの定義の例です。
.SH 関連項目
.BR troff (1),
.BR groff_out (5),
.BR tex (1)
.br
Tpic: Pic for \*(tx
.br
AT&T Bell Laboratories, Computing Science Technical Report No.\ 116,
PIC \(em A Graphics Language for Typesetting.
(This can be obtained by sending a mail message to netlib@research.att.com
with a body of `send\ 116\ from\ research/cstr'.)
.SH バグ
.LP
.B groff
にとって不正な文字(例えば
.SM ASCII
code 0 や 8 進で 013〜037、
0200〜0237)は \*(tx モードであっても拒否されます。
.LP
.B fillval
の解釈は 10th edition Unix と互換性がありません。
10th edition Unix は 0 を黒、1 を白と解釈します。
.\" Kazuo HORIKAWA <horikawa@jp.freebsd.org>
.\" USAGE 訳出 (Dec 27, 1996)