Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all bug

名称

       pic - troff と TeX で用いるピクチャコンパイラ

書式

       pic [ -nvCSU ] [ filename ...  ]
       pic -t [ -cvzCSU ] [ filename ...  ]

解説

       本マニュアルでは、groff  ドキュメントフォーマットシステムの一部である GNU バージョンの pic について記述し
       ます。 pic は、 troff か TeX の入力ファイルに埋め込まれたピクチャの記述を troff か TeX が解釈できるコマン
       ドに変換します。 ピクチャは .PS で始まる行から開始され、 .PE で始まる行で終了します。 .PS.PE に狭まれ
       た領域以外は、変更せずに素通しします。

       .PS.PE マクロの適切な定義はユーザに任されています。使用している  マクロパッケージが適当な定義を提供し
       ない場合  (たとえば、古いバージョンの  -ms マクロの場合)、 -mpic マクロから取り出すことができます。 -mpic
       マクロではピクチャ は中央寄せになります。

オプション

       引数を伴わないオプションは - のあとにまとめて続けることができます。 特別なオプション --  は、オプションの
       最後を意味します。ファイル名のかわ りに用いられる - は、標準入力を意味します。

       -C     .PS.PE のあとに空白や改行以外の文字がきても、それを .PS.PE であると解釈します。

       -S     より安全なモード; sh コマンドを実行しません。 信用できない入力を処理する場合に便利です。 (デフォル
              トで有効です)

       -U     安全でないモード; デフォルトオプション -S を打ち消します。

       -n     groff の troff に対する独自拡張を用いません。後処理に独自拡張を解釈 できないものを用いるときに、こ
              のオプションを指定します。拡張については、  groff_out(5)  に記述されています。  -n  オプションはま
              た、troff モードにおいて、点を打つために pic が長さ 0 の直線を使わないようにします。

       -t     TeX モードです。

       -c     より tpic との互換性が高い処理を行います。本オプションは自動的に -t オプションも設定します。 \  で
              始まる行が透過的に出力されることがなくなり  ます。  .  で始まる行は先頭の .\ に置き換えます。
              .ps で始まる行は、特 別な扱いを受けます。すなわち、整数のオプションを続けることができ、それ は直線
              の太さ  (ペンのサイズ) を 1000 分の 1 インチで示します。オプションが 省略された場合は、直 前の直線
              の太さに戻します。直線の太さの初期値は 1000 分の 8 インチです。 このように指定された直線の太さは、
              thickness 属性、または、 linethick 変数によって負でない値が設定されていない場合にのみ有効です。

       -v     バージョン番号を表示します。

       -z     TeX モードにおいて、長さ 0 の直線を用いて点を描画します。

       他のバージョンの pic でサポートされている以下のオプションは無視されます。

       -D     すべての直線を \D エスケープシーケンスにより描画します。 pic は、つねに この動作を行います。

       -T dev troff  のデバイス  dev  のための出力を行います。  pictroff に出 力する内容はデバイス非依存なの
              で、本オプションは不要です。

使用法

       本節では GNU pic とオリジナルバージョンの pic  との違いのみを説明します。  これらの違いの多くは新しいバー
       ジョンの Unix pic にもあてはまります。

   TeX モード
       TeX モードは -t オプションにて有効になります。 TeX モードでは、各ピクチャのために \graph から呼び出される
       vbox を、 pic は定義します。 例えば以下のようにして、自分自身で vbox を表示する必要が有ります。

              \centerline{\box\graph}

       実際、vbox は高さが 0 ですから、この表現ではピクチャの上の空間が ピクチャの下の空間よりも若干大きくなりま
       す。

              \centerline{\raise 1em\box\graph}

       はこの問題を避けます。

       TeX ドライバで tpic スペシャルバージョン 2 をサポートするものを使用する必要が有ります。

       \  で始まる行は透過的に通されます; 単一の % が行末に追加され、望まれない空白が出るのを防ぎます。 この機能
       を使用して、安全にフォントを変更したり \baselineskip の値を変更できます。  この方法以外で実行すると、望ま
       しくない結果となるでしょう; 各自のリスクで実行して下さい。 ピリオドで始まる行は特別には扱われません。

   コマンド
       for variable = expr1 to expr2 [by [*]expr3] do X body X
              variableexpr1  に設定します。  variable  の値が expr2 以下の間、 body を実行して variableexpr3 だけ増加させます; もし by が指定されない場合、 variable の増分は 1 です。 もし expr3  の前に
              * が指定された場合、 variable には expr3 が掛けられます。 Xbody に存在しない任意の文字を使用し
              て構いません。

       if expr then X if-true X [else Y if-false Y]
              expr を評価します; もし非 0 ならば、 if-true を実行します、 そうでないなら if-false を実行します。
              Xif-true に存在しない任意の文字であり、 Yif-false に存在しない任意の文字です。

       print arg...
              引数を結合し、標準エラー出力に  1 行で出力します。 各 arg は式、位置、テキストのいずれかである必要
              が有ります。 デバッグに有効です。

       command arg...
              引数を結合し、troff または TeX に 1 行として渡します。 各 arg は式、位置、テキストのいずれかである
              必要が有ります。 これは .\ で始まる行と同様の効果が有りますが、 値や変数をそのまま通します。

       sh X command X
              command をシェルに渡します。 Xcommand 中に存在しない任意の文字です。

       copy "filename"
              filename をファイルのこの位置に埋め込みます。

       copy ["filename"] thru X body X [until "word"]
       copy ["filename"] thru macro [until "word"]
              この構造は bodyfilename の各行に対して 1 度づつ実行します。 行は空白で区切られた語に分割され、
              body 中の $i ただし i は 1 から 9 までは、 行の i 番目の語に置換されます。 filename が指定されない
              場合、行は現在の行から  .PE  の行までが使用されます。 until 節が指定されると、 行の最初の語が word
              の行までが読み込まれます; その行は捨てられます。 Xbody に含まれない任意の文字です。 例えば

                     .PS
                     copy thru % circle at ($1,$2) % until "END"
                     1 2
                     3 4
                     5 6
                     END
                     box
                     .PE

              は以下等価です。

                     .PS
                     circle at (1,2)
                     circle at (3,4)
                     circle at (5,6)
                     box
                     .PE

              各行に対して実行されるコマンドは、 thru の引数としてマクロ名を与えることで、  すでに定義されている
              マクロをとりうる。

       reset
       reset variable1, variable2 ...
              既定義の変数  variable1, variable2 ... をデフォルト値にリセットします。 引数が指定されない場合、す
              べての既定義の変数はデフォルト値にリセットされます。 また scale に値を定義すると、寸法を管理する全
              ての既定義の変数は、 それらのデフォルト値に新しい scale を掛けたものになります。

       plot expr ["text"]
              これはテキストオブジェクトであり、  text をフォーマットとして expr を引数として sprintf を用いて構
              成します。 text が省略された場合にはフォーマット文字列  "%g"  が使用されます。  通常のテキストオブ
              ジェクトと同様属性を指定できます。  適切なフォーマット文字列を指定するように非常に気を付ける必要が
              有ります; pic は文字列に関して非常に限られたチェックしか行いません。 この仕様は、 sprintf のことを
              考慮して批判されています。

       variable:=expr
              これは  =  と同じですが、  variable  が既に定義されていなければならず、  variable が変更される場合
              は、これが定義された最内側ブロックでなければなりません。 (これに対して = は、variable がまだ定義さ
              れていない場合には現在のブロックにおいて定義し、 現在のブロックに置いて値を変更します。)

              X anything X

       という形式に対しては

              { anything }

       も許されます。 この場合、 anything には {} がバランスして登場する必要が有ります。 文字列に X が含まれ
       る場合、 {} のバランスが悪い場合に対応します。

   
       式の文法が少し拡張されました:

       x ^ y (指数)
       sin(x)
       cos(x)
       atan2(y, x)
       log(x) (base 10)
       exp(x) (base 10, ie 10x)
       sqrt(x)
       int(x)
       rand() (0 から 1 までの乱数を返す)
       rand(x) (1 から x までの乱数を返す; 勧められません)
       srand(x) (乱数の種を設定する)
       max(e1, e2)
       min(e1, e2)
       !e
       e1 && e2
       e1 || e2
       e1 == e2
       e1 != e2
       e1 >= e2
       e1 > e2
       e1 <= e2
       e1 < e2
       "str1" == "str2"
       "str1" != "str2"

       曖昧さを避けるために、 文字列の比較式はあるコンテキストにおいては括弧で括られる必要が有ります

   その他の変更
       単なる式 expr は属性として受理可能です; これは dir expr と同じであり、 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
       は受理可能です。

       円弧はコンパスポイントを持ち、円弧が部分となるような円から決定されます。

       円と円弧は点線や破線で書くことが出来ます。 TeX モードではスプラインを点線や破線で書くことが出来ます。

       ボックスの角を丸くできます。 rad 属性は、角を構成する 1/4 円の半径を指定します。 rad, diam 属性が与えられ
       ない場合、 boxrad が半径として使用されます。 初期値では boxrad は値 0 です。 角の丸いボックスは点線や破線
       で書くことが出来ます。

       .PS 行は 2 番目の引数としてピクチャの最大の高さを指定できます。 幅として  0  が指定された場合には、  ピク
       チャのスケーリングファクタの計算においては幅は無視されます。 GNU pic は常に水平方向と垂直方向ともに同じ縮
       尺で スケーリングしていることに注意して下さい。 これは 高さが指定された場合に水平方向と垂直方向を同じ縮尺
       でスケーリングしない DWB 2.0 pic と異なります。

       テキストオブジェクトはそれぞれに関連づけられた見えないボックスを持っています。 テキストオブジェクトのコン
       パスポイントはこのボックスによって決定されます。 オブジェクトに関連づけられた暗示的な動きもこのボックスに
       よって決定されます。 このボックスの寸法は width, height 属性から定まります; もし width 属性が与えられてい
       ない場合は幅は textwid となります; もし height 属性が与えられていない場合は高さは textht となります。  初
       期値では textwid, textht は値 0 です。

       クオートされされたテキストが使用される場合、

              sprintf("format", arg,...)

       という形式の式を使用可能です; これは引数を format に従い整形したものを出力します。 formatprintf(3) に
       記述されている文字列であり、 与えられる数及び引数に適切なものである必要が有ります。 e, f, g, % フォーマッ
       ト文字のみ使用可能です。

       オブジェクトを描画する時に使用する線の太さは  linethick 変数で制御可能です。 これは線の太さをポイントで指
       定します。 負の値はデフォルトの太さを使用することを意味します: TeX 出力モードでは、8 ミリインチを使用する
       ことを意味します; TeX 出力モードで -c オプション使用時には、線の太さには .ps 行で指定されるものを使用こと
       を意味します; troff 出力モードでは、ポイントサイズに比例する太さを使用することを意味します。 値 0  ではデ
       バイスがサポートするもっとも細い線で描画します。  初期値は  -1 です。 また、 thick[ness] 属性が有ります。
       例えば

              circle thickness 1.5

       は 1.5 ポイントの太さの円を描画します。 線の太さは scale 変数の値の影響も .PS  行における高さの影響も受け
       ません。

       ボックス  (角の丸いボックスを含みます)、  円、楕円は塗りつぶすことが可能であり、 属性 fill[ed] で指定しま
       す。 これは値が 0 から 1 の式をオプションで引数として取ります; 0 は白で塗りつぶし、1 は黒で塗りつぶし、そ
       の間の値では  適切な灰色で塗りつぶします。 1 より大きい値も使用可能です: この場合、現在のテキスト及び線に
       使用している灰色で塗りつぶします。 通常これは黒ですが、出力デバイスが変更する機構を持っているかも知れませ
       ん。 引数を取らない場合、 fillval 変数の値が使用されます。 初期値では 0.5 です。 invisible 属性はオブジェ
       クトの塗りつぶしには影響しません。 塗りつぶされたオブジェクトに関連づけられたテキストは、  塗りつぶし後に
       追加されます。 このため、塗りつぶしによってテキストが隠されることは有りません。

       変数  arrowhead が非 0 でありかつ TeX モードが有効もしくは -x オプションが与えられている場合には、 矢印の
       頭を実線の三角形で描画します。 初期値では arrowhead は 1 です。

       pic の troff 出力はデバイス独立です。 それゆえ -T オプションは冗長です。 全ての数値はインチとして扱われま
       す; 数値は troff マシン単位としては解釈されません。

       オブジェクトは  aligned 属性を取りえます。 これは後処理が grops で実行される場合のみ機能します。 オブジェ
       クトに関連づけられたテキストで aligned 属性を持つものは全て オブジェクトの中央において回転されます。 それ
       ゆえ、オブジェクトの始点から終点への方向にあわせられます。 この属性は始点と終点が同じオブジェクトに関して
       は効果が有りません。

       nth と言う表現が許されている場所では `expr'th という表現も許されます。 'th は単一のトークンであることに注
       意して下さい: 'th の間には空白を入れてはなりません。 使用例は以下です。

              for i = 1 to 4 do {
                 line from `i'th box.nw to `i+1'th box.se
              }

変換

       スタンドアロンのピクチャを  pic  ファイルから得るには、  pic コードを .PS.PE のリクエストで囲みます。
       roff 設定コマンドをファイルの先頭に追加しても良いですが、 roff テキストは追加しません。

       ページ情報をなにも加えずに、このファイルを groff に喰わせることが必要です。 どの .PS.PE  のリクエスト
       が実際に呼ばれたのかを確認してください。 例えば、mm マクロパッケージはページ番号を追加しますが、 これは非
       常に迷惑です。 当面、標準の groff を、どのマクロパッケージも働かないようにして呼び出します。 または、独自
       のリクエストを定義します。 例えば、なにもしないようにするには次のようにします:

              .de PS
              ..
              .de PE
              ..

       groff  自身は、他のグラフィックスファイル書式への直接変換はできません。 しかし、 groff オプション -Tps の
       使用により、ピクチャを最初に PostScript® 書式へ変換すれば、  多くの可能性があります。  この  ps  ファイル
       は、BoundingBox   情報が無いので、   それ自身は非常に使用し易いというものではないので、  他の変換プログラ
       ム、通常は  ps2otherpstoother  といった名前のものに喰わせます。   さらに、PostScript   インタプリタ
       ghostscript (gs) は、 次のオプションで呼び出し可能な組み込みのグラフィックス変換デバイスを持ちます:

              gs -sDEVICE=<devname>

       使用可能なデバイス一覧を得るには、次のように呼び出します:
              gs --help

       Encapsulated  PostScript ファイル書式 EPS がより重要になっており、 また変換が過去のようには簡単ではないの
       で、正しい仕事を行う ps2eps という名前の変換ツールの存在を知っていると良いでしょう。 これは、  gs  にパッ
       ケージされているツール ps2epsi よりも良いものです。

       ビットマップグラフィックス書式用には、  pstopnm を使用します。結果の (中間出力の) PNM ファイルは、 netpbm
       パッケージを使用することにより、 実質的に任意のグラフィックス書式に変換可能です。

関連ファイル

       /usr/share/tmac/pic.tmac   PSPE マクロの定義の例です。

関連項目

       troff(1), groff_out(5), tex(1), gs(1), ps2eps(1), pstopnm(1), ps2epsi(1), pnm(5)

       Tpic: Pic for TeX
       Brian W. Kernighan, PIC — A Graphics Language for Typesetting (User  Manual).   AT&T  Bell  Laboratories,
       Computing  Science  Technical  Report No. 116 <URL:http://cm.bell-labs.com/cm/cs/cstr/116.ps.gz> (revised
       May, 1991).

       ps2eps は CTAN ミラーで入手可能であり、例えば次のところから入手可能です:
       <ftp://ftp.dante.de/tex-archive/support/ps2eps/>

       W. Richard Stevens - Turning PIC Into HTML
       <http://www.kohala.com/start/troff/pic2html.html>

       W. Richard Stevens - Examples of picMacros
       <http://www.kohala.com/start/troff/pic.examples.ps>

バグ

       groff にとって不正な文字 (例えば ASCII code 0 や 8 進で 013〜037、 0200〜0237) は TeX  モードであっても拒
       否されます。

       fillval  の解釈は  10th edition Unix と互換性がありません。 10th edition Unix は 0 を黒、1 を白と解釈しま
       す。

       PostScript® は、Adobe Systems Incorporation の登録商標です。