LoginSignup
11
12

More than 5 years have passed since last update.

Texpad で PythonTex を使ってみる。

Last updated at Posted at 2015-12-07

動機

PythonTexの理由

実験に pythhon を使っている場合のみの話ですが、データが python で読み込めると思います。その上で、pdfを作ろうとした時に以下のようなことを自動化できたらいいなあと思いました。

  • 数式の自動生成
  • データの具体例などの提示
  • 表の作成
  • (図の挿入)

最後の図に関しては、図に影響するパラメータが変更する率が高い時やパラメータだけを変えた同じような図を幾つか使う時に有効だと思うので正直、、、。

pythonの実行とtexのコンパイル

tex のコンパイルの度に python が実行されることになるので、1文字推敲しただけで挿入する図までまた再生成することは、、、。( platexdvipdfmxpythontex などのコマンドをビルドスクリプトにまとめて実行している場合)

Texpadの理由

Texpad · Smoothest way to write LaTeX

有料ですが、お試しで2週間?使えます。
なぜ、Texpad なのかというと友達に紹介されて使ってみたかったです。有料も含め、 tex 用のエディターを検討中です。(今のところ TexShopatomgulpとか書いて頑張るか。参考

導入

PythonTexのインストール

PythonTeX - TeX Wiki

私は El Capitan/usr/textbin フォルダが作れなくなってしまったので、こちらを参考にしたのですが、 TexLive に最初から PythonTex が入っています。
また、Pygmentsモジュールが必要なので

pip install pygments

します。

また、Texpadの環境設定のディストリビューションタブにMacTexをダウンロードボタンもあります。

Texpadのタイプセット

TexPad では以下のように選択できます。
また、 .tpbuildスクリプトを使用 にチェックを入れることでプロジェクトフォルダ以下のビルドスクリプトを bashで実行できます。

※ bib

参考文献 にチェックを入れれば、 biber とかもやってくれるみたいです。
私はまだ論文を書いたことがないので、 bib による管理がいまいちわかっておりません。

TexPadのビルドスクリプト

Texpad · Help · Custom Typesetting in Texpad OS X using Build Scripts

サンプルはこちら

私は pyenv を使っているのですが、ビルドスクリプトに書いた pythontex コマンドがうまく実行されませんでした。
原因はインストールしたはずの pygmentsモジュールがないというエラーでした。
ビルドスクリプトの実行ユーザの問題なのかよくわかりませんでしたが、とりあえず無理矢理ビルドスクリプトの中で PYTHONPATH 追加してなんとかなりました。

Hello PythonTex!

基本的に {pycode}環境で python の関数などを定義して、\pyコマンドで tex上に出力できます。

以下のような tex になります。

\begin{pycode}
# -*- coding: UTF-8 -*-

def hello():
  msg = r"Hello \textbf{PythonTex}!"
  return msg
\end{pycode}


\py{hello() + " via py"}

実践

A Gentle Introduction to PythonTeX

上のスライドでは、sympyを使った数式、matplotlibを使った図、webkit2pngを使ったウェブページの挿入からtableの自動生成まで書かれています。

ただ、pycode環境でprintを使って直接出力していますが、自分の環境ではできませんでした。ちなみに自分は2.7です。

数式の自動生成

PythonTeXを試してみた:Pythonコードの出力結果をLaTeX文書に埋め込む : はむ吉(のんびり)の雑記帳

上のスライドでは\newcommandと組み合わせたり、sympyと組み合わせたりしています。

sympyにはlatexコマンドがありますが、わざわざsympyで数式を作らずに実際に自分が使っている数式から自動生成できたら最高です。

自分はTheanoベースのライブラリを使おうと思っているので、Theanoの数式のグラフ構造からsympyもしくはlatexに変換してくれるようなのがありそうな気がしたのですが見つかりませんでした。
(もっと探してみて、無かったら自分で書くかsympyで普通に書くかします。ですがsympyで書くのであれば普通にtexで書けばいいんじゃないのかなあと思っています。微分式などのsimplicationがどの程度のものなのかわかっていません。参考

データの具体例などの提示

これは簡単にできそうです。

表の作成

すでにデータありきでやられていますが、自分がpdfにする前に実験結果を実際どう管理するのかというところです。
エクセル系(プレーンテキストじゃない)で保存しとく説が濃厚ですが、その場合、tabfileioとかを使ってみようと思っています。使ってみたらまた忘備録書きたいと思います。
(csvとかであれば、標準でモジュールがあるのであれですが。)

図の挿入

PythonTeXとMatplotlib - 何かを書き留める何か

\begin{pycode}
  ・・・
  pylab.savefig('myplot.pdf')
\end{pycode}

\begin{figure}
\includegraphics{myplot.pdf}
\end{figure}

と言った感じです。
これは、一度画像を保存してしまって普通にtexで読み込めばいいかなと思います。

※ グラフ画像保存

rodeoを使えば、割とpythonでグラフ画像保存のハードル下がりそうなので(グラフィカルにできそう)使ってみたいです。ipythonベースのブラウザで動くエディターです。pandasのデータ構造をビューで表示してくれるみたいです。

TikZ

Plot of the Brillouin Function | TikZ example

上のページはluatexluaで関数定義してTikZ作ってますが、これのpython版もいけるんじゃないか?と汗

感想

執筆環境とか調べる前に早く実験終わらせろやと言われそうです。。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12