次: MS-DOS and MULE, 前: Text and Binary, 上: 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-bufferやprint-regionは、
各印刷ページに見出しを付けるために、
prプログラムを呼び出したり、
lprプログラムに対して特別なフラグを使います。
MS-DOSやMS-Windowsには、通常、これらのコマンドはありませんから、
デフォルトでは、変数lpr-headers-switchesは、
ページ見出しを付ける要求を無視するように設定してあります。
したがって、print-bufferやprint-regionは、
それぞれ、lpr-bufferやlpr-regionと同じ出力になります。
(たとえばGNU Textutilsなどの)適当なprプログラムがあるならば、
lpr-headers-switchesにnilを設定します。
すると、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-command、ps-lpr-switches、
ps-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)の値を上書きします。