LaTeXの数式をgnuplotで作成したグラフに貼り付けたい
gnuplotで作成したグラフで,例えば,軸ラベルなどにLaTeXの数式を使用したい場合.
方針
様々な方法が存在すると思うが,今回は,
1.gnuplotでは軸ラベルは設定しない
2.LaTeXの数式の画像は別に作成
3.1と2をInkscapeなどの編集ソフトで結合する
という方針をとる.
texのソースファイル
以下のようなtexファイル(eq.tex)を作成し,数式を書く.
\documentclass[30pt]{article} \begin{document} \thispagestyle{empty} $$\int_{0}^{\pi} \sin x dx =\left[ -\cos x \right]_{0}^{\pi} = 2 $$ \end{document}
コンパイル
あとは,コンパイルするだけである.
以下のシェルスクリプト(com.sh)を作成.
#!/bin/sh SRC=$1 BASE=`basename $1 tex` DVI="${BASE}dvi" EPS="${BASE}eps" platex $SRC dvips -Ppdf -E $DVI -o $EPS dvisvgm -E $EPS
実行は,./com.sh eq.tex
結果
epsファイルとsvgファイルが作成された.
GSviewで閲覧したepsファイル
InkscapeでEPSを読み込めないときの対処法
InscapeでEPSファイルの編集をする際,Ctrl-oでの目的のファイルを開いても,真っ白なページが表示されるだけで,デフォルトではEPSの編集はできない.
どうやらGhostscriptを入れないといけないらしく,下の参考ページ[1]にしたがってインストールした.
このとき,Ghostscriptのバージョンで9.07よりも新しいものは不具合がでる(?)らしいため,推奨されていた9.07をインストールし,
[1]にしたがってPathを通すなどの作業も行った.
しかし,これだけではうまくいかなかった.EPSを読み込んでもデフォルトの時の反応となんら変わらなかった.
参考ページ[2]によると,対象のEPSファイルを C:\temp
というフォルダにおいて,そこに置いたファイルを読み込めばうまくいくということであった.
これに従い,tempフォルダを作成するとこのフォルダ内のEPSは読み込むことができた.
ちなみに,Inkscapeのバージョンは,0.92.0であった.
参考ページ
[1] http://kakepro.html.xdomain.jp/tips/style_Inkscape.html
[2]
techmemo: Inkscape に epsファイルをインポートすると失敗する
メモ:epsファイルの編集
キーワード:tgif, fragmaster
tgifでのeps画像の編集
・.eps →.obj への変換
pstoedit -f tgif filename.eps > filename.obj
・逆
tgif -print -eps filename.obj
・編集
tgif filename.obj
(Gnuplotで作成したepsファイルをobjに変換して読み込むと,グラフの軸の数字や軸ラベルの文字が粗くなった.おそらくベクターにはなっていない. また,グレースケールで作成していたカラーマップや,そのカラーバーが真っ黒になってしまった.対処法はあると思うが,現状のメモ.)
fragmasterでEPS画像中の文字を別の文字に置換(LaTeXの文字も使用可)
元画像をpic.eps とする.
pic.epsをコピーしpic_fm.epsという名前で保存 (xxxx_fm.epsというファイル名にする必要がある)
pic_fmというファイルを作成し,この中に変換のコマンドを書き込む
例えば,図中のXという文字をlatex数式の\tauに置き換えたい場合には, pic_fmに
\psfrag{X}{$\tau}
と記述.
例えば\bmを利用する際など,\usepackageが必要な場合:
%head: %\usepackage{bm} %end head \psfrag{X}[c]{$\bm{x}$}
とすれば良い.\psfragで指定している[c}は,センタリングの意味.) headの後にコロンをつけることに注意.
フォントサイズの調整
\psfragで置換した文字のサイズが元の文字のサイズと異なってしまうおいう現象が起きたが, 例えば,
\psfrag{X}[c]{{\LARGE $X$}}
にように,\largeや\hugeなどの類のコマンドで解決した.
置換の実行
実行はコマンドラインで,fragmaster