print.txt For Vim バージョン 9.1. Last change: 2024 May 11
VIMリファレンスマニュアル by Bram Moolenaar
印刷 printing
1. はじめに print-intro
2. 印刷オプション print-options
3. PostScript 印刷 postscript-printing
4. PostScript 印字エンコーディング postscript-print-encoding
5. PostScript CJK 印刷 postscript-cjk-printing
6. PostScript 印刷トラブルシューティングpostscript-print-trouble
7. PostScript ユーティリティ postscript-print-util
8. 改ページ文字 printing-formfeed
{+printer 機能付きでコンパイルした場合のみ利用可能}
==============================================================================
1. はじめに print-intro
MS-Windows では、インストールされているプリンタを使ってテキストを印刷すること
ができます。他のシステムでは PostScript ファイルが生成されます。そのファイルは
直接 PostScript プリンタに送ることができます。非PostScript プリンタを使うには
ghostscript のようなプログラムが必要です。
Note: :hardcopy による印刷が機能しない場合は、:TOhtml で HTML に変換し、そ
れをブラウザーで印刷する方法もあります。
:ha :hardcopy E237 E238 E324
:[range]ha[rdcopy][!] [arguments]
範囲 [range] の行 (省略時はファイル全体) をプリンタへ
出力します。
MS-Windows ではプリンタの選択やページサイズの設定など
をするためのダイアログが表示されます。ダイアログを省略
するには [!] を付けてください。その場合、'printdevice'
に設定したプリンタが使われます。未設定の場合はシステム
標準のプリンタが使われます。
MS-Windows 以外のシステムでは、PostScript が一時ファイ
ルに書き込まれ、それを実際に印刷するために 'printexpr'
が実行されます。そのとき、[arguments] は v:cmdarg と
して 'printexpr' の中で使うことができます。[arguments]
は無視することもできます。用紙サイズや両面印刷などの指
定を 'printoptions' に設定できます。
Note: PDFが必要な場合は、PostScriptをPDFに変換できる
"ps2pdf" 等のツールがあります。
:[range]ha[rdcopy][!] >{filename}
上記と同じですが、PostScript を {filename} に保存しま
す。
"%" のような文字は展開されます cmdline-special。
注意: すでにファイルが存在する場合は、警告なしに上書き
されます。
{+postscript が有効な場合のみ利用できます}
MS-Windows では、プリンタドライバの "ファイルに保存"
の機能を使ってください。
印刷している間、印刷中のページ番号や進行率などの印刷状況が表示されます。印刷を
中止するには中断キーを押してください (CTRL-C、MS-Windows では CTRL-Break)。
プリンタの出力は 'printfont' と 'printoptions' の設定で制御できます。ページ
ヘッダーの書式は 'printheader' に設定します。
ファイルの印刷は常に余白の設定に影響を受けます。カレントウィンドウの 'wrap' や
'linebreak' の設定は影響しません。行の折り返しをしないようにするには
'printoptions' の設定で "wrap" をオフにしてください。
印刷には現在の強調表示の色が使われます。次のように処理されます:
1) 通常テキストの背景色は常に白色で出力されます (つまり白紙)。
2) 通常テキストと同じ前景色の文字や、白色の文字は、それが視認できるようにする
ために、黒色で出力されます。
3) 'background' が "dark" の場合、文字色が明るすぎて、白紙に印刷するとはっきり
視認できなくなるため、文字色は暗い色に調整されます。
==============================================================================
2. 印刷オプション print-options
印刷の動作を変更するためのオプションについて説明します。設定についての大まかな
説明は options.txt を参照してください。
pdev-option
'printdevice' 'pdev' 文字列 (既定では空)
グローバル
プリンタの名前を設定します。:hardcopy が ! 付きで実行され、プリンタ選択ダイ
アログが省略されたときに使われます。Win32 では、標準印刷ダイアログで表示される
プリンタの名前を正確に指定してください。
このオプションが空のときに ":hardcopy!" が実行されると、システム標準のプリンタ
が使われます。
penc-option E620
'printencoding' 'penc' 文字列 (既定では空。あるいは次のとおり:
MS-Windows: cp1252,
Macintosh: mac-roman,
VMS: dec-mcs,
HPUX: hp-roman8,
EBCDIC: ebcdic-uk)
グローバル
印刷に使う文字エンコーディングを設定します。'runtimepath' の "print" ディレク
トリにある、このオプションに対応した印刷文字エンコーディングファイルが印刷に使
われます。
このオプションには encoding-names に列挙されているエンコーディングを設定でき
ます。エンコーディング名は Vim が規定している名前に変換されます。詳しくは
'encoding' を参照してください。Vim が認識できないエンコーディング名は、すべて
小文字に変換され、アンダースコアは '-' に置換されます。
'printencoding' が空、もしくは印刷文字エンコーディングファイルが見つからなかっ
た場合は、'encoding' に対応した印刷文字エンコーディングファイルを探します
(8-bit エンコーディングが設定されている場合のみ)。それでも印刷文字エンコーディ
ングファイルが見つからなかった場合は、"latin1" の印刷文字エンコーディングファ
イルが使われます。
'encoding' にマルチバイトエンコーディングが設定されている場合、印刷のときに、
'encoding' から印刷エンコーディングに文字が変換されます ('printencoding' が空
のときは latin1 に変換されます)。印刷エンコーディングが latin1 以外のときは、
+iconv が有効になっている必要があります。エンコーディングの変換が利用できな
いときは、印刷は失敗します。変換できない文字は、逆さクエスチョンマークに置換さ
れます。
Mac、VMS、HPUX、EBCDIC環境の標準エンコーディングのための、印刷文字エンコーディ
ングファイルが用意されています。それは初期設定として使われます。MS-Windows で
は、コードページ 1252 の印刷文字エンコーディングが標準で使われます。
pexpr-option
'printexpr' 'pexpr' 文字列 (既定は下記参照)
グローバル
:hardcopy で PostScript を印刷するためのスクリプトを設定します。
印刷する PostScript ファイルは v:fname_in に設定されます。
":hardcopy" コマンドの引数は v:cmdarg に設定されます。
印刷をした後で、スクリプトから PostScript ファイルを削除してください。
エラーが起きたときは、スクリプトは 0 以外の値を返す必要があります。
エラーがないときは、0 か 空文字列を返してください。
MS-Windows と VMS 以外の環境の初期設定では、単純に "lpr" を使ってファイルを印
刷します: >
MS-Windows での初期設定は、現在指定されている印刷デバイスにファイルをコピーし
ます: >
VMS での初期設定は、標準の印刷デバイスか、指定されている印刷デバイスにファイル
を送ります: >
このオプションを設定するときは、関数を使うと、スペースをエスケープしなくてもい
いので簡単です。例: >
オプションに関数呼び出しのみが設定されている場合は、より効率的です、
expr-option-function を参照。
ファイルを読み込む前に制御を返す印刷プログラムもあるので注意してください。ファ
イルをすぐに削除してしまうと、印刷できないかもしれません。ほとんどの場合、その
ようなプログラムには、印刷した後でファイルを削除するオプションが用意されていま
す。
E365
スクリプトを実行できなかったり、スクリプトが 0 以外の値を返したときは、エラー
メッセージが表示されます。その場合は、Vim が PostScript ファイルを削除します。
MS-Windows 以外のシステムの初期設定では、"v:shell_error" を足す、というトリッ
クを使っています。"v:shell_error" には system() の呼び出しでエラーが起きたとき
に 0 以外の値が入ります。
式が s: か <SID> で始まる場合は、スクリプトID(local-function) に置き換えら
れます。例: >
その結果スクリプトローカルな要素を使用できます。
セキュリティ上の理由から、このオプションを modeline または sandbox 内で設
定することはできません。
pfn-option E613
'printfont' 'pfn' 文字列 (既定では "courier")
グローバル
:hardcopy コマンドの出力で使われるフォント名を設定します。このオプションは
'guifont' と同じ書式で指定します。ただし、フォントは1つだけ指定可能です。
"guifont=*" と同じ特別な指定方法は使えません。
Win32 GUI では、'guifont' と同じように、フォントの属性を追加指定できます。
他のシステムでは、"h11" という指定のみ受け付けます。"11" の所にはフォントのサ
イズをポイントで指定します。省略時のフォントサイズは 10 です。
pheader-option
'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N")
グローバル
:hardcopy の出力で使われるヘッダーの書式を設定します。このオプションは
'statusline' と同じ書式で指定します。+statusline が無効な場合には、このオプ
ションは機能しません。その場合は、初期設定の、ページ番号を表示するだけのシンプ
ルなヘッダーが使われます。
pmbcs-option
'printmbcharset' 'pmbcs' 文字列 (既定では "")
グローバル
:hardcopy で漢字 (CJK文字) を出力するための文字セットを設定します。
現在 Vim は、以下で定義されている文字セットを認識します。
設定値 説明 ~
Chinese GB_2312-80
(Simplified) GBT_12345-90
MAC Apple Mac Simplified Chinese
GBT-90_MAC GB/T 12345-90 Apple Mac Simplified
Chinese
GBK GBK (GB 13000.1-93)
ISO10646 ISO 10646-1:1993
Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2
(Traditional) BIG5
ETEN Big5 with ETen extensions
ISO10646 ISO 10646-1:1993
Japanese JIS_C_1978
JIS_X_1983
JIS_X_1990
MSWINDOWS Win3.1/95J (JIS X 1997 + NEC +
IBM extensions)
KANJITALK6 Apple Mac KanjiTalk V6.x
KANJITALK7 Apple Mac KanjiTalk V7.x
Korean KS_X_1992
MAC Apple Macintosh Korean
MSWINDOWS KS X 1992 with MS extensions
ISO10646 ISO 10646-1:1993
上記の文字セットと 'printencoding' は、決められた組合せのみ利用可能です。可能
な組合せは以下のとおり:
euc-cn gbk ucs-2 utf-8 ~
Chinese GB_2312-80 x
(Simplified) GBT_12345-90 x
MAC x
GBT-90_MAC x
GBK x
ISO10646 x x
euc-tw big5 ucs-2 utf-8 ~
Chinese CNS_1993 x
(Traditional) BIG5 x
ETEN x
ISO10646 x x
euc-jp sjis ucs-2 utf-8 ~
Japanese JIS_C_1978 x x
JIS_X_1983 x x
JIS_X_1990 x x x
MSWINDOWS x
KANJITALK6 x
KANJITALK7 x
euc-kr cp949 ucs-2 utf-8 ~
Korean KS_X_1992 x
MAC x
MSWINDOWS x
ISO10646 x x
日本語のテキストを印刷するには、次のように、適切なエンコーディングと文字セット
を設定してください: >
'printmbcharset' が上記のどれでもないときは、独自のマルチバイト文字セットであ
ると判断されます。'printencoding' と互換性があるかどうかはチェックされません。
Vim は、'runtimepath' の "print" ディレクトリから、指定された文字セット用の
ファイルを探します。
pmbfn-option
'printmbfont' 'pmbfn' 文字列 (既定では "")
グローバル
:hardcopy で漢字 (CJK) を出力するために使われるフォントのリストを設定しま
す。リストはコンマで区切ります。フォント名には、そのフォントがどのスタイルで使
われるかを指示する文字を前置します:
r:{font-name} 普通文字のフォント
b:{font-name} 太字 (bold) のフォント
i:{font-name} 斜体文字 (italic) のフォント
o:{font-name} 太字斜体文字 (bold-italic) のフォント
CJK 印刷をするには r: 指定のフォントを必ず設定してください。その他のフォントの
指定は省略できます。省略した場合は次のとおりに処理されます:
b: がないときは、r: を使います。
i: がないときは、r: を使います。
o: がないときは、b: を使います。
CJK フォントが ASCII 文字を持っていない場合があります。また、CJK の ASCII 文字
のうちいくつかの文字が、通常の ASCII 文字とは違う場合があります。ASCII コード
の範囲の文字をどのように印刷するかを指定することができます。
c:yes ASCII 文字を Courier フォントで出力します。
c:no (初期値)
a:yes ASCIIコードの範囲を ASCII 文字セットで出力します。
a:no (初期値)
次の例では、2つのマルチバイトフォントを指定しています。1つは普通文字と斜体文
字、もう1つは太字と太字斜体文字の印刷に使われます。そして、ASCII コードの範囲
の文字は、国内標準文字セットを使って、Courier で印刷されます: >
popt-option
'printoptions' 'popt' 文字列 (既定では "")
グローバル
:hardcopy の出力を制御するためのオプションのリストを設定します。リストはコン
マで区切ります:
left:{spec} 左余白 (標準設定: 10pc)
right:{spec} 右余白 (標準設定: 5pc)
top:{spec} 上余白 (標準設定: 5pc)
bottom:{spec} 下余白 (標準設定: 5pc)
{spec} には数値を指定します。数値には単位を付けてくだ
さい。インチなら "in"、ポイントなら "pt" (1 ポイントは
1/72 インチ)、ミリメートルなら "mm"、用紙サイズに対す
る割合なら "pc"、を指定します。
(例示のための) 例:
left:2in,top:30pt,right:16mm,bottom:3pc
上記以外の単位を指定した場合は標準設定が使われます。エ
ラーは表示されません。
header:{nr} ヘッダーの印刷に使う行数を指定します。
実際には最初の行だけに文字が印刷されます。つまり、{nr}
に 2 を指定した場合は空行が印刷されます。ヘッダーの書
式は 'printheader' で指定します。
header:0 ヘッダーを印刷しません。
header:2 (標準設定) ヘッダーの印刷に2行使います。
syntax:n 構文強調を使わない。大きなファイルでも高速に印刷できま
す。
syntax:y 構文強調を使う。
syntax:a (標準設定) カラー印刷またはグレースケール印刷が可能なプリンタなら
構文強調を使います。
number:y 行番号を印刷する。
number:n (標準設定) 行番号を印刷しない。
wrap:y (標準設定) 長い行を折り返す。
wrap:n 長い行を切り詰める。
duplex:off 片面印刷。
duplex:long (標準設定)両面印刷 (可能なら)。長い辺で閉じます。
duplex:short 両面印刷 (可能なら)。短い辺で閉じます。
collate:y (標準設定) ページを順番にそろえる: 1 2 3, 1 2 3, 1 2 3
collate:n そのまま: 1 1 1, 2 2 2, 3 3 3
jobsplit:n (標準設定) すべてを1回で印刷する。
jobsplit:y 印刷ジョブを部ごとに分ける。N-up 印刷をする場合に便利
です。
portrait:y (標準設定) 縦置きの用紙に印刷する。
portrait:n 横置きの用紙に印刷する。
a4 letter
paper:A4 (標準設定) 用紙サイズ: A4
paper:{name} 次の中から用紙サイズを選んでください:
{name} センチメートル単位 インチ単位 ~
10x14 25.4 x 35.57 10 x 14
A3 29.7 x 42 11.69 x 16.54
A4 21 x 29.7 8.27 x 11.69
A5 14.8 x 21 5.83 x 8.27
B4 25 x 35.3 10.12 x 14.33
B5 17.6 x 25 7.17 x 10.12
executive 18.42 x 26.67 7.25 x 10.5
folio 21 x 33 8.27 x 13
ledger 43.13 x 27.96 17 x 11
legal 21.59 x 35.57 8.5 x 14
letter 21.59 x 27.96 8.5 x 11
quarto 21.59 x 27.5 8.5 x 10.83
statement 13.97 x 21.59 5.5 x 8.5
tabloid 27.96 x 43.13 11 x 17
formfeed:n (標準設定) 改ページ文字 (0x0c) を普通の文字として処理します。
formfeed:y 改ページ文字を処理し、現在の行を新しいページに印刷しま
す。
設定を省略した場合は、それぞれの設定項目で (標準設定) となっているものが使われ
ます。設定ダイアログでプリンタの選択やオプションを設定したときなど、指定した設
定が使われないこともあります。
例: >
==============================================================================
3. PostScript 印刷 postscript-printing
E455 E456 E457 E624
十分なディスクスペースがあれば、問題なく PostScript ファイルを出力できます。ラ
ンタイムファイルを正しくインストールする必要もあります (ヘルプを見れるなら正し
くインストールされているでしょう)。
現在、PostScript 印刷には次の制限があります:
- 'printfont' - フォント名は無視され、フォントサイズだけが使われます。(Courier
ファミリが常に使われます。これはすべての PostScript プリンタで利用可能なはず
です)。
- 'printoptions' - PostScript は両面印刷の設定を使って出力されますが、プリンタ
によっては機能しない場合があります。両面印刷をサポートしていないプリンタの場
合、両面印刷の設定は静かに無視されます。何も印刷しないプリンタもあります。
- 8-bit サポート。8-bit エンコーディングの印刷はサポートされていますが、いくつ
かの文字が印刷されない場合もあります。文字が印刷されるかどうかは、プリンタの
フォントにその文字があるかどうかに依存しています。印刷できない文字は逆さのク
エスチョンマークに置き換えられます。その文字もない場合にはスペースに置き換え
られます。新しい Courier フォントファミリをインストールすれば、エンコーディ
ングのすべての文字を印刷できるようになるかもしれません。
- マルチバイトサポート。現在、Vim はマルチバイト文字を 'printencoding' で指定
された 8-bit エンコーディングに変換しようとします ('printencoding' が空のと
きは latin1 が使われます)。変換できない文字は未知の文字として印刷されます。
マルチバイトから 8-bit エンコーディングへの変換を実行できないときは、印刷は
失敗します。
==============================================================================
4. 独自 8-bit 印字エンコーディング postscript-print-encoding
E618 E619
独自の 8-bit 印字エンコーディングを使って 8-bit テキストを印刷することができま
す。それには PostScript フォントエンコーディングベクタを自分で定義する必要があ
ります。フォントエンコーディングベクタの定義方法はこのヘルプの範囲外なので説明
しません。詳細は Addison-Wesley から出版されている PostScript リファレンスマ
ニュアル第三版を参照してください。http://www.adobe.com/ には PDF ファイルが用
意されています。次に、独自の印字エンコーディングを使用する方法を説明します。
{訳注: PostScriptリファレンスマニュアル第3版 ASCII電子出版シリーズ
Adobe Systems (著), 桑沢 清志 (翻訳)
ISBN: 4756138225}
i. エンコーディングベクタのためのユニークな名前を決めてください。Vim が使う
標準エンコーディング名 (encoding-names参照) は使えません。他の人が使わ
ないような名前を付けてください。
ii. $VIMRUNTIME/print/latin1.ps をあなたの 'runtimepath' の print ディレクト
リにコピーし、ファイル名を自分のエンコーディング名に変更してください。
iii. 名前を変更した latin1.ps を編集し、ファイル内に表れる latin1 という文字を
すべて、あなたのエンコーディング名に置換してください (%%Title: で始まる行
も忘れずに)。そして、グリフ名の配列を変更し、新しいエンコーディングベクタ
を定義してください。配列の長さは 256 でなければいけません。それ以外では印
刷できません。
iv. 'printencoding' に新しい印字エンコーディングを設定し印刷します。あなたの
独自印字エンコーディングを使って印刷されます。
リソースファイルの最初の3行の内容や順番が変更されているとエラーが表示されま
す。%%Title: と %%Version: で始まる行は変更しても構いません。
PostScript を知っている人への技術的な説明。Vim は印刷に使うエンコーディングと
同じ名前のファイルを探します。そのファイルは /Vim-name という名前の新しい
PostScript エンコーディングを定義しています。name の部分は Vim が使用する印字
エンコーディングの名前です。
==============================================================================
5. PostScript CJK 印刷 postscript-cjk-printing
E673 E674 E675
中国語、日本語、韓国語のファイルを印刷することができます。CJK ファイルを正しく
印刷するために、いくつかのオプションを設定する必要があります。
日中韓の国々には標準文字セットとエンコーディングがたくさんあります。印刷するに
は、その両方を正しく設定する必要があります。CJK フォントには一般的に、斜体グリ
フという概念がありません。また、強調して印刷するために、字間や文字の太さが違う
フォントを使います。適切なフォントで印刷するためには適切な設定が必要です。
エンコーディングと文字セットはオプションの 'printencoding' と 'printmbcharset'
で指定します。'printencoding' を設定しなかった場合は、'encoding' が使われます。
'printencoding' を設定した場合は、印刷する文字が、指定したエンコーディングに変
換されます。エンコーディングには、ファイルを印刷するための文字セットと互換性の
あるエンコーディングを設定してください。あるいは、互換性のない文字が印刷されな
いようなエンコーディングを設定してください。
CJK 印刷に使うフォントは 'printmbfont' に設定します。このオプションでは、構文
強調の、普通の文字、斜体文字、太字、斜体太字、に対して別々のフォントを指定でき
ます。
CJK フォントは Vim に付属していません。韓国語、日本語、繁体中国語、の無料で使
えるフォントが次の場所にあります:
http://examples.oreilly.com/cjkvinfo/adobe/samples/
https://resources.oreilly.com/examples/9781565922242/
フォントについての説明は readme ファイルを読んでください:
https://resources.oreilly.com/examples/9781565922242/-/blob/master/00README
フォントのインストール方法については、プリンタの説明書を読んでください。
CJK フォントにはたくさんのグリフが含まれていますが、国内標準文字セットだけを
持っているフォントも珍しくありません。ASCII 文字を含んでいないこともよくありま
す。もし、半角英数が印刷されないときは、'printmbfont' を設定し、Courierフォン
トを使って、半角 ASCII 文字を印刷するようにしてください。他にも印刷されない文
字がある場合は、別のフォントを探す必要があるでしょう。
ASCII 文字についてもう1つ。国内標準文字セットによっては、ASCII 文字の範囲に
ASCII 文字とは別の文字を定義している場合があります。そのため、国内標準文字セッ
トを使って ASCII テキストを印刷すると、予期しない文字が印刷されるかもしれませ
ん。ASCII コードの範囲が ASCII 文字として印刷されるようにするには、
'printmbfont' を設定してください。
独自のマルチバイト文字セットを定義することができまが、それは簡単ではありませ
ん。その方法についてはこのヘルプの範囲を越えるので説明しません。CMap
(character map) ファイルについての詳細は、'Adobe CMap and CIDFont Files
Specification, Version 1.0' を参照してください。http://www.adobe.com に PDF
ファイルがあります。
==============================================================================
6. PostScript 印刷トラブルシューティング postscript-print-trouble
E621
ほとんどの場合、印刷されない、ということだけが、PostScript印刷で問題が起きてい
る合図です。運が良ければ、どの PostScript 命令がエラーを起こしたのかが印刷され
るかもしれません。
印刷が失敗する原因として考えられるものをいくつか上げます:
- prolog リソースファイルのバージョンが間違っている。prolog リソースファイルに
は、印刷に必要な PostScript が含まれています。Vim のバージョンに対応したリ
ソースファイルが必要です。ランタイムファイルが正しくインストールされているこ
とを確認してください。また、古いバージョンの prolog ファイルが 'runtimepath'
ディレクトリに残っている場合は除外してください。
- 用紙サイズ。対応していない用紙サイズを指定すると、印刷を中断する PostScript
プリンタがあります。標準設定では、A4 用紙が使われます。プリンタが対応してい
る用紙サイズを確認して 'printoptions' を設定してください。用紙サイズの名前が
分からない場合は、使用する紙の寸法を計り、'printoptions' の説明にある用紙サ
イズと見比べて、一番近いものを選択してください。
Note: 実際の用紙サイズは、一覧されているものとわずかに違うことがあります。
十分に近い用紙サイズがない場合は、下記で説明している PSUtils の psresize を
試してください。
- 両面印刷 (duplex)。両面印刷に対応していないほとんどの PostScript プリンタは、
両面印刷の命令を無視しますが、印刷を中断してしまう PostScript プリンタもあり
ます。その場合は、両面印刷の設定をオフにして印刷してください。
Note: PSUtils を使って手動で両面印刷することもできます。下記参照。
- 丁合 (collate、用紙の整列)。複数部印刷する場合、丁合をサポートしていないほと
んどの PostScript プリンタは、丁合の命令を無視しますが、そうでないプリンタも
あります。その場合は、丁合の設定をオフにして印刷してください。
- 構文強調。構文強調が有効になっているとき、使われている色が黒1色だけの場合で
も、生成された PostScript ファイルがモノクロプリンタで印刷されないように、印
刷を中断する印刷管理プログラムがあります。その場合は、構文強調をオフにして印
刷してください。
安全な printoptions の設定は次のようなものです: >
"A4" の部分を適切な用紙サイズに変更してください。
==============================================================================
7. PostScript ユーティリティ postscript-print-util
7.1 Ghostscript
Ghostscript は PostScript と PDF のインタープリターです。PostScript と PDF ファ
イルを表示したり、非PostScript プリンタで印刷することができます。PostScript か
ら PDF ファイルを生成することもできます。
Ghostscript はさまざまな環境で動作します。
次の3つのバージョンが利用可能です:
- AFPL Ghostscript (かつての Aladdin Ghostscript)。非商用利用ではフリー。
次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/
- GNU Ghostscript。GNU General Public License に従って利用可能。
次の場所から入手できます:
https://www.gnu.org/software/ghostscript
- 商用利用可能な販売品。
Ghostscript についての詳細は次の場所を見てください:
http://www.ghostscript.com/
標準の配布物には、たくさんの非PostScript プリンタのサポートが含まれています。
あなたのプリンタがサポートされていない場合は、Ghostscript のサイトを確認してみ
てください。
7.2 Ghostscript プレビューア
Ghostscript の操作方法はとても原始的なので、たくさんの GUI フロントエンドが作
成されました。PostScript ファイルを選択したり、いろんな大きさで表示したり、印
刷したりすることが簡単にできます。詳細は付属の説明書を参照してください。
X11
- Ghostview。次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/gv/
https://www.gnu.org/software/gv/
(最新版ではないかもしれませんが) 次の場所からも入手できます:
http://www.cs.wisc.edu/~ghost/gv/
OpenVMS
- 現在、メインコードでサポートされているようです (試していません)。
以下を参照ください (リンク切れのようです):
http://wwwthep.physik.uni-mainz.de/~plass/gv/
MS-Windows
- GSview。次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/gsview/
Linux
- GSview。Windows で人気のあるプレビューアの Linux 版。
次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/gsview/
7.3 PSUtils
PSUtils は、PostScript ドキュメントを処理するための便利なプログラム集です。た
くさんのプラットフォーム向けのバイナリが配布されています。ソースも公開されてい
ます。PSUtils は次の場所にあります:
http://knackered.org/angus/psutils
次のものは特に便利です:
- psnup. PS ファイルを変換し、N-up 印刷する。
- psselect. 印刷する範囲や順番を選択する。
- psresize. 用紙サイズを変更する。
- psbook. 製本のためにレイアウトを調整する。
これらのプログラムの出力は、他のプログラムに入力にできるので、複雑な印刷物も作
成できます。
☆N-UP 印刷
{訳注: 複数のページを1ページにまとめて印刷。}
Vim が生成した PostScript ファイルを psnum で処理し、n-up 版の PostScript を作
成できます。2-up 印刷をするには、まず、次のように PostScript を作成します: >
そして、シェルのコマンドラインで次のコマンドを実行します: >
Note: psnum が生成したファイルを Ghostscript プレビューアで表示すると警告が表
示されることがありますが、無視して問題ないでしょう。
そして、環境に合わせた方法で、final.ps を PostScript プリンタで印刷します。(印
刷後、必要なら2つの PostScript ファイルを自分で削除してください)。'printexpr'
を設定し、印刷前にこの特別な処理をするように設定できます。
☆両面印刷の代用品
PSUtils の psselect を使って、両面印刷を安価に実現できます。このユーティリティ
の引数に -e と -o を指定して、偶数ページと奇数ページを別々のファイルに出力でき
ます。
まず、:hardcopy コマンドで PostScript ファイルを生成します。そして、そのファ
イルを偶数ページと奇数ページに分けます: >
次に、環境に合わせた方法で odd.ps を印刷します。そして、できあがった印刷物を
ひっくり返し、再びプリンタの給紙トレーにセットし、even.ps を印刷します。これ
で、偶数ページが奇数ページの裏面に印刷されます。
次のことを気に留めておいてください:
1. 最初のページの位置。奇数ページを印刷したときに、最初のページが印刷物の上面
にある場合、偶数ページの印刷順を逆にする必要があります。これは、psselect
に-rを指定すればできます。これで2ページ目が1ページ目の裏に印刷されます。
Note: 元の PostScript ファイルのページ数が奇数の場合は、偶数ページを逆順に
印刷するよりも、奇数ページを逆順に印刷したほうがいいでしょう。
2. 紙のひっくり返し方。奇数ページを印刷した紙をひっくり返すとき、水平方向 (長
い辺に沿って)、または垂直方向 (短い辺に沿って) に裏返すだけでなく、180 度回
転させる必要があるかもしれません。これはプリンタによって違います。デスク
トップ用インクジェットプリンタであれば、紙の通り道が見えないスモールオフィ
ス用レーザープリンタとは違い、確認しやすいでしょう。
==============================================================================
8. 改ページ文字 printing-formfeed
標準設定では、Vim は formfeed 制御文字 (改ページ文字) の特別な処理を一切しませ
ん。'printoptions' の formfeed を設定すると、Vim は改ページ文字を認識するよう
になります。改ページ文字を含む行は新しいページの1行目に印刷されます。改ページ
文字を使って原始的な印刷制御ができますが、いくつか気をつけることがあります。
たとえ行頭の文字が改ページ文字であっても、その行は常に通常の位置から (設定に
よっては行番号をともなって) 印刷されます。そのため、そのような行が (たまたま)
ページの1行目だった場合、空白のページが印刷されます。
行番号は、改ページ文字を含む行の印刷が開始したところに印刷されるので、その行の
(改ページ文字以降の) 残りの部分が新しいページに印刷されるときには、行番号は印
刷されません ('printoptions' の wrap がオンのときに、長い行が折り返して印刷さ
れる場合も同じです)。
改ページ文字が行の最後の文字だった場合、次の行は、新しいページの2行目に印刷さ
れます。これは、Vim が改ページ文字を処理した後で改行を処理し、カーソルを下へ移
動して、次の行を印刷するからです。
上記の理由により、改ページ文字を使用する場合には、行番号印刷をオフにして、改
ページ文字を行末に置かないことが望ましいです。その場合でも、予期しない空白ペー
ジが印刷されないように、行数を変更して改ページ文字の位置を調整する必要があるか
もしれません。
{訳注: 例:
1: aaa<0c>bbb (<0c> == <C-L> == formfeed)
2: <0c>ccc<0c>
3: ddd
は次のように印刷されます。
1: aaa
- new page -
bbb
2:
- new page -
ccc
- new page -
3: ddd}
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl:
VIMリファレンスマニュアル by Bram Moolenaar
印刷 printing
1. はじめに print-intro
2. 印刷オプション print-options
3. PostScript 印刷 postscript-printing
4. PostScript 印字エンコーディング postscript-print-encoding
5. PostScript CJK 印刷 postscript-cjk-printing
6. PostScript 印刷トラブルシューティングpostscript-print-trouble
7. PostScript ユーティリティ postscript-print-util
8. 改ページ文字 printing-formfeed
{+printer 機能付きでコンパイルした場合のみ利用可能}
==============================================================================
1. はじめに print-intro
MS-Windows では、インストールされているプリンタを使ってテキストを印刷すること
ができます。他のシステムでは PostScript ファイルが生成されます。そのファイルは
直接 PostScript プリンタに送ることができます。非PostScript プリンタを使うには
ghostscript のようなプログラムが必要です。
Note: :hardcopy による印刷が機能しない場合は、:TOhtml で HTML に変換し、そ
れをブラウザーで印刷する方法もあります。
:ha :hardcopy E237 E238 E324
:[range]ha[rdcopy][!] [arguments]
範囲 [range] の行 (省略時はファイル全体) をプリンタへ
出力します。
MS-Windows ではプリンタの選択やページサイズの設定など
をするためのダイアログが表示されます。ダイアログを省略
するには [!] を付けてください。その場合、'printdevice'
に設定したプリンタが使われます。未設定の場合はシステム
標準のプリンタが使われます。
MS-Windows 以外のシステムでは、PostScript が一時ファイ
ルに書き込まれ、それを実際に印刷するために 'printexpr'
が実行されます。そのとき、[arguments] は v:cmdarg と
して 'printexpr' の中で使うことができます。[arguments]
は無視することもできます。用紙サイズや両面印刷などの指
定を 'printoptions' に設定できます。
Note: PDFが必要な場合は、PostScriptをPDFに変換できる
"ps2pdf" 等のツールがあります。
:[range]ha[rdcopy][!] >{filename}
上記と同じですが、PostScript を {filename} に保存しま
す。
"%" のような文字は展開されます cmdline-special。
注意: すでにファイルが存在する場合は、警告なしに上書き
されます。
{+postscript が有効な場合のみ利用できます}
MS-Windows では、プリンタドライバの "ファイルに保存"
の機能を使ってください。
印刷している間、印刷中のページ番号や進行率などの印刷状況が表示されます。印刷を
中止するには中断キーを押してください (CTRL-C、MS-Windows では CTRL-Break)。
プリンタの出力は 'printfont' と 'printoptions' の設定で制御できます。ページ
ヘッダーの書式は 'printheader' に設定します。
ファイルの印刷は常に余白の設定に影響を受けます。カレントウィンドウの 'wrap' や
'linebreak' の設定は影響しません。行の折り返しをしないようにするには
'printoptions' の設定で "wrap" をオフにしてください。
印刷には現在の強調表示の色が使われます。次のように処理されます:
1) 通常テキストの背景色は常に白色で出力されます (つまり白紙)。
2) 通常テキストと同じ前景色の文字や、白色の文字は、それが視認できるようにする
ために、黒色で出力されます。
3) 'background' が "dark" の場合、文字色が明るすぎて、白紙に印刷するとはっきり
視認できなくなるため、文字色は暗い色に調整されます。
==============================================================================
2. 印刷オプション print-options
印刷の動作を変更するためのオプションについて説明します。設定についての大まかな
説明は options.txt を参照してください。
pdev-option
'printdevice' 'pdev' 文字列 (既定では空)
グローバル
プリンタの名前を設定します。:hardcopy が ! 付きで実行され、プリンタ選択ダイ
アログが省略されたときに使われます。Win32 では、標準印刷ダイアログで表示される
プリンタの名前を正確に指定してください。
このオプションが空のときに ":hardcopy!" が実行されると、システム標準のプリンタ
が使われます。
penc-option E620
'printencoding' 'penc' 文字列 (既定では空。あるいは次のとおり:
MS-Windows: cp1252,
Macintosh: mac-roman,
VMS: dec-mcs,
HPUX: hp-roman8,
EBCDIC: ebcdic-uk)
グローバル
印刷に使う文字エンコーディングを設定します。'runtimepath' の "print" ディレク
トリにある、このオプションに対応した印刷文字エンコーディングファイルが印刷に使
われます。
このオプションには encoding-names に列挙されているエンコーディングを設定でき
ます。エンコーディング名は Vim が規定している名前に変換されます。詳しくは
'encoding' を参照してください。Vim が認識できないエンコーディング名は、すべて
小文字に変換され、アンダースコアは '-' に置換されます。
'printencoding' が空、もしくは印刷文字エンコーディングファイルが見つからなかっ
た場合は、'encoding' に対応した印刷文字エンコーディングファイルを探します
(8-bit エンコーディングが設定されている場合のみ)。それでも印刷文字エンコーディ
ングファイルが見つからなかった場合は、"latin1" の印刷文字エンコーディングファ
イルが使われます。
'encoding' にマルチバイトエンコーディングが設定されている場合、印刷のときに、
'encoding' から印刷エンコーディングに文字が変換されます ('printencoding' が空
のときは latin1 に変換されます)。印刷エンコーディングが latin1 以外のときは、
+iconv が有効になっている必要があります。エンコーディングの変換が利用できな
いときは、印刷は失敗します。変換できない文字は、逆さクエスチョンマークに置換さ
れます。
Mac、VMS、HPUX、EBCDIC環境の標準エンコーディングのための、印刷文字エンコーディ
ングファイルが用意されています。それは初期設定として使われます。MS-Windows で
は、コードページ 1252 の印刷文字エンコーディングが標準で使われます。
pexpr-option
'printexpr' 'pexpr' 文字列 (既定は下記参照)
グローバル
:hardcopy で PostScript を印刷するためのスクリプトを設定します。
印刷する PostScript ファイルは v:fname_in に設定されます。
":hardcopy" コマンドの引数は v:cmdarg に設定されます。
印刷をした後で、スクリプトから PostScript ファイルを削除してください。
エラーが起きたときは、スクリプトは 0 以外の値を返す必要があります。
エラーがないときは、0 か 空文字列を返してください。
MS-Windows と VMS 以外の環境の初期設定では、単純に "lpr" を使ってファイルを印
刷します: >
system('lpr' .. (&printdevice == '' ? '' : ' -P' .. &printdevice)
.. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error
.. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error
MS-Windows での初期設定は、現在指定されている印刷デバイスにファイルをコピーし
ます: >
system('copy' .. ' ' .. v:fname_in .. (&printdevice == ''
? ' LPT1:' : (' \"' .. &printdevice .. '\"')))
.. delete(v:fname_in)
? ' LPT1:' : (' \"' .. &printdevice .. '\"')))
.. delete(v:fname_in)
VMS での初期設定は、標準の印刷デバイスか、指定されている印刷デバイスにファイル
を送ります: >
system('print' .. (&printdevice == '' ? '' : ' /queue=' ..
&printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in)
&printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in)
このオプションを設定するときは、関数を使うと、スペースをエスケープしなくてもい
いので簡単です。例: >
:set printexpr=PrintFile()
:function PrintFile()
: call system("ghostview " .. v:fname_in)
: call delete(v:fname_in)
: return v:shell_error
:endfunc
:function PrintFile()
: call system("ghostview " .. v:fname_in)
: call delete(v:fname_in)
: return v:shell_error
:endfunc
オプションに関数呼び出しのみが設定されている場合は、より効率的です、
expr-option-function を参照。
ファイルを読み込む前に制御を返す印刷プログラムもあるので注意してください。ファ
イルをすぐに削除してしまうと、印刷できないかもしれません。ほとんどの場合、その
ようなプログラムには、印刷した後でファイルを削除するオプションが用意されていま
す。
E365
スクリプトを実行できなかったり、スクリプトが 0 以外の値を返したときは、エラー
メッセージが表示されます。その場合は、Vim が PostScript ファイルを削除します。
MS-Windows 以外のシステムの初期設定では、"v:shell_error" を足す、というトリッ
クを使っています。"v:shell_error" には system() の呼び出しでエラーが起きたとき
に 0 以外の値が入ります。
式が s: か <SID> で始まる場合は、スクリプトID(local-function) に置き換えら
れます。例: >
set printexpr=s:MyPrintFile()
set printexpr=<SID>SomePrintFile()
そうでない場合、式はオプションが設定されたスクリプトのコンテキストで評価され、set printexpr=<SID>SomePrintFile()
その結果スクリプトローカルな要素を使用できます。
セキュリティ上の理由から、このオプションを modeline または sandbox 内で設
定することはできません。
pfn-option E613
'printfont' 'pfn' 文字列 (既定では "courier")
グローバル
:hardcopy コマンドの出力で使われるフォント名を設定します。このオプションは
'guifont' と同じ書式で指定します。ただし、フォントは1つだけ指定可能です。
"guifont=*" と同じ特別な指定方法は使えません。
Win32 GUI では、'guifont' と同じように、フォントの属性を追加指定できます。
他のシステムでは、"h11" という指定のみ受け付けます。"11" の所にはフォントのサ
イズをポイントで指定します。省略時のフォントサイズは 10 です。
pheader-option
'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N")
グローバル
:hardcopy の出力で使われるヘッダーの書式を設定します。このオプションは
'statusline' と同じ書式で指定します。+statusline が無効な場合には、このオプ
ションは機能しません。その場合は、初期設定の、ページ番号を表示するだけのシンプ
ルなヘッダーが使われます。
pmbcs-option
'printmbcharset' 'pmbcs' 文字列 (既定では "")
グローバル
:hardcopy で漢字 (CJK文字) を出力するための文字セットを設定します。
現在 Vim は、以下で定義されている文字セットを認識します。
設定値 説明 ~
Chinese GB_2312-80
(Simplified) GBT_12345-90
MAC Apple Mac Simplified Chinese
GBT-90_MAC GB/T 12345-90 Apple Mac Simplified
Chinese
GBK GBK (GB 13000.1-93)
ISO10646 ISO 10646-1:1993
Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2
(Traditional) BIG5
ETEN Big5 with ETen extensions
ISO10646 ISO 10646-1:1993
Japanese JIS_C_1978
JIS_X_1983
JIS_X_1990
MSWINDOWS Win3.1/95J (JIS X 1997 + NEC +
IBM extensions)
KANJITALK6 Apple Mac KanjiTalk V6.x
KANJITALK7 Apple Mac KanjiTalk V7.x
Korean KS_X_1992
MAC Apple Macintosh Korean
MSWINDOWS KS X 1992 with MS extensions
ISO10646 ISO 10646-1:1993
上記の文字セットと 'printencoding' は、決められた組合せのみ利用可能です。可能
な組合せは以下のとおり:
euc-cn gbk ucs-2 utf-8 ~
Chinese GB_2312-80 x
(Simplified) GBT_12345-90 x
MAC x
GBT-90_MAC x
GBK x
ISO10646 x x
euc-tw big5 ucs-2 utf-8 ~
Chinese CNS_1993 x
(Traditional) BIG5 x
ETEN x
ISO10646 x x
euc-jp sjis ucs-2 utf-8 ~
Japanese JIS_C_1978 x x
JIS_X_1983 x x
JIS_X_1990 x x x
MSWINDOWS x
KANJITALK6 x
KANJITALK7 x
euc-kr cp949 ucs-2 utf-8 ~
Korean KS_X_1992 x
MAC x
MSWINDOWS x
ISO10646 x x
日本語のテキストを印刷するには、次のように、適切なエンコーディングと文字セット
を設定してください: >
:set printencoding=euc-jp
:set printmbcharset=JIS_X_1983
:set printmbcharset=JIS_X_1983
'printmbcharset' が上記のどれでもないときは、独自のマルチバイト文字セットであ
ると判断されます。'printencoding' と互換性があるかどうかはチェックされません。
Vim は、'runtimepath' の "print" ディレクトリから、指定された文字セット用の
ファイルを探します。
pmbfn-option
'printmbfont' 'pmbfn' 文字列 (既定では "")
グローバル
:hardcopy で漢字 (CJK) を出力するために使われるフォントのリストを設定しま
す。リストはコンマで区切ります。フォント名には、そのフォントがどのスタイルで使
われるかを指示する文字を前置します:
r:{font-name} 普通文字のフォント
b:{font-name} 太字 (bold) のフォント
i:{font-name} 斜体文字 (italic) のフォント
o:{font-name} 太字斜体文字 (bold-italic) のフォント
CJK 印刷をするには r: 指定のフォントを必ず設定してください。その他のフォントの
指定は省略できます。省略した場合は次のとおりに処理されます:
b: がないときは、r: を使います。
i: がないときは、r: を使います。
o: がないときは、b: を使います。
CJK フォントが ASCII 文字を持っていない場合があります。また、CJK の ASCII 文字
のうちいくつかの文字が、通常の ASCII 文字とは違う場合があります。ASCII コード
の範囲の文字をどのように印刷するかを指定することができます。
c:yes ASCII 文字を Courier フォントで出力します。
c:no (初期値)
a:yes ASCIIコードの範囲を ASCII 文字セットで出力します。
a:no (初期値)
次の例では、2つのマルチバイトフォントを指定しています。1つは普通文字と斜体文
字、もう1つは太字と太字斜体文字の印刷に使われます。そして、ASCII コードの範囲
の文字は、国内標準文字セットを使って、Courier で印刷されます: >
:set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes
<popt-option
'printoptions' 'popt' 文字列 (既定では "")
グローバル
:hardcopy の出力を制御するためのオプションのリストを設定します。リストはコン
マで区切ります:
left:{spec} 左余白 (標準設定: 10pc)
right:{spec} 右余白 (標準設定: 5pc)
top:{spec} 上余白 (標準設定: 5pc)
bottom:{spec} 下余白 (標準設定: 5pc)
{spec} には数値を指定します。数値には単位を付けてくだ
さい。インチなら "in"、ポイントなら "pt" (1 ポイントは
1/72 インチ)、ミリメートルなら "mm"、用紙サイズに対す
る割合なら "pc"、を指定します。
(例示のための) 例:
left:2in,top:30pt,right:16mm,bottom:3pc
上記以外の単位を指定した場合は標準設定が使われます。エ
ラーは表示されません。
header:{nr} ヘッダーの印刷に使う行数を指定します。
実際には最初の行だけに文字が印刷されます。つまり、{nr}
に 2 を指定した場合は空行が印刷されます。ヘッダーの書
式は 'printheader' で指定します。
header:0 ヘッダーを印刷しません。
header:2 (標準設定) ヘッダーの印刷に2行使います。
syntax:n 構文強調を使わない。大きなファイルでも高速に印刷できま
す。
syntax:y 構文強調を使う。
syntax:a (標準設定) カラー印刷またはグレースケール印刷が可能なプリンタなら
構文強調を使います。
number:y 行番号を印刷する。
number:n (標準設定) 行番号を印刷しない。
wrap:y (標準設定) 長い行を折り返す。
wrap:n 長い行を切り詰める。
duplex:off 片面印刷。
duplex:long (標準設定)両面印刷 (可能なら)。長い辺で閉じます。
duplex:short 両面印刷 (可能なら)。短い辺で閉じます。
collate:y (標準設定) ページを順番にそろえる: 1 2 3, 1 2 3, 1 2 3
collate:n そのまま: 1 1 1, 2 2 2, 3 3 3
jobsplit:n (標準設定) すべてを1回で印刷する。
jobsplit:y 印刷ジョブを部ごとに分ける。N-up 印刷をする場合に便利
です。
portrait:y (標準設定) 縦置きの用紙に印刷する。
portrait:n 横置きの用紙に印刷する。
a4 letter
paper:A4 (標準設定) 用紙サイズ: A4
paper:{name} 次の中から用紙サイズを選んでください:
{name} センチメートル単位 インチ単位 ~
10x14 25.4 x 35.57 10 x 14
A3 29.7 x 42 11.69 x 16.54
A4 21 x 29.7 8.27 x 11.69
A5 14.8 x 21 5.83 x 8.27
B4 25 x 35.3 10.12 x 14.33
B5 17.6 x 25 7.17 x 10.12
executive 18.42 x 26.67 7.25 x 10.5
folio 21 x 33 8.27 x 13
ledger 43.13 x 27.96 17 x 11
legal 21.59 x 35.57 8.5 x 14
letter 21.59 x 27.96 8.5 x 11
quarto 21.59 x 27.5 8.5 x 10.83
statement 13.97 x 21.59 5.5 x 8.5
tabloid 27.96 x 43.13 11 x 17
formfeed:n (標準設定) 改ページ文字 (0x0c) を普通の文字として処理します。
formfeed:y 改ページ文字を処理し、現在の行を新しいページに印刷しま
す。
設定を省略した場合は、それぞれの設定項目で (標準設定) となっているものが使われ
ます。設定ダイアログでプリンタの選択やオプションを設定したときなど、指定した設
定が使われないこともあります。
例: >
:set printoptions=paper:letter,duplex:off
==============================================================================
3. PostScript 印刷 postscript-printing
E455 E456 E457 E624
十分なディスクスペースがあれば、問題なく PostScript ファイルを出力できます。ラ
ンタイムファイルを正しくインストールする必要もあります (ヘルプを見れるなら正し
くインストールされているでしょう)。
現在、PostScript 印刷には次の制限があります:
- 'printfont' - フォント名は無視され、フォントサイズだけが使われます。(Courier
ファミリが常に使われます。これはすべての PostScript プリンタで利用可能なはず
です)。
- 'printoptions' - PostScript は両面印刷の設定を使って出力されますが、プリンタ
によっては機能しない場合があります。両面印刷をサポートしていないプリンタの場
合、両面印刷の設定は静かに無視されます。何も印刷しないプリンタもあります。
- 8-bit サポート。8-bit エンコーディングの印刷はサポートされていますが、いくつ
かの文字が印刷されない場合もあります。文字が印刷されるかどうかは、プリンタの
フォントにその文字があるかどうかに依存しています。印刷できない文字は逆さのク
エスチョンマークに置き換えられます。その文字もない場合にはスペースに置き換え
られます。新しい Courier フォントファミリをインストールすれば、エンコーディ
ングのすべての文字を印刷できるようになるかもしれません。
- マルチバイトサポート。現在、Vim はマルチバイト文字を 'printencoding' で指定
された 8-bit エンコーディングに変換しようとします ('printencoding' が空のと
きは latin1 が使われます)。変換できない文字は未知の文字として印刷されます。
マルチバイトから 8-bit エンコーディングへの変換を実行できないときは、印刷は
失敗します。
==============================================================================
4. 独自 8-bit 印字エンコーディング postscript-print-encoding
E618 E619
独自の 8-bit 印字エンコーディングを使って 8-bit テキストを印刷することができま
す。それには PostScript フォントエンコーディングベクタを自分で定義する必要があ
ります。フォントエンコーディングベクタの定義方法はこのヘルプの範囲外なので説明
しません。詳細は Addison-Wesley から出版されている PostScript リファレンスマ
ニュアル第三版を参照してください。http://www.adobe.com/ には PDF ファイルが用
意されています。次に、独自の印字エンコーディングを使用する方法を説明します。
{訳注: PostScriptリファレンスマニュアル第3版 ASCII電子出版シリーズ
Adobe Systems (著), 桑沢 清志 (翻訳)
ISBN: 4756138225}
i. エンコーディングベクタのためのユニークな名前を決めてください。Vim が使う
標準エンコーディング名 (encoding-names参照) は使えません。他の人が使わ
ないような名前を付けてください。
ii. $VIMRUNTIME/print/latin1.ps をあなたの 'runtimepath' の print ディレクト
リにコピーし、ファイル名を自分のエンコーディング名に変更してください。
iii. 名前を変更した latin1.ps を編集し、ファイル内に表れる latin1 という文字を
すべて、あなたのエンコーディング名に置換してください (%%Title: で始まる行
も忘れずに)。そして、グリフ名の配列を変更し、新しいエンコーディングベクタ
を定義してください。配列の長さは 256 でなければいけません。それ以外では印
刷できません。
iv. 'printencoding' に新しい印字エンコーディングを設定し印刷します。あなたの
独自印字エンコーディングを使って印刷されます。
リソースファイルの最初の3行の内容や順番が変更されているとエラーが表示されま
す。%%Title: と %%Version: で始まる行は変更しても構いません。
PostScript を知っている人への技術的な説明。Vim は印刷に使うエンコーディングと
同じ名前のファイルを探します。そのファイルは /Vim-name という名前の新しい
PostScript エンコーディングを定義しています。name の部分は Vim が使用する印字
エンコーディングの名前です。
==============================================================================
5. PostScript CJK 印刷 postscript-cjk-printing
E673 E674 E675
中国語、日本語、韓国語のファイルを印刷することができます。CJK ファイルを正しく
印刷するために、いくつかのオプションを設定する必要があります。
日中韓の国々には標準文字セットとエンコーディングがたくさんあります。印刷するに
は、その両方を正しく設定する必要があります。CJK フォントには一般的に、斜体グリ
フという概念がありません。また、強調して印刷するために、字間や文字の太さが違う
フォントを使います。適切なフォントで印刷するためには適切な設定が必要です。
エンコーディングと文字セットはオプションの 'printencoding' と 'printmbcharset'
で指定します。'printencoding' を設定しなかった場合は、'encoding' が使われます。
'printencoding' を設定した場合は、印刷する文字が、指定したエンコーディングに変
換されます。エンコーディングには、ファイルを印刷するための文字セットと互換性の
あるエンコーディングを設定してください。あるいは、互換性のない文字が印刷されな
いようなエンコーディングを設定してください。
CJK 印刷に使うフォントは 'printmbfont' に設定します。このオプションでは、構文
強調の、普通の文字、斜体文字、太字、斜体太字、に対して別々のフォントを指定でき
ます。
CJK フォントは Vim に付属していません。韓国語、日本語、繁体中国語、の無料で使
えるフォントが次の場所にあります:
http://examples.oreilly.com/cjkvinfo/adobe/samples/
https://resources.oreilly.com/examples/9781565922242/
フォントについての説明は readme ファイルを読んでください:
https://resources.oreilly.com/examples/9781565922242/-/blob/master/00README
フォントのインストール方法については、プリンタの説明書を読んでください。
CJK フォントにはたくさんのグリフが含まれていますが、国内標準文字セットだけを
持っているフォントも珍しくありません。ASCII 文字を含んでいないこともよくありま
す。もし、半角英数が印刷されないときは、'printmbfont' を設定し、Courierフォン
トを使って、半角 ASCII 文字を印刷するようにしてください。他にも印刷されない文
字がある場合は、別のフォントを探す必要があるでしょう。
ASCII 文字についてもう1つ。国内標準文字セットによっては、ASCII 文字の範囲に
ASCII 文字とは別の文字を定義している場合があります。そのため、国内標準文字セッ
トを使って ASCII テキストを印刷すると、予期しない文字が印刷されるかもしれませ
ん。ASCII コードの範囲が ASCII 文字として印刷されるようにするには、
'printmbfont' を設定してください。
独自のマルチバイト文字セットを定義することができまが、それは簡単ではありませ
ん。その方法についてはこのヘルプの範囲を越えるので説明しません。CMap
(character map) ファイルについての詳細は、'Adobe CMap and CIDFont Files
Specification, Version 1.0' を参照してください。http://www.adobe.com に PDF
ファイルがあります。
==============================================================================
6. PostScript 印刷トラブルシューティング postscript-print-trouble
E621
ほとんどの場合、印刷されない、ということだけが、PostScript印刷で問題が起きてい
る合図です。運が良ければ、どの PostScript 命令がエラーを起こしたのかが印刷され
るかもしれません。
印刷が失敗する原因として考えられるものをいくつか上げます:
- prolog リソースファイルのバージョンが間違っている。prolog リソースファイルに
は、印刷に必要な PostScript が含まれています。Vim のバージョンに対応したリ
ソースファイルが必要です。ランタイムファイルが正しくインストールされているこ
とを確認してください。また、古いバージョンの prolog ファイルが 'runtimepath'
ディレクトリに残っている場合は除外してください。
- 用紙サイズ。対応していない用紙サイズを指定すると、印刷を中断する PostScript
プリンタがあります。標準設定では、A4 用紙が使われます。プリンタが対応してい
る用紙サイズを確認して 'printoptions' を設定してください。用紙サイズの名前が
分からない場合は、使用する紙の寸法を計り、'printoptions' の説明にある用紙サ
イズと見比べて、一番近いものを選択してください。
Note: 実際の用紙サイズは、一覧されているものとわずかに違うことがあります。
十分に近い用紙サイズがない場合は、下記で説明している PSUtils の psresize を
試してください。
- 両面印刷 (duplex)。両面印刷に対応していないほとんどの PostScript プリンタは、
両面印刷の命令を無視しますが、印刷を中断してしまう PostScript プリンタもあり
ます。その場合は、両面印刷の設定をオフにして印刷してください。
Note: PSUtils を使って手動で両面印刷することもできます。下記参照。
- 丁合 (collate、用紙の整列)。複数部印刷する場合、丁合をサポートしていないほと
んどの PostScript プリンタは、丁合の命令を無視しますが、そうでないプリンタも
あります。その場合は、丁合の設定をオフにして印刷してください。
- 構文強調。構文強調が有効になっているとき、使われている色が黒1色だけの場合で
も、生成された PostScript ファイルがモノクロプリンタで印刷されないように、印
刷を中断する印刷管理プログラムがあります。その場合は、構文強調をオフにして印
刷してください。
安全な printoptions の設定は次のようなものです: >
:set printoptions=paper:A4,duplex:off,collate:n,syntax:n
"A4" の部分を適切な用紙サイズに変更してください。
==============================================================================
7. PostScript ユーティリティ postscript-print-util
7.1 Ghostscript
Ghostscript は PostScript と PDF のインタープリターです。PostScript と PDF ファ
イルを表示したり、非PostScript プリンタで印刷することができます。PostScript か
ら PDF ファイルを生成することもできます。
Ghostscript はさまざまな環境で動作します。
次の3つのバージョンが利用可能です:
- AFPL Ghostscript (かつての Aladdin Ghostscript)。非商用利用ではフリー。
次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/
- GNU Ghostscript。GNU General Public License に従って利用可能。
次の場所から入手できます:
https://www.gnu.org/software/ghostscript
- 商用利用可能な販売品。
Ghostscript についての詳細は次の場所を見てください:
http://www.ghostscript.com/
標準の配布物には、たくさんの非PostScript プリンタのサポートが含まれています。
あなたのプリンタがサポートされていない場合は、Ghostscript のサイトを確認してみ
てください。
7.2 Ghostscript プレビューア
Ghostscript の操作方法はとても原始的なので、たくさんの GUI フロントエンドが作
成されました。PostScript ファイルを選択したり、いろんな大きさで表示したり、印
刷したりすることが簡単にできます。詳細は付属の説明書を参照してください。
X11
- Ghostview。次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/gv/
https://www.gnu.org/software/gv/
(最新版ではないかもしれませんが) 次の場所からも入手できます:
http://www.cs.wisc.edu/~ghost/gv/
OpenVMS
- 現在、メインコードでサポートされているようです (試していません)。
以下を参照ください (リンク切れのようです):
http://wwwthep.physik.uni-mainz.de/~plass/gv/
MS-Windows
- GSview。次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/gsview/
Linux
- GSview。Windows で人気のあるプレビューアの Linux 版。
次の場所から入手できます:
http://www.cs.wisc.edu/~ghost/gsview/
7.3 PSUtils
PSUtils は、PostScript ドキュメントを処理するための便利なプログラム集です。た
くさんのプラットフォーム向けのバイナリが配布されています。ソースも公開されてい
ます。PSUtils は次の場所にあります:
http://knackered.org/angus/psutils
次のものは特に便利です:
- psnup. PS ファイルを変換し、N-up 印刷する。
- psselect. 印刷する範囲や順番を選択する。
- psresize. 用紙サイズを変更する。
- psbook. 製本のためにレイアウトを調整する。
これらのプログラムの出力は、他のプログラムに入力にできるので、複雑な印刷物も作
成できます。
☆N-UP 印刷
{訳注: 複数のページを1ページにまとめて印刷。}
Vim が生成した PostScript ファイルを psnum で処理し、n-up 版の PostScript を作
成できます。2-up 印刷をするには、まず、次のように PostScript を作成します: >
:hardcopy > test.ps
そして、シェルのコマンドラインで次のコマンドを実行します: >
psnup -n 2 test.ps final.ps
Note: psnum が生成したファイルを Ghostscript プレビューアで表示すると警告が表
示されることがありますが、無視して問題ないでしょう。
そして、環境に合わせた方法で、final.ps を PostScript プリンタで印刷します。(印
刷後、必要なら2つの PostScript ファイルを自分で削除してください)。'printexpr'
を設定し、印刷前にこの特別な処理をするように設定できます。
☆両面印刷の代用品
PSUtils の psselect を使って、両面印刷を安価に実現できます。このユーティリティ
の引数に -e と -o を指定して、偶数ページと奇数ページを別々のファイルに出力でき
ます。
まず、:hardcopy コマンドで PostScript ファイルを生成します。そして、そのファ
イルを偶数ページと奇数ページに分けます: >
psselect -o test.ps odd.ps
psselect -e test.ps even.ps
psselect -e test.ps even.ps
次に、環境に合わせた方法で odd.ps を印刷します。そして、できあがった印刷物を
ひっくり返し、再びプリンタの給紙トレーにセットし、even.ps を印刷します。これ
で、偶数ページが奇数ページの裏面に印刷されます。
次のことを気に留めておいてください:
1. 最初のページの位置。奇数ページを印刷したときに、最初のページが印刷物の上面
にある場合、偶数ページの印刷順を逆にする必要があります。これは、psselect
に-rを指定すればできます。これで2ページ目が1ページ目の裏に印刷されます。
Note: 元の PostScript ファイルのページ数が奇数の場合は、偶数ページを逆順に
印刷するよりも、奇数ページを逆順に印刷したほうがいいでしょう。
2. 紙のひっくり返し方。奇数ページを印刷した紙をひっくり返すとき、水平方向 (長
い辺に沿って)、または垂直方向 (短い辺に沿って) に裏返すだけでなく、180 度回
転させる必要があるかもしれません。これはプリンタによって違います。デスク
トップ用インクジェットプリンタであれば、紙の通り道が見えないスモールオフィ
ス用レーザープリンタとは違い、確認しやすいでしょう。
==============================================================================
8. 改ページ文字 printing-formfeed
標準設定では、Vim は formfeed 制御文字 (改ページ文字) の特別な処理を一切しませ
ん。'printoptions' の formfeed を設定すると、Vim は改ページ文字を認識するよう
になります。改ページ文字を含む行は新しいページの1行目に印刷されます。改ページ
文字を使って原始的な印刷制御ができますが、いくつか気をつけることがあります。
たとえ行頭の文字が改ページ文字であっても、その行は常に通常の位置から (設定に
よっては行番号をともなって) 印刷されます。そのため、そのような行が (たまたま)
ページの1行目だった場合、空白のページが印刷されます。
行番号は、改ページ文字を含む行の印刷が開始したところに印刷されるので、その行の
(改ページ文字以降の) 残りの部分が新しいページに印刷されるときには、行番号は印
刷されません ('printoptions' の wrap がオンのときに、長い行が折り返して印刷さ
れる場合も同じです)。
改ページ文字が行の最後の文字だった場合、次の行は、新しいページの2行目に印刷さ
れます。これは、Vim が改ページ文字を処理した後で改行を処理し、カーソルを下へ移
動して、次の行を印刷するからです。
上記の理由により、改ページ文字を使用する場合には、行番号印刷をオフにして、改
ページ文字を行末に置かないことが望ましいです。その場合でも、予期しない空白ペー
ジが印刷されないように、行数を変更して改ページ文字の位置を調整する必要があるか
もしれません。
{訳注: 例:
1: aaa<0c>bbb (<0c> == <C-L> == formfeed)
2: <0c>ccc<0c>
3: ddd
は次のように印刷されます。
1: aaa
- new page -
bbb
2:
- new page -
ccc
- new page -
3: ddd}
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl: