見出し画像

pythonでlatexの数式をnote用に変換する

noteではlatexの数式を埋め込むことができるようになりました。とても便利でありがたいのですが、数式のはじめに$${、終わりに}$$を付ける必要があります。pythonについてはjupyter notebookプログラムとlatexを含んだ文章を編集していますが、こちらでは$で始まり$で閉じれば数式を表示してくれます。これは仕様であるので従うまでですが、少し手間がかかります。そこで、自動的に変換する関数を作成してみました。Jupyter notebookで編集した文章をクリップボードにコピーし、関数を実行すると、note形式のlatex付きの文章を出力されます。
次の文章を例に実行してみます。

$\sin\theta$の3倍角のグラフを描いてみます。
ところで$\sin\theta=3\sin\theta-4\sin^3\theta$から同じ曲線を描いてみます。

from tkinter import Tk
def l():
    text = Tk().clipboard_get()
    f_sw = False
    t_l = []
    for chr in text:
        if chr == '$':
            if f_sw == False:
                t_l.append('$${')
                f_sw = True
            else:
                t_l.append('}$$')
                f_sw = False
        else:
            t_l.append(chr)
    return ''.join(t_l)

print(l())

$${\sin\theta}$$の3倍角のグラフを描いてみます。
ところで$${\sin\theta=3\sin\theta-4\sin^3\theta}$$から同じ曲線を描いてみます。

出力した結果をnoteのエディタにコピーすることができます。
pythonからクリップボードを操作するためにはpyperclipを使うことができますが、pipでインストール必要があり、面倒です。そこでTkinterを使います。3行目の text = Tk().clipboard_get()でコピーし、文字列を編集します。本来であれば、clipboard_appendメソッドで実行結果をクリップボードにもどすことができればもっと楽になるはずですが、私のPCではうまく動きません。

noteでは次の通り表示されます。

$${\sin\theta}$$の3倍角のグラフを描いてみます。
ところで$${\sin\theta=3\sin\theta-4\sin^3\theta}$$から同じ曲線を描いてみます。


この記事が気に入ったらサポートをしてみませんか?