网淘吧来吧,欢迎您!

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

Compile LaTex & Typst into PDF with TypeTex

端点

编译 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 秒后超时

速率限制

  • 无需身份验证
  • 请尊重共享资源
  • 如需大量使用,请联系支持团队

给代理的提示

  1. 始终在访问success之前检查pdf_base64
  2. 解析错误为用户提供有用的反馈
  3. 使用简洁文档测试时——复杂文档耗时更长
  4. 缓存结果如果多次编译相同内容
  5. 包含所有依赖项辅助文件针对多文件项目

相关资源

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部
上一篇:Beszel Check 下一篇:Crypto Market

相关文章

您是本站第361570名访客 今日有7篇新文章/评论