仅需1行代码实现专业、美观的Latex公式,无需查阅学习任何Latex公式
效果目录
前言
LaTex公式一直使得很多写论文的小伙伴们发愁,也会耗费很多写Latex的同学时间去琢磨$…$或$$…$$之间的爱恨情仇
至此,一款handcalcs的工具包诞生了,生成LaTeX公式不再需要担心头发了!
让我们一起用简单的python语法来写出优美、复杂的LaTex公式吧!
注!!!:本教程将参照Github官网的顺序进行讲解
I Installing 安装pip install handcalcs
# 如果需要国内镜像,使用如下代码即可
!pip install handcalcs -i https://pypi.douban.com/simple
II Usage 用法
2.1 Jupyter cell 单元魔法╰(‵□′)╯
在Jupyter中magic函数主要包含两大类,大家想了解具体魔法函数可以评论留言:
一类是行魔法(Line magic)前缀为%
一类是单元魔法(Cell magic)前缀为%%;
导入
import handcalcs.render
注:这将同时导入%%tex 和 %%render两种单元魔法
然后,在要使用渲染的任何单元格中handcalcs,只需在单元格顶部使用render 即可实现单元魔法:
%%render
让我们看个例子
%%render
a = 2
b = 3
c = 2*a + b/3
如上图呈现后,如果您的系统上安装了Latex环境,则可以将notebook导出为PDF。
那我想得到这段呈现的LaTex代码呢?我可不想只能notebook中写LaTex公式啊,我的技术报告、研究成果或论文可是要在.Doc,.Docx之类的Word文档里写出来
魔法!召唤出上述呈现的LaTex代码:
%%tex
a = 2
b = 3
c = 2*a + b/3
在此,你可能会遇到这样的问题:
UsageError: Cell magic
%%tex
not found.
笔者发现了一种解决方法,不需要再给你的Jupyter安装Tex等
\begin{aligned}
a &= 2 \;\textit{ }\\[10pt]
b &= 3 \;\textit{ }\\[10pt]
c &= 2 \cdot a + \frac{ b }{ 3 } = 2 \cdot 2 + \frac{ 3 }{ 3 } &= 5.0 \;\textit{ }
\end{aligned}
这样我们便得到上述呈现的LaTex代码,有了它,无论你想写在那里,都是*的,好健壮的代码!
(Github上可没提到这个问题的解决办法:)
2.2 decorator on functions 函数修饰符
导入
from handcalcs import handcalc
from math import sqrt
使用
@handcalc(jupyter_display = True)
def my_calc(x:float,y:float,z:float):
a = 2 * x
b = 3 * a / z + sqrt(a + y / 2)
c = a + b
vals = my_calc(2.3,3.2,1.2)
通过这种方式,您可以@handcalc()用来动态生成Latex代码,以在Jupyter和非Jupypter Python环境(例如streamlit)中显示。
有没有发现上述LaTeX的展示都是一行一行的出现,可不可以定义展示的行和列数?
3.1 行转列
只需要在%%render后加params,即可实现列的展示
%%render params
3.2 调整精度
在%%render params 数字来指示要显示的小数精度
%%render params 6
3.3 长短
可长可短的展示
%%render long
%%render short
3.4 省略具体数字
在上面的LaTex中,我们发现这样的%%render会跟踪数据,进行实时计算,并给出结果,但有时我们仅需公式即可。
%%render symbolic
3.5 集成sympy
导入
import sympy as sp
import handcalcs.render
使用仅需下述代码即可实现
%%render sympy
IV 特征
4.1 快速显示许多变量的值
不需要更多的print声明。只需将变量放到一行上,它们就会全部显示出来。
%%render
4.2 获取LaTex代码,无需render
只需在单元格前加%%tex即可实现
%%tex
4.3 下标
在LaTex中我们还需要_{}的方法来增加下标,而在%render下仅需_即可实现下标的添加
%%render
a = 32
rate_annual = 0.02
principal_start_year = 3000
%%render
b_x_3_5_3 = 23
4.4 希腊字母
包含希腊字母(例如“ pi”,“ upsilon”,“ eta”等)作为字符串或子字符串的任何变量名称都将被相应的Latex代码代替,以表示该希腊字母。
- 使用小写字母作为变量名将使小写希腊字母。
- 为变量使用大写字母名称会将其呈现为大写希腊字母。
%%render
theta = 34
alpha = 12
pis = theta + alpha
from math import sin,radians
%%render
Ommega_sigma = 2*theta + sin(radians(alpha * 2))
4.5 注释
如果你会给python代码注释的话,你也会在LaTex中实现注释了,仅需正常的python注释#即可
%%render
theta = 34 + 3j # Complex numbers work too!
alpha = 12
psi = theta + alpha
Omega_sigma = 2 * theta /3 #This is an approximation
4.6 条件语句
在%%render下,按照正常的python条件语句即可实现LaTex版的条件生成
4.7 数值积分
import handcalcs.render
from scipy.integrate import quad
def f(x):
return x**3/2 + 5*x**2 + 3*x
%%render
a = 2
b = 6
z = quad(f,a,b)
结语:
至此,我们1行代码即可实现LaTex公式的编写(%%render),且可以得到对应的LaTex代码(%%tex)