PythonでLaTeXの数式を出力するライブラリが美しすぎた【latexify】
Pythonは書けるけどLaTeXは難しい・・・そんな方向けのPythonライブラリを紹介します。
目次
概要
公式によると、latexify というライブラリは以下のように紹介されています。
latexify は、Pythonソースコードの断片から、対応する LaTeX 数式にコンパイルする Python パッケージです。
説明だけではイメージが湧かないと思いますので、コード例を見てみましょう。
サンプルコード1
コード
import math
import latexify
@latexify.function
def solve(a, b, c):
return (-b + math.sqrt(b**2 - 4*a*c)) / (2*(a))
solve
出力結果
ちなみに、最終行を solve ではなく、print(solve) とするとLaTeX形式で出力されます。
\mathrm{solve}(a, b, c) = \frac{-b + \sqrt{ b^{2} - 4 a c }}{2 a}
サンプルコード2
コード
@latexify.function
def sinc(x):
if x == 0:
return 1
else:
return math.sin(x) / x
sinc
出力結果
print 文なら以下のように出力されます。
\mathrm{sinc}(x) = \left\{ \begin{array}{ll} 1, & \mathrm{if} \ x = 0 \\ \frac{\sin x}{x}, & \mathrm{otherwise} \end{array} \right.
サンプルコード3
コード
@latexify.expression
def solve(a, b, c):
return (-b + math.sqrt(b**2 - 4 * a * c)) / (2 * a)
solve
出力結果
print 文なら以下のように出力されます。
\frac{-b + \sqrt{ b^{2} - 4 a c }}{2 a}
サンプルコード4
コード
identifiers = {
"my_function": "f",
"my_inner_function": "g",
"my_argument": "x",
}
@latexify.function(identifiers=identifiers)
def my_function(my_argument):
return my_inner_function(my_argument)
my_function
出力結果
print 文なら以下のように出力されます。
f(x) = g \mathopen{}\left( x \mathclose{}\right)
サンプルコード5
コード
@latexify.function(reduce_assignments=True)
def f(a, b, c):
discriminant = b**2 - 4 * a * c
numerator = -b + math.sqrt(discriminant)
denominator = 2 * a
return numerator / denominator
f
出力結果
print 文なら以下のように出力されます。
f(a, b, c) = \frac{-b + \sqrt{ b^{2} - 4 a c }}{2 a}
サンプルコード6
コード
@latexify.function(use_math_symbols=True)
def greek(alpha, beta, gamma, Omega):
return alpha * beta + math.gamma(gamma) + Omega
greek
出力結果
print 文なら以下のように出力されます。
\mathrm{greek}(\alpha, \beta, \gamma, \Omega) = \alpha \beta + \Gamma \mathopen{}\left( \gamma \mathclose{}\right) + \Omega
サンプルコード7
コード
@latexify.function(use_set_symbols=True)
def f(x, y):
return x & y, x | y, x - y, x ^ y, x < y, x <= y, x > y, x >= y
f
出力結果
print 文なら以下のように出力されます。
f(x, y) = \mathopen{}\left( x \cap y, x \cup y, x \setminus y, x \mathbin{\triangle} y, x \subset y, x \subseteq y, x \supset y, x \supseteq y \mathclose{}\right)
コードはほぼ公式ドキュメンテーションから引用しています。
最近はWeb上で同様のことができるような取り組みもあるみたいなので、そちらを使ってみるのもいいかもしれません。(https://latexify.predicate.jp/)
以上です。
【Reference】
https://github.com/google/latexify_py/blob/main/docs/getting_started.md
https://github.com/google/latexify_py/blob/main/docs/parameters.md
ディスカッション
コメント一覧
まだ、コメントがありません