Typst & LaTeX Compiler
Compile Typst and LaTeX documents to PDF via API. Send source code, get back a PDF.
- License 许可
- MIT
- 最近更新
- 2026-08-23
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- Typst & LaTeX Compiler
- metadata
- { "clawdbot": { "config": { "stateDirs": [], "requiredEnv": [] } } }
- description
- Compile Typst and LaTeX documents to PDF via API. Send source code, get back a PDF.
02 资源文件 4
- 参考文档_meta.json304 B
- 脚本examples/compile_latex.py3.3 KB
- 脚本examples/compile_typst.py2.4 KB
- 参考文档openapi.yaml4.5 KB
03 SKILL.md 正文
Typst & LaTeX Compiler
Compile Typst (.typ) and LaTeX (.tex) documents to PDF using the TypeTex compilation API.
API Endpoint
Base URL: https://studio-intrinsic--typetex-compile-app.modal.run
Endpoints
Compile Typst
POST /public/compile/typst
Content-Type: application/json
Request Body:
{
"content": "#set page(paper: \"a4\")\n\n= Hello World\n\nThis is a Typst document.",
"main_filename": "main.typ",
"auxiliary_files": {}
}
Response (Success):
{
"success": true,
"pdf_base64": "JVBERi0xLjQK..."
}
Response (Failure):
{
"success": false,
"error": "error: file not found: missing.typ"
}
Compile LaTeX
POST /public/compile/latex
Content-Type: application/json
Request Body:
{
"content": "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}",
"main_filename": "main.tex",
"auxiliary_files": {}
}
Response (Success):
{
"success": true,
"pdf_base64": "JVBERi0xLjQK..."
}
Response (Failure):
{
"success": false,
"error": "! LaTeX Error: Missing \\begin{document}.",
"log_output": "This is pdfTeX..."
}
Health Check
GET /public/compile/health
Returns {"status": "ok", "service": "public-compile"} if the service is running.
Usage Examples
Simple Typst Document
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']}")
Simple LaTeX Document
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']}")
Multi-File Project (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)
Including Images
For binary files like images, base64-encode them:
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
}
}
)
Using 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
Supported Features
Typst
- Full Typst language support
- Multi-file projects with imports
- Images (PNG, JPG, SVG)
- Custom fonts (New Computer Modern, etc.)
- Math equations
- Tables and figures
- Bibliography (using Hayagriva format)
LaTeX
- Full TeX Live distribution via Tectonic
- Multi-file projects (\input, \include)
- BibTeX/BibLaTeX bibliography
- Custom style files (.sty, .cls)
- All standard packages (amsmath, graphicx, etc.)
- TikZ/PGFPlots graphics
- Images (PNG, JPG, PDF, EPS)
Error Handling
When compilation fails, the response includes:
success: falseerror: Human-readable error messagelog_output(LaTeX only): Full compilation log for debugging
Common errors:
- Syntax errors: Check your source code for typos
- Missing files: Ensure all imported/included files are in
auxiliary_files - Package not found: Most common packages are available; contact support for additions
- Timeout: Complex documents may timeout after 60 seconds
Rate Limits
- No authentication required
- Please be respectful of shared resources
- For high-volume usage, contact support
Tips for Agents
- Always check
successbefore accessingpdf_base64 - Parse errors to provide helpful feedback to users
- Use minimal documents when testing - complex documents take longer
- Cache results if compiling the same content multiple times
- Include all dependencies in
auxiliary_filesfor multi-file projects
Related Resources
- Typst Documentation
- LaTeX Wikibook
- TypeTex - Full document editor with AI assistance
04 同仓库更多 Skills
crowd-prompting
A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.
dilemm-ai
Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).
arxiv-paper-reviews
Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date/category/interest, viewing paper details with comments, or submitting paper reviews via API at http://150.158.152.82:8000.
arxiv-paper-reviews
Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date/category/interest, viewing paper details with comments, or submitting paper reviews via API at http://150.158.152.82:8000.
git-summary
Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.
agent-constitution
Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.