⽤Python写Latex公式——handcalcs⼯具包
⽤Python写Latex公式——handcalcs⼯具包
在写论⽂或者做ppt的时候经常需要进⾏很多的公式推导,通常⼀些简单的公式我们希望可以通过程序编码直接地实现,并可以导出为pdf 供更多的应⽤。
我个⼈通常的做法是到⼀些Latex公式编辑⽹站进⾏在线编辑,当然也可以使⽤mathtype,除此之外使⽤mathematica也可以⽣成⼀些⽐较合适的公式图⽚。常⽤的在线编辑⽹址如下:
mathtype下载⽹址(官⽹付费版):
今天介绍的不是这些公式⽣成器,⽽是python的⼀个⼯具包,其通过简单的⼏⾏代码就能够⽣成⼀些公式,对于习惯于使⽤python的同学来说,可以极⼤地提⾼公式推导和论⽂写作的效率了。
在正式介绍之前先说这个⼯具包的⼏个优点(个⼈见解):
1、⼤⼩仅4M左右,安装简单、内存压⼒⼩
2、与python结合,对于熟悉python语法的⼈⾮常友好了,省时省⼒
3.、不仅可以⽣成公式还能够计算结果
4、⽀持导出公式的LaTeX代码,⽅便插⼊到LaTeX之中去
5、 可以导出为pdf
⼀、安装及源代码查看
⾮常简单的安装:
pip install handcalcs
这个⼯具包在github上开源共享了,想要深⼊研究的⼈可以看看
因为是开源⽂件,我这⾥提供⼀个下载地址给那些懒得登录githug的同学,其中包括了handcalcs的github源代码和我⾃⼰练习的demo,可以⽤作练习的demo和测试。特别建议⼤家仔细阅读README.md⽂件哦,基本功能和拓展操作都在这个⽂档中说地很明⽩了。
传送:
⼆、Latex功能简介和实现:
我使⽤的是jupyter notebook编辑器,在jupyter中使⽤handcalcs库个⼈感觉可能更⽅便。
1、基础应⽤:⽣成Latex公式:
der
%%render
a =2
b =3
c =2*a+b/3
注意:
1. %%render这种magic⽅法,通常其必须在第⼀⾏中显⽰,所以尽量在%%render的后⾯进⾏注释,⽽且导⼊函数库也只有在上⽅的
cell导⼊
结果:
2、基础应⽤——在⽅程中调⽤使⽤
# 基础⽤法2——在⽅程中进⾏显⽰
from handcalcs.decorator import handcalc
@handcalc(left="",right="",jupyter_display=True)
def my_calc(x,y,z):
a =2*x/y
b =3*a
c =(a+b)/z
return locals()
my_calc(1,1,1)
注意:
1. 定义函数前使⽤@handcalc,在函数末尾返回return locals()
2. 通常需要设置jupyter_display=True来使得jupyter可以将LaTeX公式渲染为图像化
结果:
3、基础应⽤——复杂公式的编写
为了避免忘记%%render这类magic⽅法只能在第⼀⾏定义的特点,我将每⼀个jupyter⽂件中的cell单独形成⼀段代码:
from math import sqrt,asin,sin
der
第⼀个较为复杂函数的demo:
%%render
#symbolic
a =1
b =4
c =3数字推盘最快解法图25步
x =(-b+sqrt(b**2-4*a*c))/(2*a)
结果:
第⼆个较为复杂函数的demo:
%%render
#symbolic
f = c/a + b #Comment
g = c*f / a # Comment
d = sqrt(a / b)+ asin(sin(b / c))+(a/b)**(0.5)+ sqrt((a*b + b*c)/(b**2))+ sin(a/b)#Comment
结果:
4、基础应⽤——条件输出LaTeX
%%render
#Symbolic
Mag_1 =100
if Mag_1<10000:Mag = Mag_1+100
python在线编辑器python3
else:Mag = Mag_1-100
结果:
%%render
x =2getsup英语什么意思
if x <1: b = x
elif x >1: b = x*1; c = b
else: b = x*1; c = b #Comment
结果:
注意:
1. 如果使⽤了下⾓标在显⽰的时候数字可能会被识别为⾓标,⽐如Mag_01 < 50000会认为_后⾯的字符都是⾓标
2. 在判断语句中如果有两个以上的未知数⽐如下⾯第⼆个cell中的b和c,再使⽤#symbolic的话会报错
5、基础应⽤——积分公式
from scipy import integrate
der
%%render
#parameters
a =0.1
b =0.2
def F(x):
return x**2+10**x
%%render
g = integrate.quad(F,a,b)
结果视图:
三、进阶之格式转换:
1. 使⽤#parameter按照三列的格式显⽰结果,不显⽰过程公式
%%render
a =1
b =4
c =3variable words
x =(-b+sqrt(b**2-4*a*c))/(2*a)
不使⽤#parameter:
使⽤#parameter之后:
2. 使⽤#symbolic只显⽰参数公式
%%render
#symbolic
a =1
b =4
c =3
x =(-b+sqrt(b**2-4*a*c))/(2*a)
不使⽤#symbolic:
使⽤#symbolic:
3. 公式的横纵排列显⽰⽅法:#Long和#short
使⽤上⾯积分的公式表达:
使⽤#Long:
使⽤·#short`
4. 输出LaTeX公式,使⽤%%tex⽽⾮%%render就⾏了
%%tex
a =2
b =3
c =2*a + b/3
binary加密
结果:
\begin{aligned}
a &= 2\;
\\[10pt]
b &= 3\;
\\[10pt]
c &= 2 \cdot a + \frac{ b }{ 3 } = 2 \cdot 2 + \frac{ 3 }{ 3 } &= 5.0
\end{aligned}
postgresql连接工具
\]
5. 希腊字母和特殊字符
der
import forallpeople
%%render
alpha  =0.9#α
beta_x =1.6#β加上下标x
theta_2 =1#θ加加下标2
结果:
编写不易,如果有⽤请各位点个赞⽀持⼀下呗^^,也欢迎各位留⾔讨论啊

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。