いっしきまさひこBLOG

AI・機械学習関連、Web制作関連、プログラミング関連、旅行記録などなど。一色政彦。

Pythonで書いた計算コードから数式の描画/TeX取得を行う方法(handcalcs)

機械学習関連をしていると、数式をコードで表現するときがありますが、逆にコードで書いたものを人に説明するためや、自分で後で見直したいとき用に、数式を描画したいときがあります。Jupyter Notebookを使っている場合は、通常、TeX/Latex書式で書くのではないかと思います。

1つぐらいであればTeXコマンド文を手書きした方が速いと思いますが、大量にある場合、「コードから数式を表示できないの?」って思う人も多いかもしれません。そんなことができるライブラリを見つけたので紹介します。

上記の「handcalcs」というPythonライブラリです。注意点としては、Python 3.7以上である必要があります。Colabだと2020/09/03時点でバージョン3.6なので使えなかったです。Kaggle Notebook(Python 3.7.6)を使って、以下の内容を試しました。

インストール方法

PyPIパッケージなのでpipでインストールできます。

!pip install handcalcs

# Collecting handcalcs
#   Downloading handcalcs-0.8.1-py3-none-any.whl (24 kB)
# Requirement already satisfied: pyparsing<3.0.0,>=2.4.7 in /opt/conda/lib/python3.7/site-packages (from handcalcs) (2.4.7)
# Installing collected packages: handcalcs
# Successfully installed handcalcs-0.8.1

handcalcsレンダラーのインポート

import handcalcs.render

Python計算コードのレンダリング

あとは%%renderセルマジックで記述するだけです。

%%render
a = 2
b = 3
c = 2*a + b/3

これをJupyter Notebook上で実行すると次のようにレンダリングされます。

f:id:misshiki:20200903161632p:plain
handcalcsレンダリング結果

MathJaxでレンダリングされているので、右クリックメニューからTeXコマンド文を取得できます。

数式だけでなく、その計算結果までレンダリングされているのもポイントです。

TeX初心者であればかなり参考になるのではないでしょうか。

レンダリング例2

f:id:misshiki:20200903162151p:plain
mathモジュールのsqrtやpiも利用可能

直接にTeXコマンド文を取得

%%texセルマジックを使えばレンダリングではなくTeXコマンド文が出力されます。

f:id:misshiki:20200903162241p:plain
TeXコマンド文を取得するモードもあります

この他にもいろいろと機能があるので、公式GitHubページをご確認ください。