Compile LaTex & Typst into PDF with TypeTex
2026-03-31
新闻来源:网淘吧
围观:19
电脑广告
手机广告
Typst & LaTeX 编译器
使用 TypeTex 编译 API 将 Typst (.typ) 和 LaTeX (.tex) 文档编译为 PDF。
API 端点
基础 URL: https://studio-intrinsic--typetex-compile-app.modal.run

端点
编译 Typst
POST /public/compile/typst
Content-Type: application/json
请求体:
{
"content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is a Typst document.",
"main_filename": "main.typ",
"auxiliary_files": {}
}
响应(成功):
{
"success": true,
"pdf_base64": "JVBERi0xLjQK..."
}
响应(失败):
{
"success": false,
"error": "error: file not found: missing.typ"
}
编译 LaTeX
POST /public/compile/latex
Content-Type: application/json
请求体:
{
"content": "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}",
"main_filename": "main.tex",
"auxiliary_files": {}
}
响应(成功):
{
"success": true,
"pdf_base64": "JVBERi0xLjQK..."
}
响应(失败):
{
"success": false,
"error": "! LaTeX Error: Missing \\begin{document}.",
"log_output": "This is pdfTeX..."
}
健康检查
GET /public/compile/health
返回{"status": "ok", "service": "public-compile"}如果服务正在运行。
使用示例
简单的 Typst 文档
import requests
import base64
response = requests.post(
"https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst",
json={
"content": """
#set page(paper: "a4", margin: 2cm)
#set text(font: "New Computer Modern", size: 11pt)
= My Document
This is a paragraph with *bold* and _italic_ text.
== Section 1
- Item 1
- Item 2
- Item 3
""",
"main_filename": "main.typ"
}
)
result = response.json()
if result["success"]:
pdf_bytes = base64.b64decode(result["pdf_base64"])
with open("output.pdf", "wb") as f:
f.write(pdf_bytes)
print("PDF saved to output.pdf")
else:
print(f"Compilation failed: {result['error']}")
简单的 LaTeX 文档
import requests
import base64
response = requests.post(
"https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/latex",
json={
"content": r"""
\documentclass[11pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath}
\title{My Document}
\author{Author Name}
\begin{document}
\maketitle
\section{Introduction}
This is a LaTeX document with math: $E = mc^2$
\end{document}
""",
"main_filename": "main.tex"
}
)
result = response.json()
if result["success"]:
pdf_bytes = base64.b64decode(result["pdf_base64"])
with open("output.pdf", "wb") as f:
f.write(pdf_bytes)
else:
print(f"Compilation failed: {result['error']}")
if result.get("log_output"):
print(f"Log: {result['log_output']}")
多文件项目 (Typst)
import requests
import base64
response = requests.post(
"https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst",
json={
"content": """
#import "template.typ": *
#show: project.with(title: "My Report")
= Introduction
#include "chapter1.typ"
""",
"main_filename": "main.typ",
"auxiliary_files": {
"template.typ": """
#let project(title: none, body) = {
set page(paper: "a4")
set text(font: "New Computer Modern")
align(center)[
#text(size: 24pt, weight: "bold")[#title]
]
body
}
""",
"chapter1.typ": """
== Chapter 1
This is the first chapter.
"""
}
}
)
result = response.json()
if result["success"]:
pdf_bytes = base64.b64decode(result["pdf_base64"])
with open("report.pdf", "wb") as f:
f.write(pdf_bytes)
包含图像
对于图像等二进制文件,请使用base64编码:
import requests
import base64
# Read and encode an image
with open("figure.png", "rb") as f:
image_base64 = base64.b64encode(f.read()).decode("utf-8")
response = requests.post(
"https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst",
json={
"content": """
#set page(paper: "a4")
= Document with Image
#figure(
image("figure.png", width: 80%),
caption: [A sample figure]
)
""",
"main_filename": "main.typ",
"auxiliary_files": {
"figure.png": image_base64
}
}
)
使用curl
# Typst compilation
curl -X POST https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/typst \
-H "Content-Type: application/json" \
-d '{
"content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is Typst.",
"main_filename": "main.typ"
}' | jq -r '.pdf_base64' | base64 -d > output.pdf
# LaTeX compilation
curl -X POST https://studio-intrinsic--typetex-compile-app.modal.run/public/compile/latex \
-H "Content-Type: application/json" \
-d '{
"content": "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}",
"main_filename": "main.tex"
}' | jq -r '.pdf_base64' | base64 -d > output.pdf
支持的功能
Typst
- 完整的Typst语言支持
- 支持导入的多文件项目
- 图像(PNG、JPG、SVG)
- 自定义字体(New Computer Modern等)
- 数学公式
- 表格和图表
- 参考文献(使用Hayagriva格式)
LaTeX
- 通过Tectonic提供完整的TeX Live发行版
- 多文件项目(\input、\include)
- BibTeX/BibLaTeX参考文献
- 自定义样式文件(.sty、.cls)
- 所有标准包(amsmath、graphicx等)
- TikZ/PGFPlots图形
- 图像(PNG、JPG、PDF、EPS)
错误处理
编译失败时,响应包含:
success: false错误: 人类可读的错误信息log_output(仅限 LaTeX): 用于调试的完整编译日志
常见错误:
- 语法错误: 检查源代码中的拼写错误
- 文件缺失: 确保所有导入/包含的文件都在
auxiliary_files - 未找到包: 大多数常用包都可用;如需添加请与支持团队联系
- 超时: 复杂文档可能在 60 秒后超时
速率限制
- 无需身份验证
- 请尊重共享资源
- 如需大量使用,请联系支持团队
给代理的提示
- 始终在访问
success之前检查pdf_base64 - 解析错误为用户提供有用的反馈
- 使用简洁文档测试时——复杂文档耗时更长
- 缓存结果如果多次编译相同内容
- 包含所有依赖项在
辅助文件针对多文件项目
相关资源
- Typst 文档
- LaTeX 维基教科书
- TypeTex- 具备AI辅助的完整文档编辑器
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Beszel Check
下一篇:Crypto Market


微信扫一扫,打赏作者吧~