pdflatex --shell-escapeを使ったときに図中フォントを埋め込む

pdflatexを使えば,TeXファイルから直接PDFに変換することができる.内部で何をやっているかは知らないけど.

pdflatexはEPSをそのまま挿入することができないので,

$ pdflatex --shell-escape hoge.tex

という感じで,--shell-escapeというオプションをつける必要がある.
これによって,EPSを一旦PDFに変換してPDFに挿入する.


EPSからPDFへの変換はepstopdfというシェルスクリプトを使っている.
なので,あらかじめ,EPSをPDFに変換して,変換後のPDFを挿入するようにしておいた方がコンパイルが早い.


しかし,epstopdfの設定によっては,図中のフォントが変換後のPDFに埋め込まれないことがある.
これは困る,困るぜ.論文にフォントが埋め込まれてないって言って弾かれてる.



ちなみに,PDFにフォントが埋め込まれているか確認するには,Adobe Readerを使う.

確認したいPDFファイルを開いて,
「メニュー」→「File」→「Properties...」か,ショートカットキー「command + D」とする.
でてきたDocument Propertiesウィンドウの「Fonts」というタブを開くと,次のように使われているフォントの一覧が出てくる.

ちなみにこれは,Helveticaの隣に (Embedded Subset) と書かれていないので,埋め込まれていない.


なので,epstopdfを編集してフォントを埋め込む.

epstopdfでフォントを埋め込む方法

環境はMac OS 10.7.1.

小川さんが配布しているパッケージ(Drag & Drop UpTeX)を例として,見ていくことにする.


epstopdfは/Applications/UpTeX.app/teTeX/binにある.これを編集する.

$ cd /Applications/UpTeX.app/teTeX/bin
$ sudo vim epstopdf

多分,管理者権限がいるので,持っていない人は,TeXの作業ディレクトリにepstopdfをコピー後,編集.

$ cd {自分の作業ディレクトリ}
$ cp /Applications/UpTeX.app/teTeX/bin/epstopdf .
$ vim epstopdf


epstopdfを開いた後,次の行

### no embed fonts
my $GSNOEMBED="-dNOKANJI -c '.setpdfwrite << /NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats /Ryumin-Light /GothicBBB-Medium] >> setdistillerparams'";

### no embed fonts
my $GSNOEMBED="-dNOKANJI -c '.setpdfwrite << /NeverEmbed [] >> setdistillerparams'";

と編集.
つまり,埋め込みたいフォントの表記を全部消す.


以上の設定でepstopdfを実行すると,

となり,フォントが埋め込まれた.