次: , 前: Text and Binary, 上: MS-DOS


C.5 印刷とMS-DOS

lpr-buffer(see Hardcopy)や ps-print-buffer(see Postscript)のような印刷コマンドは、 UNIX流のプログラムlprがない場合には、 プリンタポートに直接出力を送ればMS-DOSやMS-Windowsでも動作します。 このふるまいは、UNIX上のlprでの印刷 (see Hardcopy、see Postscript Variables) を制御する変数と同じ変数で制御されますが、 MS-DOSやMS-Windows上でのこれらの変数のデフォルト値は、 UNIX上での値と同じではありません。

DOS流の通常の印刷のように、ローカルのプリンタを使いたい場合には、 Lisp変数lpr-command""(デフォルト値)を設定し、 printer-nameにはプリンタポートの名前を設定します。 たとえば、ローカルのプリンタポートならば(デフォルト値の)"PRN""LPT2"、シリアルプリンタならば"COM1"です。 printer-nameにはファイル名も設定できます。 その場合には、『印刷』結果は、そのファイルに追加書きされます。 printer-name"NUL"を設定すると、 印刷結果は(システムの空デバイスに送られて)黙って捨てられます。

MS-Windowsでは、Windowsのネットワークソフトウェアをインストールしてあれば、 printer-nameに、他のマシンとの共用プリンタのUNC共用名 (たとえば"//joes_pc/hp4si")を設定すれば、 そのプリンタを利用することもできます。 (スラッシュでもバックスラッシュでもかまいません。) 共用プリンタの名前を調べるには、 DOSコマンドプロンプトで`net view'を実行してサーバー一覧を取得してから、 `net view server-name'を実行して サーバーが共有するプリンタ(とディレクトリ)の名前を調べます。

printer-nameにファイル名を設定するときには、 絶対ファイル名を使うのが最良です。 Emacsは、カレントバッファのデフォルトディレクトリに応じて 作業ディレクトリを変更します。 printer-nameのファイル名が相対的であると、 印刷を行ったバッファのディレクトリごとに、 そのような名前のファイルができてしまいます。

コマンドprint-bufferprint-regionは、 各印刷ページに見出しを付けるために、 prプログラムを呼び出したり、 lprプログラムに対して特別なフラグを使います。 MS-DOSやMS-Windowsには、通常、これらのコマンドはありませんから、 デフォルトでは、変数lpr-headers-switchesは、 ページ見出しを付ける要求を無視するように設定してあります。 したがって、print-bufferprint-regionは、 それぞれ、lpr-bufferlpr-regionと同じ出力になります。 (たとえばGNU Textutilsなどの)適当なprプログラムがあるならば、 lpr-headers-switchesnilを設定します。 すると、Emacsはページ見出しを付けるためにprを呼び出し、 printer-nameの指定に従って出力結果を印刷します。

lprと同じ動作をするlprがある場合には、 変数lpr-command"lpr"と設定できます。 すると、他のシステムと同様に、Emacsはlprを使って印刷します。 (プログラム名がlprでない場合には、 lpr-commandにはプログラムを探す場所を設定する。) lpr-command""以外の場合には、 変数lpr-switchesには標準的な意味があります。 変数printer-nameの値が文字列である場合には、 UNIXの場合と同様に、lprのオプション-Pの値として使われます。

同様の一連の変数、ps-lpr-commandps-lpr-switchesps-printer-name(see Postscript Variables)は、 PostScriptファイルの印刷方法を定義します。 これらの変数は、上に述べた非PostScript印刷用の対応する変数と 同じように使われます。 つまり、ps-printer-nameの値は、 非PostScript印刷でのprinter-nameの使い方と同様に、 PostScript出力の送り先の装置(やファイル)の名前として使われます。 (つまり、別々の2つのポートに2台のプリンタを接続してあり、 その一方がPostScriptプリンタの場合、異なる2組の変数群を使える。)

変数ps-lpr-commandのデフォルト値は""であり、 PostScript出力をps-printer-nameで指定するプリンタポートへ 送ることを意味します。 しかし、ps-lpr-commandには、PostScriptファイルを受理する プログラムの名前を設定してもかまいません。 つまり、非PostScriptプリンタがある場合、 この変数に(Ghostscriptなどの)PostScriptインタープリタプログラムの 名前を設定できます。 インタープリタプログラムに渡す必要があるオプションは、 ps-lpr-switchesを用いて指定します。 (ps-printer-nameの値が文字列の場合、その値は、 オプション-Pの値として、オプション列に付加される。 これは、lprを使う場合にだけ有用であろう。 というのは、インタープリタを使う場合、典型的には、 ps-printer-nameには文字列以外を設定して無視させる。)

たとえば、ポート`LPT2'に接続したEpsonプリンタに印刷するために Ghostscriptを使うには、つぎの内容を個人のファイル_emacsに入れます。

     
     (setq ps-printer-name t)  ; Ghostscriptは -P を理解しない
     (setq ps-lpr-command "c:/gs/gs386")
     (setq ps-lpr-switches '("-q" "-dNOPAUSE"
     			"-sDEVICE=epson"
     			"-r240x72"
     			"-sOutputFile=LPT2"
     			"-Ic:/gs"))

(この例では、 ディレクトリ"c:/gs"にGhostscriptをインストールしてあると仮定。)

MS-DOSとMS-Windowsでは、後方互換のために、 dos-printer(やdos-ps-printer)の値を設定してあると、 printer-name(やps-printer-name)の値を上書きします。