*dvips [#y40d302b] dvips は DVI ファイルを PS ファイルに変換するソフトウェアです. -[[Tom Rokicki and Radical Eye Software:http://www.radicaleye.com/]] --[[The Official Dvips Home Page:http://www.radicaleye.com/dvips.html]] -[[Dvips(k):http://www.tug.org/dvips/]] ---- #contents ---- **使い方 [#a0ed32c6] ***dvips の用紙サイズ指定 [#b1d8723b] 標準では A4 サイズになり,%%BoundingBox や %%PaperSize には正しい用紙サイズが出力され,PostScript の用紙設定コマンド a4 が出力されます。 この用紙設定コマンドが解釈不可能な場合には単に無視されます。 レターサイズにするには dvips に -t letter というオプションをつけて実行します。 私の [[新ドキュメントクラス>jsclasses]] でたとえば \documentclass[uplatex,papersize,a4paper]{jsarticle} のようにオプション [papersize] を与えれば,dviファイル中に papersize=用紙の幅,用紙の高さ という形式の special コマンドが挿入されます。 一般のドキュメントクラスでこのような special を出力するには,LaTeX ファイルのプリアンブルにたとえば \AtBeginDvi{\special{papersize=210mm,297mm}} のように書いておきます。 この papersize special の解釈は dvips の設定ファイル config.ps に依存します。 たとえば config.ps に次のように書いてあったとします。 @ a4 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%BeginPaperSize: a4 @+ /setpagedevice where @+ { pop << /PageSize [595 842] >> setpagedevice } @+ { /a4 where { pop a4 } if } @+ ifelse @+ %%EndPaperSize @ letter 8.5in 11in @+ ! %%DocumentPaperSizes: Letter @+ %%BeginPaperSize: Letter @+ /setpagedevice where @+ { pop << /PageSize [612 792] >> setpagedevice } @+ { /letter where { pop letter } if } @+ ifelse @+ %%EndPaperSize @ a4size 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%BeginPaperSize: a4 @+ /setpagedevice where @+ { pop << /PageSize [595 842] >> setpagedevice } @+ { /a4 where { pop a4 } if } @+ ifelse @+ %%EndPaperSize @ jisb4 257mm 364mm @+ ! %%DocumentPaperSizes: jisb4 @+ %%BeginPaperSize: jisb4 @+ /setpagedevice where @+ { pop << /PageSize [729 1032] >> setpagedevice } @+ { /jisb4 where { pop jisb4 } if } @+ ifelse @+ %%EndPaperSize % use -t unknown with a \special{papersize=...} for a nonstandard page size. @ unknown 0in 0in @+ statusdict /setpageparams known { hsize vsize 0 1 statusdict begin { @+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known @+ { hsize vsize 1 statusdict begin { setpage } stopped pop end } if } if ここで dvi ファイル内で papersize を与えた場合,それが210mm×297mmに±5bpの誤差で一致するなら a4 が選ばれます (1bp = 1/72 インチ)。 これは %%BoundingBox を210mm×297mmにし, %%DocumentPaperSizes: a4 というコメントを出力し,最後のところで %%BeginPaperSize: a4 /setpagedevice where { pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if } ifelse %%EndPaperSize を出力します。 従って Adobe Acrobat Distiller DC で PDF に変換する際には正しく A4 サイズになります。 また,257mm×364mmに±5bpの誤差で一致するなら jisb4 が選ばれますが,これは %%BoundingBox を257mm×364mmにし,頭の部分で %%DocumentPaperSizes: jisb4 という1行,最後のところで %%BeginPaperSize: jisb4 /setpagedevice where { pop << /PageSize [729 1032] >> setpagedevice } { /jisb4 where { pop jisb4 } if } ifelse %%EndPaperSize という6行を出力します。 従って PDF に変換した際に正しく JIS B4 サイズになります。 papersize が 5bp の誤差範囲内でどの項目にも一致しないなら,最後の unknown が選ばれ, statusdict /setpageparams known { hsize vsize 0 1 statusdict begin { setpageparams } stopped end } { true } ifelse { statusdict /setpage known { hsize vsize 1 statusdict begin { setpage } stopped pop end } if } if という3行が出力され,プリンタ依存になりますがページサイズが正しく設定されます。 また,dvips に -t a4 というオプションを与えれば,強制的に a4 という設定が選ばれ,PDF に変換した際に正しく A4 サイズになります。 ***しおりの文字化けを防ぐ [#v5d4fb65] LaTeX で作成した日本語文書を dvips を用いて PDF 化する際,しおりが文字化けしないようにするためには [[convbkmk>http://www.ctan.org/pkg/convbkmk]] を使います。 -http://www.t-lab.opal.ne.jp/tex/uptex.html -[[convbkmkコマンドの使い方 覚え書き:http://konoyonohana.blog.fc2.com/blog-entry-35.html]] なお,convbkmk は Ruby スクリプトですので,[[Ruby]] の処理系が必要です. **リンク集 [#fd89856f] ***ChangeLog [#o96c7d5c] -[[[texlive] Index of /trunk/Build/source/texk/dvipsk:http://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipsk/]] --[[log:http://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipsk/?view=log]] --[[ChangeLog:http://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipsk/ChangeLog?view=markup]]