ホームTeX 関連 RPMS

ps2pdf/dvipdfmx で日本語 PDF を作る


Unix 環境での PDF の作り方を簡単に紹介します。 TeX で元の文章を書いておくと言うのは暗黙の了解です。 2004年8月の VineLinux 3.0 公開に合わせて、このページの内容を大きく書き換えました。 もう必要ないでしょうが、以前の内容は dvipdfm で日本語 PDF を作る に保存しておきます。

ps2pdf vs dvipdfmx

 Unix 環境で日本語の PDF を作るにもいろいろ方法が出てきました。 結論を先に書くと、 Vine3.0 以降なら 'ps2pdf -dNOKANJI''dvipdfmx'、 Vine2.6r4 までなら 'dvipdfm(x)' を使うのがよい、ということになります。

  ps2pdf
ghostscript 5.50
(VineLinux2.1〜2.6r4)
ps2pdf -dNOKANJI
ghostscript 7.07
(VineLinux3.0〜)
dvipdfm +
日本語パッチ
dvipdfmx
欧文フォントビットマップ?ベクトル?
日本語フォントビットマップ?埋め込まず
ファイルサイズ
処理時間
日本語, カラー, 縦書き
日本語のしおり
JPEG, PNG 画像をそのまま取り込む×
暗号化×
OpenType フォント×
同一画像の埋め込みを
1回だけに
×
PSTricks×
ps2pdf (ghostscript 5.50(VineLinux2.1〜2.6r4)付属)
フォントをビットマップで埋め込むので、 文字が汚い&ファイルサイズが大きくなります。 ビューアが日本語フォントを持たなくても 表示できるという好都合もありますが、 Win/Mac/Linux の Adobe Reader (旧称 Acrobat Reader) を前提にすれば、 文字の汚さばかりが目立ってしまいます。
ps2pdf(ghostscript 7.07(VineLinux3.0〜)付属)
山田泰司さんのパッチ が当たっていれば、-dNOKANJI オプションを付けることで (パッチのあてかたによっては不要かも) ほぼ実用的な PDF を作ることができます。 Vine Linux 以外の ghostscript ではあまり整備されていません。 PSTricks に依存した文書は dvipdfm(x) で処理できませんが、 そのような場合でも大丈夫です。 処理時間は長めですが、普通に使うにはこれで十分でしょう。
dvipdfm(x)
PS を介さず DVI から直接 PDF を作れます。 処理時間も短く、PNG 画像をそのまま取り込める等、数々の特徴があります。 状況によっては Acrobat Distiller よりも高品質の PDF を作れます。 残念ながら、prosper クラスのように PSTricks に依存したものは処理できないようです。
dvipdf
紛らわしい名前のコマンドですが、 内部で dvips と ps2pdf を続けて呼び出しているだけです。
pdftex
TeX コンパイラ一族のようです。(UNIX 環境では)日本語にはまだ非対応です。 私は使ったことはありません。

 配布に適した、日本語フォントを埋め込まない PDF の特徴をまとめておきます。 Linux での問題も徐々に解決に向かっています。


dvipdfmx のインストール

 dvipdfmx は、本家 dvipdfmx から入手できます。 平田さんによる旧来の dvipdfm の日本語化 をあえて使う理由はないでしょう。

 以下に VineLinux でのインストール方法を説明します。 dvipdfm(x) だけでなく TXfonts/PXfonts のインストールもほぼ同じ手順で行えます。 パッケージは RedHat 等でも流用できるかもしれません。

Vine 3.0/3.1/3.2 で apt

 Vine 3.0/3.1/3.2 では Vine 本体に dvipdfmx が含まれているはずです。 TXfonts/PXfonts は tetex-extra パッケージに含まれていますが、 これはインストール CD には収録されていません。 "/etc/apt/sources.list"

rpm     [vine] http://updates.vinelinux.org/apt 3.2/ main devel plus extras updates
rpm-src [vine] http://updates.vinelinux.org/apt 3.2/ main devel plus extras updates

 のような行が有効になっていることを確認して(標準でなっているはずです)、root で 'apt-get update; apt-get install task-tetex' を実行すれば、tetex-extra を含めて、 TeX 環境に必要ないくつかのパッケージがまとめてインストールされます。

Vine 2.5/2.6r4 で apt

 Vine 2.5/2.6r4 では VinePlus に dvipdfm, txfonts, pxfonts を contribute しています。 "/etc/apt/sources.list"

rpm     http://www.t.ring.gr.jp/pub/linux/Vine/apt 2.6/ main plus plus-noarch
rpm-src http://www.t.ring.gr.jp/pub/linux/Vine/apt 2.6/ main plus

 のような行を有効にして、root で 'apt-get update; apt-get install dvipdfm txfonts pxfonts' を実行すればよいです。

Vine 2.0/2.1 あるいは手動

 Vine 2.0/2.1、あるいは apt を使わない場合、RPM は以下から入手できます。

 RPM のインストールは、 バイナリパッケージを入手して root で 'rpm -Uhv dvipdfm-*.i386.rpm' とします。


日本語のしおり

 PDF に日本語のしおりを作るにはコツがあります。 単純に PDF を作ると、たいてい化けてしまいます。 また、Linux版の Acrobat Reader 5.0 までは化けて表示されますので、 動作確認は Linux 版の Adobe Reader 7.0 以降か、 Win 版等で行う必要があります。

 以下のような対策が必要です。

 prosper で LaTeX のコマンドが化ける時は、竹澤さんの しおりのタイトルとスライドのタイトルを別に指定する も参考になります。

 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 フォントを用いて、 フォントを埋めこまなくなり、ファイルサイズの節約に貢献できます。 tetex-2.0 に取り込まれたため、インストール作業はほぼ不要で、 プリアンプルに以下のように書くだけで使えるようになってきています。

\usepackage{txfonts}

 詳しい使い方は、奥村先生の TX フォント を御覧下さい。

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


画像ファイルの取り込み

 dvipdfm(x) では、EPS に変換することなく、直接画像ファイルを扱えます。

ebb foo.png

  のようなコマンドで、 前もって画像の大きさを示すファイル "foo.bb" を作っておきます。そして、LaTeX ソースに

\usepackage[dvipdfm]{graphicx}
...
\includegraphics{foo}

 と書くと、foo.png といった画像を直接読み込みます。 (拡張子まで書いてもよいですが、 dvips との共存のために省略した方が都合が良いです。)

 PNG 以外にも JPEG, PDF の画像も同じ方法で取り込めます。 BMP は不用意にファイルサイズが大きくなることが多いので、 'convert hoge.bmp hoge.png' として PNG に変換して用いるのがよいでしょう。

 ちなみに PNG も 'convert hoge.png hoge2.png' とすると、 ファイルサイズが小さくなることがあります。 convert コマンドは ImageMagick に含まれています。 普通のディストリビューションに含まれているはずです。


 dvips では(もうおなじみでしょうが)EPS に変換する必要があります。 PNG 画像はやはり convert コマンドで、

convert hoge.png eps2:hoge.eps
                 ^^^^^形式を指定

 として、出力形式を Encapsulated PostScript Level II にしてやると、 データ圧縮され、ファイルサイズが爆発せずにすみます。 JPEG 画像も同様に変換できますが、 同時に圧縮率(quality)もディフォルト値(75?)に変更されてしまいます。 jpeg2ps を使えばそのようなことはありませんが、 ライセンス上の問題で、Linux ディストリビューションでは、 nonFree のカテゴリに入ってしまうことになるでしょう。

 LaTeX ソースには

\usepackage[dvips]{graphicx}
...
\includegraphics{foo}

 と書きます。拡張子の eps は書かなくても自動で補われます。 前述のように、dvipdfm と切替えても、 (\usepackage のオプション以外は)変更する必要がなくなるので、 書かない方が好都合です。


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

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

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

 slides class 以外に prosper という、 もっと派手なスライドを作れるクラスがありますが、 これは dvipdfm が使えませんので、ps2pdf を用いるのがよいです。 渡部さんの How to use PROSPER には有用な情報があります。

 prosper で作った PostScript を縮小印刷するには、 in.ps を A4 横置きのPSファイルだとして、 mpage, psmulti-dna, psutils 等を用いて次のようにするのがよいでしょう。

(1/4)
    mpage -4 -o -a -R in.ps > out.4.ps
    psmulti -pages 4 -nodecor -cmajor -btot in.ps > out.4.ps
    psnup -4 -l in.ps > out.4.ps

(1/6)
    psmulti -pages 6 -nodecor in.ps > out.6.ps
    psnup -6 -l in.ps > out.6.ps

(1/8)
    mpage -8 -o -a -R in.ps > out.8.ps
    psmulti -pages 8 -nodecor in.ps > out.8.ps
    psnup -8 -l in.ps > out.8.ps


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