3 2016年 LATEX psfrag の後始末

TEX 文書に図を入れる場合、 TikZ を利用して作図するのが最近の定番であるが、 以前は EPS のデータを作って \includegraphics{} で取り込むことが良く行われていた。 図の中に数式などを含めるために、 psfrag というマクロ・パッケージを利用して、 PostScript データ内の文字列を TEX の式に置き換えるという手段があった。

ところが psfrag は、 今ではほとんど使われなくなった dvips ドライバーにしか対応しておらず、 最近の TEX 環境で良く使われるドライバー (例えば dvipdfmx 等) には対応していない。 そのため、psfrag を利用した TEX 文書の組版し直しが難しくなって困っていた。

fragmaster というソフトウェアを使えば良いという話を読んで、 試したところ、無事成功したので、使用法をメモしておく。

古い LATEX 文書
...
\usepackage{psfrag}
\usepackage{bm}% 太字 \bm{} のため
...

\begin{figure}[htbp]
\centering
\psfrag{G}{$\Gamma$}
\psfrag{ab}{$\bm{a}\times\bm{b}$}
\includegraphics[width=10cm]{figure/graph1.eps}
\caption{グラフ1}
\end{figure}

この LATEX 文書は、 figure/graph1.eps という EPS ファイルに収められた図のうち、 G, ab という文字列を $ \Gamma$ , $ \bm{a}\times\bm{b}$ に置き換えて取り込んでいる。

graph1_fm.eps, graph1_fm というファイルを用意する。 fragmaster が読むファイルの名前には _fm をつける、 ということらしい。

graph1_fm.eps は、元々の graph1.eps で良い。
$ cd figure
$ mv graph1.eps graph1_fm.eps

graph1_fm には、文字列の置き換えルールを記述する。 元の .tex ファイルの中の \psfrag 命令をコピーし、 さらに \includegraphics{} のオプションや、 使用するパッケージの指定などを書き込む。
graph1_fm
% fmclassopt: 12pt
% fmopt: width=10cm
%head
% \usepackage{bm}
%end head
\psfrag{G}{$\Gamma$}
\psgrag{ab}{$\bm{a}\times\bm{b}$}

fragmaster コマンドを実行して、 graph1.eps, graph1.pdf を生成する。 MacTeX 2015 を使っている場合、 /usr/local/texlive/2015/bin/x86_64-darwin/fragmaster というPerlスクリプトがインストールされているはずである。
$ fragmaster
$ ls graph1.*
graph1.eps    graph1.pdf

新しい LATEX 文書
...
%\usepackage{psfrag}
\usepackage{bm}% 太字 \bm{} のため
...

\begin{figure}[htbp]
\centering
\includegraphics[width=10cm]{figure/graph1.eps}% graph1.pdf でも良い
\caption{グラフ1}
\end{figure}

桂田 祐史
2018-03-01