サイズが小さいPostScriptファイル及びPDFファイルをTeXから作る方法

最終更新: 2001年1月22日
TeXから変換されたPostScriptまたはPDFファイルは元のDVIファイルよりかなりサイズが大きくなっています。これはTeXから変換されたPostScriptまたはPDFファイルに多くのフォントが埋め込まれているからです。
LaTeX2eでPostScriptまたはPDFファイルに 含まれるフォントを少なくする方法を説明します。

TeXは Donald E. Knuth が設計したComputer Modernフォントを使い、 通常TeXから作られたPostScriptフォントにはComputer Modernフォントがビットマップ形式で埋め込まれます。 一方ほぼすべてのPostScriptプリンタは以下の13種類の欧文PostScriptフォントを持っています。
Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, Symbol, Times-Bold, Times-BoldItalic, Times-Italic, Times-Roman
TeXからDVIファイルを作るときにこれらのフォントを使うようにすると出来上がるPostScriptファイルにフォントを埋め込む必要がなくなりサイズが小さくなります。

具体的にはTXフォントか PSNFSSパッケージを使えば多くの文字をPSの標準フォントを用いて印刷するようになります。 TXフォントについては上記のホームページにまとめられているのでここではPSNFSSについて説明します。 もしお使いのコンピュータにPSNFSSがインストールされていない場合以下の手順でインストールできます。

PSNFSSパッケージのインストール

PSNFSS version 8.1を対象にしています。

アスキーの日本語 LaTeX2e インストールキット UNIX版を使っている場合、 以下の「1.フォント情報のインストール」と「2. PSNFSSのインストール」は既にインストールされているので必要ありません (しかしPSNFSSのバージョンは若干古い)。 rsfsフォントはインストールされていないので以下の手順に従い自分でインストールする必要があります。
  1. Comprehensive TeX Archive Network (略称 CTAN)のミラーサイトの macros/latex/required/psnfss/lw35nfss.zip を持って来て TDS (TeX Directory Structure) のトップディレクトリ(普通はtexmfというディレクトリ)で展開します。
  2. CTANのmacros/latex/required/psnfssのファイルを texmf/tex/latex/psnfssにすべてコピーしてpsfonts.insをlatexで処理するとスタイルファイルができます。
  3. mathptmxを使う場合は\mathcalrsfsというフォントが使われるのでrsfsフォントをインストールする必要があります。
    1. CTANのfonts/rsfs/ps-type1/hoekwaterにある*.pfbファイルをtexmf.cnfの変数T1FONTSで示されるディレクトリに置きます。
    2. CTANのfonts/rsfs/ps-type1/hoekwater/afmにある*.afmファイルからafm2tfmを使って.tfmファイルを作ります。またはfonts/rsfsにある*.mfファイルから.tfmファイルを作ります。できた.tfmファイルをtexmf.cnfの変数TFMFONTSで示されるディレクトリに移動します。
  4. プリンタのPSフォントを直接使いたいTeXファイルの先頭で\usepackage{times,mathptmx}と書きます。
この設定を行ってもすべてのComputer Modernフォントをプリンタのフォントで置き換えることはできず数種類のComputer Modernフォントが使われます。 このようにして出来たDVIファイルは dvi2ps-2.0j ではうまく印刷することができませんでした。 dvipskはそのままでComputer Modernフォントを含まずプリンタ搭載のフォントを使うPostScriptファイルを生成します。

数式の中で使えるPSフォントには他にもいくつかの選択肢があります。どのようなものが使えどう違うかは滋賀県立大の奥村さんのホームページ (Q1 の回答 A1)が参考になります。

数式中のx, yといった文字をボールド体で出力するのは\boldmath, \mathversion{bold}やAMSLaTeXの\boldsymbolを使いますが、mathptm, mathptmx ではボールド体の数式書体が定義されていないためこれらのコマンドでボールド体の文字を数式中で出力することができません。そこで
\DeclareMathAlphabet{\bm}{OT1}{ptm}{b}{it}
というコマンドをプリアンブルに置いておくと、$\bm{x}$ のようにして数式中でボールド体の文字を出力できます。

mathpmx.styの数式の添字の位置について

PSNFSSバージョン8.1以前のmathptmx.styの数式の添字は、 CMフォントやmathptmにくらべて位置が下がりすぎています。 原因はmathptmx.styで使われるmath symbolフォントのzptmcm7y.tfmのx-height (\fontdimen5) が小さすぎるからです。 zptmcm7y.tfmを修正すると添字がまともな位置に出るようになります。 この問題はバージョン8.2で解決されました。
数式の添字の上下の位置が決められる方法はTeXbookの付録Gに書いてあります。 TeXbookはCTANのsystems/knuth/tex/texbook.texからダウンロードできます。

Belleekフォント

Y&Yが販売しているMathTimeのクローンで、 CTANのmacros/latex/contrib/supported/psnfssxにあるmathtime.dtxと一緒に使う BelleekというフォントがTrueTeXから 入手できます。これは使ったことがないので何とも言えません。 この情報はfj.comp.texhaxで 角藤さんの記事 から知りました。

画像を含むPSを小さくする

TeXで書いた文書の中にビットマップの画像を入れる場合, そのビットマップをPSに変換して入れることが多いですが, ビットマップを含むPSの大きさを小さくする方法がここに書いてあります.

TeXからPS及びPDFを作るときのコツに戻る

松本 隆太郎
感想コメントなどはEmail Addressに送ってください。