POSIXスタイルのlpr
プログラムが利用できない場合、MS-DOSとMS-Windowsでは、lpr-buffer
(ハードコピーの印刷を参照してください)やps-print-buffer
(PostScriptのハードコピーを参照してください)のような印刷コマンドは、プリンターポートの1つに出力を送ります。同じEmacs変数がすべてのシステムでの印刷を制御しますが、MS-DOSとMS-Windowsでは、それらの変数が異なるデフォルト値をもつ場合があります。
MS
WindowsのEmacsは、(関数default-printer-name
を使用して)デフォルトプリンターの自動検出を試みます。しかし、これはある稀なケースでは失敗することがあり、Emacsから別のプリンターを使用したいと思うときがあるかもしれません。このセクションの残りの部分では、Emacsに使用するプリンターを指示する方法を説明します。
ローカルプリンターを使用したい場合、Lisp変数lpr-command
に""
(これはWindowsではデフォルトです)をセットして、printer-name
にプリンターポート、たとえば通常のローカルプリンターポート"PRN"
、または"LPT2"
、またはシリアルプリンターにたいする"COM1"
などをセットします。printer-name
にファイル名をセットすることもできます。この場合、“印刷”された出力は、そのファイルに追加されます。printer-name
を"NUL"
にセットした場合、印刷された出力は破棄されます(システムのnullデバイスに送られます)。
printer-name
にそのプリンターのUNC共有名 — たとえば"//joes_pc/hp4si"
のような —
をセットすることにより、他のマシンで共有されているプリンターを使用することもできます(ここではスラッシュを使用するか、バックスラッシュを使用するかは問題ではありません)。共有プリンターの名前を探すには、サーバーのリストを取得するために、コマンドプロンプトでコマンド‘net
view’を実行して、‘net view
server-name’でそのサーバーで共有されているプリンター(とディレクトリー)の名前を確認します。かわりにデスクトップの‘Network
Neighborhood’アイコンをクリックして、ネットワークを通じてプリンターを共有しているマシンを確認することもできます。
プリンターが‘net
view’で出力されない場合、またはprinter-name
にUNC共有名をセットしても、そのプリンターからハードコピーが出力されない場合、‘net
use’コマンドを使用して、"LPT2"
のようなローカルプリンターポートを、ネットワークプリンターに接続できます。たとえばnet
use LPT2:
\\joes_pc\hp4si32により、WindowsにLPT2
ポートをキャプチャーさせて、印刷物をマシンjoes_pc
に接続されているプリンターにリダイレクトします。このコマンド後は、printer-name
に"LPT2"
をセットすることにより、そのネットワークプリンターでハードコピーが印刷されます。
あるWindowsネットワークソフトウェアーでは、"LPT2"
のような特定のプリンターポートをキャプチャーして、‘net
use’のかわりにControl Panel->Printers
を通じてネットワークプリンターにリダイレクトするよう、Windowsに指示できます。
printer-name
にファイル名をセットする場合、絶対ファイル名を使用するのが最良です。Emacsはカレントバッファーのデフォルトディレクトリーに合わせて作業ディレクトリーを変更するので、printer-name
のファイル名が相対ファイル名の場合、結果として印刷が行なわれたバッファーのディレクトリーごとに、複数のファイルができてしまいます。
変数printer-name
の値が正しいのに、印刷してもそのプリンターからハードコピーが印刷されない場合、そのプリンターがプレーンテキストの印刷をサポートしない可能性があります(安価なプリンターのいくつかでは、この機能が省略されています)。そのような場合、以下で説明するPostScriptプリントコマンドを試してみてください。
コマンドprint-buffer
およびprint-region
は、印刷された各ページにヘッダーを生成するために、pr
プログラムを呼び出すか、lpr
プログラムの特別なスイッチを使用します。通常MS-DOSとMS-Windowsにはこれらのプログラムがないので、デフォルトでは印刷ページのヘッダーの印刷リクエストは単に無視されるように、lpr-headers-switches
がセットされています。したがってprint-buffer
とprint-region
は、lpr-buffer
およびlpr-region
と同じ出力を生成します。適切なpr
プログラム(たとえばGNU
Coreutilsのもの)がある場合は、lpr-headers-switches
にnil
をセットします。するとEmacsはページヘッダーを生成するためにpr
を呼び出し、その結果をprinter-name
で指定されたプリンターで印刷します。
最後に、もし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
(PostScriptハードコピーにたいする変数を参照してください)は、PostScriptファイルがどのように印刷されるかを定義します。これらの変数は、上記で説明した非PostScript印刷にたいする変数と同じ方法で使用されます。したがって非PostScript印刷にたいしてprinter-name
が使用される方法と同様に、ps-printer-name
の値はPostScript出力が送られるデバイス(またはファイル)の名前として使用されます(2つの異なるポートに接続された2つのプリンターがあり、それらの1つだけが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
に文字列以外の何かをセットすれば、無視させることができます)。
たとえばシステムのデフォルトプリンターで、Ghostscriptを使用して印刷するには、以下を.emacsに記述します:
(setq ps-printer-name t) (setq ps-lpr-command "D:/gs6.01/bin/gswin32c.exe") (setq ps-lpr-switches '("-q" "-dNOPAUSE" "-dBATCH" "-sDEVICE=mswinpr2" "-sPAPERSIZE=a4"))
(GhostscriptがディレクトリーD:/gs6.01にインストールされていると仮定します。)
printer-name
の値は、スラッシュとバックスラッシュの両方でセットできますが、‘net
use’コマンドはUNC共有名がWindowsスタイルのバックスラッシュでタイプされるのを要求することに注意してください。