latex2svgAPI中文文档

latex2svgAPI

一个简单的Python脚本,允许用户通过API编译LaTeX并获取SVG输出。

github仓库:https://github.com/Lucas2011wastaken/latex2svgAPI
给我个star吧求你啦(。・ω・。)
有什么问题欢迎到github上提交issues,也欢迎PR!

推荐服务器平台:Linux

注意: 因其快速的LaTeX编译速度

使用的包:chemfig, mhchem, ctex, tikz(可根据需求添加)

功能

使用原生LaTeX环境编译

通过调用预先安装的LaTeX环境(默认使用XeLaTeX),将返回最"正宗"的LaTeX输出,支持tikzchemfig等宏包。

同时会提供详细的错误输出,方便用户修正拼写错误。

中文支持

支持中文字符,只需正确放置在LaTeX环境中。例如:$\text{中文}$

精准可调的自适应边缘裁剪

通过使用Standalone文档类,自动去除白边。您也可以通过border=参数自定义边距。

宏定义支持

当引入某些宏定义时,可能需要二次编译。您可以通过设置twicecompile=true实现。

高级缓存

为特定用户提供专属缓存区。通过指定superiorcacheid不能包括非法字符(i.e. ),系统会自动保存最近一次成功的编译结果。当用户再次请求完全相同的编译内容(即相同的superiorcacheid)时,将直接返回缓存结果。

高级缓存支持便捷的管理功能(列表查看、删除等)。

superiorcacheid不能包括非法字符(i.e. /?.\@#$&()|:*;<>"

你可以在不泄露token的前提下通过每个superiorcache的UID来访问它们,另见"/superiorcache" 接口

用户控制

通过在user.json中配置,可以为特定用户开启API访问,并限制使用次数。

若用户在user.json中被配置为高级用户,该用户将拥有专属缓存区,SVG输出会被特别缓存。当用户使用相同superiorcacheid再次调用时,API将直接返回缓存结果以优化延迟。

API调用说明

端口:443

"/"

请求方法:GET

参数 类型 说明
token str 用户标识字符串,需在user.json中配置
latex str (可选)需要编译的代码,注意检查是否需要使用$包裹(如\LaTeX无需包裹),默认值为\LaTeX
border float (可选)控制输出边距,默认0。例如border=5.0
twicecompile bool (可选)需要二次编译时使用(如宏定义、聚合物等情况),默认False
superiorcacheid str (可选)用于指定高级缓存的唯一标识名(下方有详细说明)

成功:

latexout.svg

失败:

  • {"error": "Unauthorised"}: 无效token,请检查user.json配置
  • {"error": "InsufficientUsage"}: 使用次数已耗尽,请修改user.json中的maxusage
  • {"error": "LaTeXCompileFault"}: LaTeX语法错误,下方附具体错误信息
  • {"error": "File not found"}: 找不到SVG文件,请检查pdf2svg安装

示例

https://latex2svg.api.lucas2011.top/?token=gzgz&twicecompile=true&latex=$ \ce{Z }\left[\chemfig{[,0.6] W(-[:120]M)(-[4]M)(-[:-120]M)-[@{left,0.5}:-30,0.8]W(-[2]M)(-[6]M)-[@{right,0.5}:30,0.8]X-[2]Y(=[0]X)(=[4]X)-[2]X}\right]^- \polymerdelim[delimiters={()},height=2pt, depth=5pt, indice=n]{left}{right} $

结果:

https://latex2svg.api.lucas2011.top/?token=gzgz

结果:

https://latex2svg.api.lucas2011.top/?token=gzgz&superiorcacheid=benzene

结果:

除非你知道自己在做什么,否则不建议使用此类方式。 服务器将返回ID为"benzene"的高级缓存(若存在),否则返回默认编译结果:

"/superiorcache"接口

用查询参数调用以管理高级缓存,用路径参数可以通过UID方式来访问高级缓存。

查询参数

请求方法:GET

参数 类型 说明
token str 用户标识字符串
action str 操作类型:list(列出)或delete(删除)

成功响应:action=list

以网页形式列出所有高级缓存

成功响应:action=delete

删除指定缓存并返回:{"success": "FileDeleted example.svg"}

失败响应:

  • {"error": "Unauthorised"}: 无效令牌
  • {"error": "InsufficientUsage"}: 使用次数已耗尽
  • {"error": "InvalidAction"}: 不支持的操作类型
  • {"error": "DeletionFailed"}: 删除失败(可能因权限问题)
  • {"error": "FileNotFound"}: 指定缓存不存在

路径参数

通过传入UID来访问你的高级缓存,举个例子:

https://www.example.com:4000/superiorcache/d2b521cdad6799c342414a76eb1f06eb.svg

其中,d2b521cdad6799c342414a76eb1f06eb是该SVG的UID,你可以在SVG列表中很轻松的找到(请把gzgz替换成你自己的token):

https://www.example.com:4000/superiorcache?token=gzgz&action=list

部署指南

  1. 安装XeLaTeXpdf2svg
  2. 安装Python依赖:
    pip install fastapi uvicorn

配置user.json文件,示例:

{
    "gzgz": {
        "currentusage": 49,
        "maxusage": -1,
        "superior": true
    }
}

("gzgz"为token)

运行服务:

python3 main.py

尝试一下吧

测试用token:gzgz(有限额,别老玩儿)
用于演示的gzgz的superiorcache会被定期删除。

评论

  1. 博主
    Windows Edge
    中国[CN] 四川省 成都市 青羊区
    已编辑
    1 周前
    2025-3-25 18:51:29

    下面我简单喵两句:
    这次的演示服务器是ipv6 only(问就是便宜),所以支持ipv6的人直接用 https://latex2svg.api.lucas2011.top/ 就可以了;
    而对于不支持ipv6的人,我把流量走cloudflare过了一遍(相当于反向代理)使其支持了ipv4/ipv6双栈:https://32767.xyz/ 。很明显,这种迂回的方法就会慢一些,所以推荐有ipv6的推荐直接用第一种。

    以下是一个延迟测试:


    查看图片
    延迟测试

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇