python.styを試してみた

LaTeXの文書の中にPythonのコードが埋め込める,ということでなかなか面白いです.
Python inside LaTeX
sampleではpythonの標準モジュールでないsympy,matplotlib(pylab)を使っているのでインストールしておく. どちらともMacPortsからインストール可能.

% sudo port install py25-sympy25
% sudo port install py25-matplotlib

# matplotlibをインストールしたとき途中でエラーが起きるが,その度にcleanするとうまくいく.
python.styはLaTeXの文書がある同じディレクトリにおいておくか,~/texmf/tex/latex/ディレクトリに入れる.あとは普通にLaTeXで文書を書く.

\documentclass[12pt]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{amsmath}
\usepackage{python}

\begin{document}
\section{数式の描画}
2次方程式とくぞー
\begin{python}
from sympy import *
x = Symbol('x')
ss = solve(x**2+3*x+4, x)
print latex(ss, inline=False)
\end{python}

\section{グラフの描画}
\begin{python}
from pylab import *
t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s)
xlabel('time(s)')
ylabel('voltage(mv)')
grid(True)
savefig('sample.eps')
print r'\includegraphics[scale=0.5]{./sample.eps}'
\end{python}
\end{document}

そのあとLaTeXを実行し,dviをpdfに変換する.

% platex -shell-escape pythonsty_test.tex
% dvipdfmx pythonsty_test.dvi

# -shell-escapeは\write18コマンドでシェルコマンドを実行できるようにするオプション.
sympyでシンボリック計算を行いそのままLaTeXにのっけることができるというのは便利かもしれない.Rubyのコードも埋めることができるruby.styを作ってみよう.