ホームTeX 関連 RPMS

dvipdfm で日本語 PDF を作る


もうこのページの内容は古くなりました。 ps2pdf/dvipdfmx で日本語 PDF を作る を御覧下さい。
dvipdfm を使った Unix 環境での PDF の作り方を簡単に紹介します。


以前は dvipdfm の color パッケージ関連のバグ取りパッチを紹介していましたが、 本家 dvipdfm-0.13.2c で採用になり役目を終えたので、 使い方のページに書き換えました。

ps2pdf vs dvipdfm

 Unix 環境で日本語の PDF を作ると言えば、ps2pdf が定番でしょうが、 いろいろ弱点があります。 ghostscript 5.10(VineLinux2.0), 5.50(VineLinux2.1/2.5) 由来の ps2pdf について言えば、次のようになるでしょうか。

 英語に限れば PDFTeX や dvipdfm というものがあるのですが、 このたび、九大の平田さんが dvipdfm の日本語化 (2002/4/1よりこちらでミラーさせていただいてます) をお作りになって、ずいぶんとよい PDF を作れるようになりました。 (現在は dvipdfmx で開発が続いています。) 特徴を対比させてみます。

 というわけで、

 などという PDF の制作には dvipdfm + 日本語パッチが 適しているということになるでしょう。 もちろん、元の文章を LaTeX で作るというのは大前提です。:)

 [2002/5/24 追記] ところで、dvipdf という、似て非なるツールが存在します。 これは ghostscript に含まれているもののようで、 内部から dvips と ps2pdf を続けて呼び出すだけのシェルスクリプトです。 このツールで PDF を作ると、ps2pdf を使ったことと全く同じになりますので、 ご注意下さい。


[2001/10/8] dvipdfm + dvipdfm-0.13.2c-jpatch-p1c.diff.gz(縦書き対応)のインストール

 dvipdfm の入手には、平田さんの dvipdfm の日本語化 をご覧いただくと良いのですが、 ここでは VineLinux など RedHat 系 RPM を公開します。 VineLinux 2.0/2.1 では、 kpathsea がうまく動いてくれませんので、 その場しのぎのパッチで対処しています。

 下のものは Vine2.0/2.1 用です (0.13.2b-3以前のものには、私のパッチにバグがありました)。

 Vine2.5 は VinePlus に contribute したものをお使い下さい。 もし高速ネットワークが使えるなら、 "/etc/apt/sources.list" の 14行目のコメントをやめて有効にし、 root で 'apt-get update; apt-get install dvipdfm' を実行するだけです。

 Kondara2.0/RedHat7.xJ 用は TeX 関連 RPM 置場 からどうぞ。 2001/7/26:小澤様から Kondara 2.0(FHS2.1) 対応の修正をいただきました。

 (VinePlus にもまったく同じものを contribute しています。 dvipdfm txfonts pxfonts をご覧ください。)

 RPM のインストールは、 バイナリパッケージを入手するか、 あるいはソースパッケージを入手して 'rpm --rebuild dvipdfm-*.src.rpm' としてバイナリパッケージを作ります。そして root になって 'rpm -Uhv dvipdfm-*.i386.rpm' とすれば完了です。


使用方法

 普通の LaTeX 文章なら次の通り簡単です。

% platex hogehoge.tex
% dvipdfm hogehoge.dvi

 しおりの入った文章を作るなら、 TeX ソースの \documentclass{...} のすぐ後に

\usepackage[dvipdfm]{color}
\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,%
bookmarkstype=toc]{hyperref}

 などと書いておいて、

% platex foo
% platex foo
% out2uni foo
% platex foo
% dvipdfm foo

 とコンパイルします。 (2001/7/7 以降の out2uni には EUC を指定するオプションが不要になりました。)

 サムネイルを埋めこんだ PDF を作るには、最後のところを

% dvipdft foo

 とします。ちなみに、このいくつかのコマンドは、 拡張子の .dvi までつけるとうまく動かなくなります。

 Vine2.0/2.1 では、しおりを作るのに必要な \usepackage[dvipdfm]{hyperref} 命令を使うためには、 新しい LaTeX マクロを入手する必要があるようです。 付属の sample.tex を処理するためには、CTAN の hyperref graphics の直下のファイルをカレントディレクトリに置いて 'latex hyperref.ins''latex graphics.ins' を実行しておけばよいようです。


TX/PX fonts との組み合わせ

 TX/PX fonts はデザイン上の理由で用いられることが多いですが、 PS/PDF 制作の観点からは、英文でも Adobe フォントを用いて、 フォントを埋めこまなくなり、ファイルサイズの節約に貢献できます。 (詳しくは、奥村先生の TX Fonts を 使おう を御覧下さい。)

 ただし、

 以上の RPM では dvipdfm 用ファイルが抜けているため、 ビットマップフォントを使ってしまいます。 TeX 関連 RPM 置場 の txfonts-3.1-8, pxfonts-1.0-8 以降や VinePlus の txfonts-3.1-0vl9, pxfonts-1.0-0vl9 以降をお使い下さい。

 また、Vine2.0/2.1 では一部のフォントの追加が必要なことがわかりました。 teTeX-texmf-1.0.2.tar.gz(31.6Mbyte) から "fonts/type1/urw/" 以下のファイルを取り出して、 "/usr/share/texmf/fonts/type1/urw/" の下に置き、 'mktexlsr' を実行してやります。 追加するフォントのサイズは 1Mbyte 程度です。

 [2002/7/12 追記] フォントファイルの追加後に実行するコマンド名を間違えていました。 札幌在住の岡田様に御指摘いただきました。どうもありがとうございます。


プレゼンテーションツール

 PDF をよく知れば、Acrobat Reader がプレゼンテーションツールとしても 役立ちそうであることがわかるでしょう。 Windows でも Unix でも、全画面表示ができて、 マウスのクリックで次の画面に進むようにも設定できます。 全画面表示をやめれば、サムネール表示もできます。 dvipdfm を使えば、複雑な数式はもちろん、画像の張り込み、色つけ、 ページ間にリンクを張った文章を、 LaTeX で作れるわけですから、人によってはかなり便利になるでしょう。 平田さんのページの PDF のサンプルを見れば、非常にインパクトがあります。 ページ切り替えの際の効果を PDF から指定できるのですね。 Acrobat Reader の設定でも変えることができます。

 そこで slides class を使ったサンプルソース を作ってみました。出来は良くないですが、 A5 用紙横置きで、文字の領域を拡大する設定が入っていますので、 ちょっとは参考になるかもしれません。

 slides class 以外に prosper という、 もっと派手なスライドを作れるクラスがありますが、 これは dvipdfm と相性が悪い(まったく変換できない)ようです。 私は今のところ Acrobat で我慢して変換しています。 渡部さんの How to use PROSPER には有用な情報があります。


[2001/ 7/ 1] dvipdfm + jpnkit-20010701

 まだ開発段階ではありますが、平田さんが 日本語 TrueType フォントの埋めこみを可能にするパッチ を公開してらっしゃいます。こちらの RPM も作りました。 (開発版でないものとの共存はできません。)

Vine 用 RedHat7.xJ/Kondara2.0 用

 インストール後、 "/usr/share/fonts/TrueType" 以下に日本語 TrueType フォントを (シンボリックリンクでよいので)置いて、'mktexlsr' を実行し、 "/usr/share/texmf/dvipdfm/config/cid.map" をそれに応じて編集します。


以前のこのページの内容

 以下は以前のこのページの内容です。既に本家に取り込まれています。

[2001/ 6/22] バックグラウンドカラー指定のバグ?

 color パッケージを用いて背景色に白を指定すると、 dvipdfm-0.13.2b を用いて作った PDF では、 他の色を指定した場合に比べて、 1ページ遅れて効果が現れるというバグがあるようです。

 例えば、次のような文章では、 xdvi や dvips の挙動と、dvipdfm の挙動が異なります。

bgcolor.tex
\documentclass{article}
\usepackage{color}

\begin{document}
\Huge    \pagecolor{white} white
\newpage \pagecolor{red} red
\newpage \pagecolor{white} white ? % This become red by dvipdfm-0.13.2b
\newpage \pagecolor{white} white, again
\newpage \pagecolor{red} red
\end{document}
bgcolor.tex

 不勉強にして、何が正しいのかわからないのですが、 dvipdfm の動作を xdvi などに合わせるには、2つの方法が考えられます。

  1. 白に関する特別処理をなくす
  2. ページの最初にある背景色処理をページの終わりに持ってくる

 PDF の各ページの背景色は、指定がなければ白になるようです。 dvipdfm の処理では、

 となっています。 従って、ページ途中で白を指定しても、そのページには効果が現れません。 次のページからは、ページの最初で何もしなくなるので、 ようやく白を指定したかのような効果が現れます。

 1. のように、白でも背景色の設定を行えば、ひとまずは解決しそうですが、 おそらく望まれる処理は 2. のほうで、

 とすればよいと思います。

 そのためのパッチです。

 これで、ページ途中に何度 pagecolor 命令があっても、 PDF には最後の1つだけが書き込まれることになって、 ファイルサイズが小さくなります。 ただし、color パッケージの正確な動作や PDF の構造はまったく把握できておりませんので、 間違っている可能性もあります。 正しいか間違いかどなたかご指導いただけると幸いです。

[2001/ 6/27] 名前によるカラー指定のバグ!

 xdvi 日本語化・機能拡張パッチのページ のメーリングリストの 330番 に、内山さんによる color のテストサンプル を見つけて試したところ、処理に失敗している色が2つあることに気がつきました。

 内部に持っていいる色の名前リストに余分なスペースがついて、 名前の認識に失敗していただけでした。 あわせて本家にバグ報告しようと思います。


ホームTeX 関連 RPMS 置場
リンクはご自由にどうぞ。
土村 展之(tutimura(a)nn.iij4u.or.jp) '(a)'は'@'に置き換えて
更新日 8/11 18:18, 2004