\usepackage{claude}

API LaTeX pour Claude

Combinez le SDK Python d'Anthropic avec FormaTeX pour générer des PDF professionnels entièrement grâce à l'IA. Claude écrit le LaTeX ; FormaTeX le compile : deux appels API, un PDF.

\section{Pourquoi Claude}

Pourquoi Claude + FormaTeX ?

Claude écrit du LaTeX valide

Claude excelle à produire du LaTeX syntaxiquement correct, avec les bonnes classes de document, les bons paquets et la bonne notation mathématique.

FormaTeX compile de façon fiable

FormaTeX exécute une distribution TeX Live complète côté serveur. pdflatex et xelatex sont disponibles sur toutes les offres, lualatex et latexmk à partir de Pro, le tout via un seul appel REST.

Aucune installation TeX locale

Aucune installation de TeX Live sur votre machine ou votre serveur. La compilation est entièrement gérée, dans des environnements isolés et éphémères pour chaque requête.

Résultat de qualité production

Obtenez des PDF au pixel près, avec une césure, un crénage et un rendu des polices corrects, avec la même qualité qu'une installation LaTeX locale.

\section{Étape 1}

Étape 1 : générer le LaTeX avec Claude

Donnez à Claude un message système lui demandant de répondre uniquement avec du code source LaTeX brut. Le prompt system est essentiel : sans lui, Claude peut entourer la sortie de blocs markdown ou ajouter du texte explicatif.

step1_generate.py
import anthropic

client = anthropic.Anthropic(api_key="your-anthropic-key")

SYSTEM_PROMPT = """You are a LaTeX expert. When asked to create a document,
respond ONLY with valid LaTeX source code — no markdown fences, no explanation.
Always include \\documentclass, preamble, and \\begin{document}...\\end{document}."""

def generate_latex(prompt: str) -> str:
    """Ask Claude to write a complete LaTeX document."""
    message = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=4096,
        system=SYSTEM_PROMPT,
        messages=[{"role": "user", "content": prompt}],
    )
    return message.content[0].text

\section{Étape 2}

Étape 2 : compiler en PDF avec FormaTeX

Transmettez directement la chaîne LaTeX renvoyée par Claude au point de terminaison de compilation de FormaTeX. La réponse contient les octets bruts du PDF : enregistrez-les sur disque ou diffusez-les au client.

step2_compile.py
import requests

FORMATEX_API_KEY = "your-formatex-key"
FORMATEX_URL = "https://api.formatex.io/api/v1/compile"

def compile_to_pdf(latex_source: str, engine: str = "pdflatex") -> bytes:
    """Send LaTeX source to FormaTeX and return PDF bytes."""
    response = requests.post(
        FORMATEX_URL,
        headers={
            "X-API-Key": FORMATEX_API_KEY,
            "Content-Type": "application/json",
        },
        json={"latex": latex_source, "engine": engine},
        timeout=30,
    )
    response.raise_for_status()
    return response.content

\section{Exemple complet}

Exemple complet

Le script complet de bout en bout combine les deux étapes. Appelez generate_and_compile avec n'importe quel prompt en langage naturel et obtenez un fichier PDF sur disque.

claude_formatex.py
import anthropic
import requests

anthropic_client = anthropic.Anthropic(api_key="your-anthropic-key")
FORMATEX_URL = "https://api.formatex.io/api/v1/compile"
FORMATEX_API_KEY = "your-formatex-key"

SYSTEM_PROMPT = """You are a LaTeX expert. Respond ONLY with valid LaTeX source.
Always include \\documentclass, full preamble, and \\begin{document}...\\end{document}."""

def generate_and_compile(prompt: str, engine: str = "pdflatex") -> bytes:
    # Step 1: Claude writes the LaTeX
    message = anthropic_client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=4096,
        system=SYSTEM_PROMPT,
        messages=[{"role": "user", "content": prompt}],
    )
    latex_source = message.content[0].text

    # Step 2: FormaTeX compiles to PDF
    response = requests.post(
        FORMATEX_URL,
        headers={
            "X-API-Key": FORMATEX_API_KEY,
            "Content-Type": "application/json",
        },
        json={"latex": latex_source, "engine": engine},
        timeout=30,
    )
    response.raise_for_status()
    return response.content


# Generate a research summary PDF
pdf_bytes = generate_and_compile(
    "Write a 2-page LaTeX article summarising transformer architecture, "
    "including the self-attention equation and a simple diagram using TikZ."
)

with open("transformer_summary.pdf", "wb") as f:
    f.write(pdf_bytes)

print("PDF saved to transformer_summary.pdf")

\end{claude}

Générer des PDF avec Claude + FormaTeX

Obtenez une clé API FormaTeX, copiez l'exemple complet ci-dessus et livrez des PDF générés par IA en quelques minutes.