次: 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
)の値を上書きします。