PillowLaTeX

June 4, 2025 · View on GitHub

用于快速渲染大模型返回的latex表达式,支持40余种函数表达式及10余种环境以及300余种关键词替换

特点

轻量、易上手、快速、可自定义、纯python实现、支持切割渲染(既可以将表达式渲染成多个Image,供开发者手动拼接,以实现特定环境下的latex换行)

快速上手

使用pip:

pip install pillowmd

然后在代码中使用

import pillowlatex as plax
# 导入

latex = r"表达式示例:sin^2(x\times\pi)"
# 表达式

# font = MixFont( # 混合字体
#     settings.FONT_PATH.parent / "STIXTwoMath-Regular.ttf", # 主字体
#     second_fonts = [ # 备用字体
#         settings.FONT_PATH.parent / "yahei.ttf",
#     ],
#     size = 50, # 字体大小
#     font_y_correct = {
#         "yahei.ttf": +15 # 偏移修正
#     }
# )

# 字体定义(可选)

img = plax.RenderLaTeX(
    GetLaTeXObjs(latex), # 对latex进行解析
    color = (255, 0, 0),
    # font = font
)

# 返回LaTeXImage对象

img.show()

说明: LaTeXImage转化为PIL.Image的方式为

img: LaTeXImage = ...
pilimage = img.img

需要注意的是,imgsize,长和宽都比pilimage2*img.space

已支持函数及大概效果

函数效果
frac分数渲染
tfrac更小的分数
cfrac同frac
sqrt根号渲染(可选开根数)
dot一阶导数渲染
ddot二阶导数渲染
pmode模运算
sideset侧标
hat带帽ˆ
check带帽ˇ
grave带帽`
acute带帽´
tilde带帽~
breve带帽˘
bar带帽¯
vec带帽
not叠加
widetilde~覆盖
widehatˆ覆盖
overleftarrow覆盖
overrightarrow覆盖
overline上划线覆盖
underline下划线覆盖
overbrace上花括号覆盖
underbrace下花括号覆盖
overset上标渲染
underset下标渲染
stackrel堆叠渲染
overleftrightarrow左右箭头覆盖
xleftarrow左箭头覆盖
xrightarrow右箭头覆盖
text修改下一个元素类型为text
binom二项式渲染
textstyle修改下一个元素类型为text
unicode渲染unicode文本

已支持替换及大概效果

元素替换
|替换为字符∥
(替换为字符(
)替换为字符)
[替换为字符[
]替换为字符]
{替换为字符{
}替换为字符}
lt替换为字符<
gt替换为字符>
leq替换为字符≤
geq替换为字符≥
neq替换为字符≠
bmod替换为字符mod
gcd替换为字符gcd
lim替换为字符lim
max替换为字符max
min替换为字符min
log替换为字符log
ln替换为字符ln
lg替换为字符lg
exp替换为字符exp
sup替换为字符sup
inf替换为字符inf
limsup替换为字符lim sup
liminf替换为字符lim inf
dim替换为字符dim
ker替换为字符ker
int替换为字符∫
iint替换为字符∬
iiint替换为字符∭
oint替换为字符∮
sum替换为字符∑
prod替换为字符∏
coprod替换为字符∐
bigcap替换为字符⋂
bigcup替换为字符⋃
bigvee替换为字符⋁
bigwedge替换为字符⋀
lfloor替换为字符⌊
rfloor替换为字符⌋
lceil替换为字符⌈
rceil替换为字符⌉
langle替换为字符⟨
rangle替换为字符⟩
to替换为字符→
sin替换为字符sin
cos替换为字符cos
tan替换为字符tan
cot替换为字符cot
sec替换为字符sec
csc替换为字符csc
arcsin替换为字符arcsin
arccos替换为字符arccos
arctan替换为字符arctan
arccot替换为字符arccot
arcsec替换为字符arcsec
arccsc替换为字符arccsc
sinh替换为字符sinh
cosh替换为字符cosh
tanh替换为字符tanh
coth替换为字符coth
sech替换为字符sech
csch替换为字符csch
times替换为字符×
div替换为字符÷
pm替换为字符±
mp替换为字符∓
triangleleft替换为字符◁
triangleright替换为字符▷
cdot替换为字符⋅
setminus替换为字符∖
star替换为字符★
ast替换为字符∗
cup替换为字符∪
cap替换为字符∩
sqcup替换为字符⊔
sqcap替换为字符⊓
vee替换为字符∨
wedge替换为字符∧
circ替换为字符○
bullet替换为字符•
oplus替换为字符⊕
omuinus替换为字符⊖
odot替换为字符⊙
oslash替换为字符⊘
otimes替换为字符⊗
bigcirc替换为字符◯
diamond替换为字符◇
uplus替换为字符⊎
bigtriangleup替换为字符△
bigtriangledown替换为字符▽
lhd替换为字符⊲
rhd替换为字符⊳
unlhd替换为字符⊴
unrhd替换为字符⊵
amalg替换为字符⨿
wr替换为字符≀
dagger替换为字符†
ddagger替换为字符‡
le替换为字符≤
ge替换为字符≥
equiv替换为字符≡
ll替换为字符≪
gg替换为字符≫
doteq替换为字符≐
prec替换为字符≺
succ替换为字符≻
sim替换为字符∼
preceq替换为字符≼
succeq替换为字符≽
simeq替换为字符≃
approx替换为字符≈
subset替换为字符⊂
supset替换为字符⊃
subseteq替换为字符⊆
supseteq替换为字符⊇
sqsubset替换为字符⊏
sqsupset替换为字符⊐
sqsubseteq替换为字符⊑
sqsupseteq替换为字符⊒
cong替换为字符≅
join替换为字符⋈
bowtie替换为字符⋈
propto替换为字符∝
in替换为字符∈
ni替换为字符∋
vdash替换为字符⊢
dashv替换为字符⊣
models替换为字符⊨
mid替换为字符∣
parallel替换为字符∥
perp替换为字符⊥
smile替换为字符⌣
frown替换为字符⌢
asymp替换为字符≍
notin替换为字符∉
ne替换为字符≠
gets替换为字符←
longleftarrow替换为字符⟵
longrightarrow替换为字符⟶
uparrow替换为字符↑
downarrow替换为字符↓
updownarrow替换为字符↕
leftrightarrow替换为字符↔
Uparrow替换为字符⇑
Downarrow替换为字符⇓
Updownarrow替换为字符⇕
longleftrightarrow替换为字符⟷
Leftarrow替换为字符⇐
Longleftarrow替换为字符⟸
Rightarrow替换为字符⇒
Longrightarrow替换为字符⟹
Leftrightarrow替换为字符⇔
Longleftrightarrow替换为字符⟺
mapsto替换为字符↦
longmapsto替换为字符⟼
nearrow替换为字符↗
searrow替换为字符↘
swarrow替换为字符↙
nwarrow替换为字符↖
hookleftarrow替换为字符↩
hookrightarrow替换为字符↪
rightleftharpoons替换为字符⇌
iff替换为字符⇔
leftharpoonup替换为字符↼
leftharpoondown替换为字符↽
rightharpoonup替换为字符⇀
rightharpoondown替换为字符⇁
because替换为字符∵
therefore替换为字符∴
dots替换为字符…
cdots替换为字符⋯
vdots替换为字符⋮
ddots替换为字符⋱
forall替换为字符∀
exists替换为字符∃
nexists替换为字符∄
Finv替换为字符Ⅎ
neg替换为字符¬
prime替换为字符′
emptyset替换为字符∅
infty替换为字符∞
nabla替换为字符∇
triangle替换为字符△
Box替换为字符□
Diamond替换为字符◇
bot替换为字符⊥
top替换为字符⊤
angle替换为字符∠
measuredangle替换为字符∡
sphericalangle替换为字符∢
surd替换为字符√
diamondsuit替换为字符♢
heartsuit替换为字符♡
clubsuit替换为字符♣
spadesuit替换为字符♠
flat替换为字符♭
natural替换为字符♮
sharp替换为字符♯
alpha替换为字符α
beta替换为字符β
gamma替换为字符γ
delta替换为字符ℸ
epsilon替换为字符ε
varepsilon替换为字符ϵ
zeta替换为字符ζ
eta替换为字符η
theta替换为字符θ
vartheta替换为字符ϑ
iota替换为字符ι
kappa替换为字符κ
lambda替换为字符λ
mu替换为字符μ
nu替换为字符ν
xi替换为字符ξ
pi替换为字符π
varpi替换为字符ϖ
rho替换为字符ρ
varrho替换为字符ϱ
sigma替换为字符σ
varsigma替换为字符ς
tau替换为字符τ
upsilon替换为字符υ
phi替换为字符φ
varphi替换为字符ϕ
chi替换为字符χ
psi替换为字符ψ
omega替换为字符ω
Gamma替换为字符Γ
Delta替换为字符Δ
Theta替换为字符Θ
Lambda替换为字符Λ
Xi替换为字符Ξ
Pi替换为字符Π
Sigma替换为字符Σ
Upsilon替换为字符Υ
Phi替换为字符Φ
Psi替换为字符Ψ
Omega替换为字符Ω
hbar替换为字符ℏ
imath替换为字符ı
jmath替换为字符ȷ
ell替换为字符ℓ
Re替换为字符ℜ
Im替换为字符ℑ
aleph替换为字符ℵ
beth替换为字符ℶ
gimel替换为字符ℷ
wp替换为字符℘
mho替换为字符℧
backepsilon替换为字符϶
partial替换为字符∂
eth替换为字符ð
Bbbk替换为字符𝕜
complement替换为字符∁
circledS替换为字符Ⓢ
S替换为字符§

已支持环境

环境
matrix
align*
align
array
eqnarray
bmatrix
pmatrix
vmatrix
Vmatrix
Bmatrix
cases

会被直接屏蔽|返回原图的函数

函数效果
mathrm返回原图
operatorname返回原图

暂不支持的内容(屏蔽)

内容
mathbf
mathbb
tiny
scriptsize
footnotesize
small
normalsize
large
Large
LARGE
huge
Huge
nolimits
mathop
ce

其他支持

内容是否支持
环境嵌套支持
left与right支持
上标下标位置修改支持