読者です 読者をやめる 読者になる 読者になる

kengo700のナレッジベース

誰かの役に立つと思う情報を発信するブログ

LaTeXのコードで図の文字を差し替える方法

「PSfrag」というパッケージを使うと、EPS形式の画像中の文字をLaTeXのコードから差し替えることができます。これにより、画像中の文字を修正するときに図を作り直さなくてよくなったり、別の図と文字のサイズをそろえることができるようになります。

はじめに

現在でも論文作成には「LaTeX」が使われていると思います。論文に図を挿入する際に、EPS形式などのベクタ形式の画像データを使うと文字データを埋め込むことができます。

ここで「PSfrag」というパッケージを使うと、EPS形式の画像中の文字をLaTeXのコードから差し替えることができます。これは下記の利点があります。

  • 文字を修正するときに図を作り直さなくていい
  • 別の図と文字のサイズをそろえることができる
  • LaTeXの数式などで置き換えることができる

注意点として、LaTeXからPDFファイルを作成する際にPS形式のファイルを経由する必要があり、私が使っている「LATEX2e美文書作成入門第6版」の設定ではPSfragを使うことができません。設定の変更方法は後述の節で説明します。

文字を後から差し替える方法

図の作成

置き換える場所を指定するための「タグ」となる文字列を書き込んだEPS形式の画像ファイルを作成します。

タグの文字はなるべく単純に、一文字もしくは数字にした方が問題が起こりにくいです(スペースを含まなければ何文字でもいいはずですが、PowerPointからEPSファイルを作成した場合は一文字でなければ置き換えられませんでした)。またフォントは「Times New Roman」にしておきます。

f:id:kengo700:20160327181702p:plain:w400

パッケージの読み込み

LaTeXのコードでPSfragのパッケージを読み込みます。

\usepackage{psfrag}

PSfragコマンド

LaTeXのコードのincludegraphicsコマンドの前で、psfragコマンドによりタグの文字と置き換え後の文字を指定します。

\begin{figure}
    \begin{center}
        \psfrag{a}{Pikachu}
        \includegraphics{figure1.eps}
    \end{center}
\end{figure}

生成したPDFファイルでは、下図のように「a」の文字が「Pikachu」に置き換えられています。

f:id:kengo700:20160326201043p:plain:w400

位置・サイズの調整方法

PSfragでは各種オプションで文字位置を変更することができます。オプションはいろいろ種類がありますが、実際使うのは3種類くらいです。

下記のようにl c rのオプションを設定すると、下図のように左揃え、中央揃え、右揃えで変換されます。

\begin{figure}
    \begin{center}
    \begin{tabular}{cc}
        \includegraphics{figure2.eps} &
        \psfrag{a}[l]{option: l}
        \psfrag{b}[c]{option: c}
        \psfrag{c}[r]{option: r}  
        \includegraphics{figure2.eps} \\
        \footnotesize{(a) 元画像} &
        \footnotesize{(b) 変換後}
    \end{tabular}
    \end{center}
\end{figure}

f:id:kengo700:20160326203105p:plain:w400

さらに位置を微調整するには'hspace' 'raisebox'コマンドなどを使うことができます。

\begin{figure}
    \begin{center}
    \begin{tabular}{cc}
        \includegraphics{figure3.eps} &
        \psfrag{a}[c]{\hspace{10mm}hspace 10mm}
        \psfrag{b}[c]{\raisebox{10mm}{raisebox 10mm}}
        \includegraphics{figure3.eps} \\
        \footnotesize{(a) 元画像} &
        \footnotesize{(b) 変換後}
    \end{tabular}
    \end{center}
\end{figure}

f:id:kengo700:20160326204944p:plain:w400

文字の大きさを変更するには、LaTeXの文字サイズを変えるコマンドを使います。

\begin{figure}
    \begin{center}
    \footnotesize 
    \begin{tabular}{cc}
        \includegraphics{figure4.eps} &
        \psfrag{a}[c]{footnotesize}
        \psfrag{b}[c]{\large large}
        \psfrag{c}[c]{\huge huge}    
        \includegraphics{figure4.eps} \\
        \footnotesize{(a) 元画像} &
        \footnotesize{(b) 変換後}
    \end{tabular}
    \end{center}
\end{figure}

f:id:kengo700:20160326205449p:plain:w400

オプションなどの詳細は下記をご覧ください。

LaTeXの設定

PSfragはDVIファイルからPSファイルへ変換時に文字列の置き換えを行っています。このため下記のようにファイルを変換する必要があります。

  1. LaTeXファイル -> DVIファイル
  2. DVIファイル -> PSファイル
  3. PSファイル -> PDFファイル

私が使っている「LATEX2e美文書作成入門第6版」の方法では「dvipdfmx」によりPSファイルを経由しないでPDFファイルを作成しているので、 PSfragコマンドを使うことができません。

TeXworksでLaTeXファイルからPSファイルを作成する方法

下記設定をすると、TeXworksを使ってLaTeXファイルからPSファイルを作成できます(もっとスマートな設定があると思います、ので教えてください)。

  1. 下記ページのとおりに、LaTeXの標準パッケージをインストールする
  2. TeXworksから「platex」と「dvips」を実行できるように、下記の内容のファイルを「C:\texlive」などに「platex_dvips.bat」などの名前で保存
    • ※内容はインストール先や環境変数の設定に応じて適宜修正してください
    • ※コマンドの詳細は「参考資料」のリンク先を参照ください
@echo off

C:\usr\local\bin64\platex -guess-input-enc -interaction=nonstopmode "%1".tex
if ERRORLEVEL NEQ 0 goto :error
C:\usr\local\bin64\dvips -Ppdf -z -f "%1".dvi | C:\usr\local\bin64\bkmk2uni > "%1".ps
if ERRORLEVEL NEQ 0 goto :error

goto :eof

:error
echo ### Error occurred.###
exit /b 1
  1. TeXworksの「編集」->「設定」->「タイプセット」のタイプセットの方法の追加から下図のように設定する
  2. f:id:kengo700:20160326210318p:plain
  3. LaTeXファイルをTeXworksで開き、設定したタイプセットを実行する
  4. f:id:kengo700:20160326210352p:plain

Acrobat DistillerでPSファイルをPDFファイルに変換する方法

有料のAdobe Acrobatを持っている場合は、付属されている「Acrobat Distiller」によってPSファイルをPDFファイルに変換することができます。

PSファイルをダブルクリックすると、下図のウィンドウが表示され、PDFへの変換が行われます。

f:id:kengo700:20160327181145p:plain

他にはps2pdfなどでPSファイルをPDFファイルに変換することができます。

参考資料

おわりに

Wordの図のレイアウト方法がまともになれば、LaTeXからWordに移行できるんですけどね。