EXCELっぽい数式をTEXに変換

pythonのsympyパッケージに含まれているsympifyというメソッドを使うと、EXCELで記述するような数式をsympyで代数計算できるオブジェクトに変換してくれますが、それを更にlatexメソッドを使ってTEXのソースコードに変換することが出来ます。

そしてそのソースコードをTEXコンパイルし、pdf書類として仕上げることが可能です。建設関係の設計者にはEXCELだけですごい見栄えの計算式や図表を含んだ計算書を作る方もいらっしゃいますが、私はそのようなセンスは持ち合わせていないので、pythonとTEXに頼ることにします。

私の場合、pythonで自作オブジェクト(ここでは”CreateFormula”というオブジェクト)を作り、下記のような感じで引数にEXCELで書くような一般的な記法の数式を与えると、数値代入前の式と数値代入後の式、それから解と単位を連ねて出力させるようにしました。なおこの式を書く前には、各変数に数値を代入する手順が当然あります。

q = CreateFormula('q', '(B_1*(γ-c/B_1))/(K_0*tan(φ))*(1-exp(-K_0*tan(φ)*H/B_1))+P_0*exp(-K_0*tan(φ)*H/B_1)', 'round_3')

tex.add_eqmulti(q, unit = 'kN/m^2', newline = True)

分数が多重になっているので小さい文字もあり少し見づらいですが、EXCELのセルを縮めたり合わせたりするよりは労力がかからないのと、セル参照ではなく変数を直接参照しているので間違いも少ないのが利点かと思っています。

自作のコードはモジュールとして別ファイルに保存してあるのですが、sympyドキュメントやネットのサンプルコードを拝借したりしているうえに、出典と謝辞もロクに整理していないので公開は差し控えています。(実はプログラムそのものが下手なので恥ずかしいというのが一番の理由ですが。。。)

Follow me!