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ファイル

f:id:holy_mountains:20190125143634p:plain

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  

参考ページ

3 2016年 LATEX psfrag の後始末

流体力学におけるQ値のメモ

Q値は,速度勾配テンソル

\displaystyle W_{ij}=\frac{\partial u_i}{\partial x_j}

(ただしi,j=1,2,3であり,以後,総和規約を考慮する)

の第2不変量で定義される.

 

第2不変量であるから,

Q=W_{22}W_{33}-W_{23}W_{32}+W_{11}W_{22}-W_{12}W_{21}\\+W_{11}W_{33}-W_{13}W_{31}

と表される.

総和規約を用いて書くと

\displaystyle Q=\frac{W_{ii}W_{ii}}{2}-\frac{W_{ij}W_{ij}}{2}

とも書くことができる.これら2つの表現は等価である. 

 

以上は一般の流体に対して成立するが,さらに,非圧縮流体(W_{ii}=W_{11}+W_{22}+W_{33}=0を満たす流体)に対しては,

Q=\frac{1}{2}(\Omega_{ij}\Omega_{ij}-S_{ij}S_{ij})

 と表すことができる.

ただし,\Omega_{ij},S_{ij} はそれぞれ渦度テンソルと変形速度テンソルであり,定義は

\displaystyle \Omega_{ij}=\frac{1}{2}\left( \frac{\partial u_i}{\partial x_j}-\frac{\partial u_j}{\partial x_i} \right)

\displaystyle S_{ij}=\frac{1}{2}\left( \frac{\partial u_i}{\partial x_j}+\frac{\partial u_j}{\partial x_i} \right)

である.

\Omega_{ij}は反対称テンソルS_{ij}は対称テンソルである.

正方格子内のクラスタの同定

図(a)のような直交格子に格納されたデータがある.

このデータに対して,例えば,値が0のセルの接続関係に着目し,最近接する(すなわち,辺で隣り合う)値0の格子の“クラスタ”を考える.

ここでは,図(b)のように,同一のクラスタに属するセルに同一のラベルをつけるアルゴリズムを参考文献に従ってまとめる.

 

ここで,同一のクラスタ中のすべてのセルには同一のラベルが付き,異なるクラスタに属するセルのラベルが同一であってはならないことに注意する.

 

 

 

 

f:id:holy_mountains:20190107122028p:plain

 

参考文献

浸透理論の基礎,吉岡書店,1988

著者:D.スタウファー

訳者:小田垣考