如何在SVG/EPS/PDF矢量图中让数学符号以文本形式渲染?
解决Matplotlib矢量图中LaTeX数学符号无法选中搜索的问题
当Matplotlib默认渲染LaTeX数学符号时,符号会被转换为矢量路径而非可编辑文本对象,导致无法选中搜索。以下是两种可行的解决方案:
方案一:启用LaTeX原生渲染
通过配置Matplotlib调用系统LaTeX环境渲染所有文本,生成的数学符号会以可编辑文本形式存在于矢量图中。
操作步骤:
- 确保系统已安装LaTeX环境(如TeX Live、MiKTeX),且包含
cm-super包(用于生成Type1字体,避免位图化符号)。 - 在代码中添加Matplotlib配置,启用LaTeX渲染并设置字体参数:
import numpy as np import matplotlib.pyplot as plt # 配置Matplotlib使用LaTeX渲染所有文本 plt.rcParams.update({ "text.usetex": True, "font.family": "serif", "font.serif": ["Computer Modern Roman"], # 匹配LaTeX默认字体 }) x_list = np.linspace(-10,10,num=128) y = list(map(lambda x: (x**2 + x + 1), x_list)) plt.plot(y, label="$\Psi_{example}$") plt.legend() plt.xticks(np.linspace(0, 128, num=8), map(round, np.linspace(-10, 10, num=8), [0] * 8)) plt.savefig("./example.pdf")
保存后打开PDF,$\Psi$符号将和普通文本一样可选中、搜索。
方案二:使用PGF后端保存
PGF是LaTeX原生绘图格式,Matplotlib导出的PGF文件嵌入LaTeX文档时,所有文本(包括数学符号)会保持完全可编辑状态,也可通过LaTeX编译为PDF。
修改代码保存逻辑:
# 替换原plt.savefig语句 plt.savefig("./example.pgf")
后续可直接在LaTeX文档中用\input{example.pgf}嵌入该文件,或通过LaTeX编译生成可编辑的PDF。
内容的提问来源于stack exchange,提问作者Abe Brandsma
相关产品推荐
相关产品推荐

