\ai{pdf-generation}
استخدم GPT-4 أو Claude أو أي LLM لتوليد شيفرة LaTeX المصدرية، ثم جمّعها إلى ملف PDF احترافي عبر FormaTeX API. استدعاءان لواجهة API، وأنواع مستندات غير محدودة، ومخرجات دقيقة إلى أدق بكسل.
\section{النمط}
النمط بسيط: اطلب من LLM إنتاج شيفرة LaTeX المصدرية الخام، ثم أرسلها بطلب POST إلى نقطة نهاية التجميع في FormaTeX. يتولى LLM بنية المستند ومحتواه، بينما يتولى FormaTeX خط معالجة التجميع الكامل في TeX Live. تحصل على ملف PDF بجودة إنتاجية دون إدارة تثبيت LaTeX بنفسك.
LLM يكتب LaTeX
تنتج نماذج LLM الحديثة شيفرة LaTeX سليمة نحويًا بصورة موثوقة، خاصة مع موجّه نظام مركّز. تعمل GPT-4o وClaude Opus وGemini Pro جميعها بشكل جيد.
FormaTeX يجمّع
POST the LaTeX string to https://api.formatex.io/api/v1/compile with your API key. Choose the engine: pdflatex and xelatex on every plan, lualatex and latexmk on Pro and above. Receive raw PDF bytes in the response.
احفظ ملف PDF أو مرّره كتدفق
اكتب بايتات الاستجابة في ملف، أو مرّرها كتدفق إلى تنزيل في المتصفح، أو ارفعها إلى التخزين السحابي، بحسب ما يتطلبه سير عملك.
\section{LaTeX مقابل HTML}
| المعيار | LaTeX + FormaTeX | HTML إلى PDF |
|---|---|---|
| الرياضيات | عرض أصلي للمعادلات عبر amsmath | حل بديل عبر MathJax، وخطوط غير متسقة |
| الطباعة | تقسيم أسطر Knuth–Plass وتباعد حروف احترافي | عرض بجودة المتصفح، متغيّر |
| تخطيط الصفحة | هوامش وترويسات وتذييلات دقيقة، وأعمدة متعددة | تقريب عبر CSS، وخصوصيات في الطباعة |
| Cross-references | \ref, \cite, \label — automatic numbering | يدوي أو هش يعتمد على JS |
| المستندات الطويلة | فصول وأقسام وفهرس محتويات وقائمة مراجع | يصعب إدارتها على نطاق واسع |
| موثوقية LLM | تنتج نماذج LLM شيفرة LaTeX صالحة بثبات أكبر | تنتج نماذج LLM شيفرة CSS مضمّنة غير متسقة |
\section{مثال بلغة Python}
مثال كامل وقابل للتشغيل باستخدام OpenAI Python SDK ومكتبة requests. استدعِ generate_pdf() بأي طلب بلغة طبيعية لتحصل على ملف .pdf على القرص.
import openai
import requests
openai_client = openai.OpenAI(api_key="your-openai-key")
FORMATEX_URL = "https://api.formatex.io/api/v1/compile"
FORMATEX_API_KEY = "your-formatex-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, a complete preamble, and
\\begin{document}...\\end{document}. Use standard packages only."""
def generate_latex(prompt: str) -> str:
"""Ask GPT-4 to write a complete LaTeX document."""
response = openai_client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": prompt},
],
temperature=0.2, # Low temperature for deterministic LaTeX output
)
return response.choices[0].message.content
def compile_to_pdf(latex_source: str, engine: str = "pdflatex") -> bytes:
"""Compile LaTeX source with 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
def generate_pdf(prompt: str, output_path: str, engine: str = "pdflatex") -> None:
"""End-to-end: prompt → LaTeX → PDF saved to disk."""
print(f"Generating LaTeX for: {prompt[:60]}...")
latex_source = generate_latex(prompt)
print("Compiling PDF with FormaTeX...")
pdf_bytes = compile_to_pdf(latex_source, engine)
with open(output_path, "wb") as f:
f.write(pdf_bytes)
print(f"PDF saved to {output_path} ({len(pdf_bytes):,} bytes)")
# Example usage
generate_pdf(
prompt=(
"Write a 3-page LaTeX technical report on transformer neural networks. "
"Include an abstract, introduction, the scaled dot-product attention "
"equation, a comparison table of model sizes, and a conclusion."
),
output_path="transformer_report.pdf",
engine="pdflatex",
)\section{نصائح للطلبات}
فرض LaTeX الخام في موجّه النظام
أضف إلى رسالة النظام عبارة "respond ONLY with valid LaTeX source code — no markdown fences, no explanation". بدونها تغلّف النماذج المخرجات غالبًا داخل كتل ```latex يجب إزالتها.
حدّد فئة المستند صراحةً
Tell the model which documentclass to use: "Use \documentclass{article}" or "\documentclass[12pt,a4paper]{report}". This prevents the model from choosing an inappropriate class.
أبقِ درجة الحرارة منخفضة
اضبط temperature بين 0.1 و0.3 عند توليد LaTeX. ترفع الحرارة العالية احتمال ظهور أوامر مختلقة أو أقواس ناقصة تُفشل التجميع.
اذكر الحزم التي تحتاجها
أخبر النموذج صراحةً بالحزم التي يجب تضمينها: amsmath وgraphicx وbooktabs وhyperref. تستورد النماذج أحيانًا حزمًا غير موجودة عندما تُترك للاختيار الحر.
تحقق قبل التجميع
Strip markdown fences with a simple regex before POSTing. Check that the output contains \documentclass and \begin{document} — if not, re-prompt rather than wasting a compile request.
استخدم xelatex للمحتوى بترميز Unicode
If the document may contain non-ASCII characters (names, accents, CJK), set engine to xelatex and instruct the model to use \usepackage{fontspec} instead of inputenc.
\section{Related}
\end{pdf-generation}
احصل على مفتاح FormaTeX API، وانسخ مثال Python أعلاه، وأطلق ملفات PDF احترافية مولّدة بالذكاء الاصطناعي في أقل من عشر دقائق.