LaTex公式——1行代码实现(handcalcs)

Latex公式——1行代码实现

仅需1行代码实现专业、美观的Latex公式,无需查阅学习任何Latex公式

效果

LaTex公式——1行代码实现(handcalcs)_第1张图片
图片源自handcalcs Github官网

目录

  • Latex公式——1行代码实现
  • 效果
  • 前言
  • I Installing 安装
  • II Usage 用法
    • 2.1 Jupyter cell 单元魔法╰(‵□′)╯
    • 2.2 decorator on functions 函数修饰符
  • III Override tags 自定义
    • 3.1 行转列
    • 3.2 调整精度
    • 3.3 长短
    • 3.4 省略具体数字
    • 3.5 集成sympy
  • IV 特征
    • 4.1 快速显示许多变量的值
    • 4.2 获取LaTex代码,无需render
    • 4.3 下标
    • 4.4 希腊字母
    • 4.5 注释
    • 4.6 条件语句
    • 4.7 数值积分


前言

LaTex公式一直使得很多写论文的小伙伴们发愁,也会耗费很多写Latex的同学时间去琢磨$…$或$$…$$之间的爱恨情仇

至此,一款handcalcs的工具包诞生了,生成LaTeX公式不再需要担心头发了!

让我们一起用简单的python语法来写出优美、复杂的LaTex公式吧!

  注!!!:本教程将参照Github官网的顺序进行讲解

I Installing 安装

pip install handcalcs
# 如果需要国内镜像,使用如下代码即可
!pip install handcalcs -i https://pypi.douban.com/simple

LaTex公式——1行代码实现(handcalcs)_第2张图片

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公式——1行代码实现(handcalcs)_第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等
LaTex公式——1行代码实现(handcalcs)_第4张图片

\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)

LaTex公式——1行代码实现(handcalcs)_第5张图片
通过这种方式,您可以@handcalc()用来动态生成Latex代码,以在Jupyter和非Jupypter Python环境(例如streamlit)中显示。

III Override tags 自定义

有没有发现上述LaTeX的展示都是一行一行的出现,可不可以定义展示的行和列数?

3.1 行转列

只需要在%%render后加params,即可实现列的展示

%%render params

LaTex公式——1行代码实现(handcalcs)_第6张图片

3.2 调整精度

在%%render params 数字来指示要显示的小数精度

%%render params 6

LaTex公式——1行代码实现(handcalcs)_第7张图片

3.3 长短

可长可短的展示

%%render long
%%render short

LaTex公式——1行代码实现(handcalcs)_第8张图片

3.4 省略具体数字

在上面的LaTex中,我们发现这样的%%render会跟踪数据,进行实时计算,并给出结果,但有时我们仅需公式即可。

%%render symbolic

LaTex公式——1行代码实现(handcalcs)_第9张图片

3.5 集成sympy

导入

import sympy as sp
import handcalcs.render

使用仅需下述代码即可实现

%%render sympy

LaTex公式——1行代码实现(handcalcs)_第10张图片

IV 特征

4.1 快速显示许多变量的值

不需要更多的print声明。只需将变量放到一行上,它们就会全部显示出来。

%%render

LaTex公式——1行代码实现(handcalcs)_第11张图片

4.2 获取LaTex代码,无需render

只需在单元格前加%%tex即可实现

%%tex

LaTex公式——1行代码实现(handcalcs)_第12张图片

4.3 下标

在LaTex中我们还需要_{}的方法来增加下标,而在%render下仅需_即可实现下标的添加

%%render
a = 32
rate_annual = 0.02
principal_start_year = 3000
%%render
b_x_3_5_3 = 23

LaTex公式——1行代码实现(handcalcs)_第13张图片

4.4 希腊字母

包含希腊字母(例如“ pi”,“ upsilon”,“ eta”等)作为字符串或子字符串的任何变量名称都将被相应的Latex代码代替,以表示该希腊字母。

  1. 使用小写字母作为变量名将使小写希腊字母。
  2. 为变量使用大写字母名称会将其呈现为大写希腊字母。
%%render
theta = 34
alpha = 12
pis = theta + alpha
from math import sin,radians
%%render
Ommega_sigma = 2*theta + sin(radians(alpha * 2))

LaTex公式——1行代码实现(handcalcs)_第14张图片

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

LaTex公式——1行代码实现(handcalcs)_第15张图片

4.6 条件语句

在%%render下,按照正常的python条件语句即可实现LaTex版的条件生成
LaTex公式——1行代码实现(handcalcs)_第16张图片

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)

LaTex公式——1行代码实现(handcalcs)_第17张图片

结语:
至此,我们1行代码即可实现LaTex公式的编写(%%render),且可以得到对应的LaTex代码(%%tex)

你可能感兴趣的:(工具向,python,latex,数学建模,字符串)