\engines{comparison}

XeLaTeX مقابل pdfLaTeX

يُنتج المحركان ملفات PDF عالية الجودة، لكنهما يقدمان مقايضات مختلفة. يغطي هذا الدليل كل فرق مهم لتختار المحرك المناسب لكل مستند.

pdfLaTeX— سريع وعالميXeLaTeX— Unicode وخطوط النظام
استخدم pdfLaTeX عندما…
  • السرعة مهمة (أسرع محرك)
  • تستخدم نصًا لاتينيًا قياسيًا
  • تحتاج إلى أقصى توافق مع الحزم
  • تباعد microtype وبروز الحروف مطلوبان
استخدم XeLaTeX عندما…
  • نص Unicode / غير لاتيني (العربية والصينية واليونانية…)
  • تحتاج إلى خطوط نظام أو OpenType
  • خطوط رياضيات حديثة (XITS Math وLibertinus)
  • نص من اليمين إلى اليسار أو بتخطيط ثنائي الاتجاه

\section{الفروق التقنية}

ما الذي يختلف فعليًا تحت الغطاء

Unicode وترميز الإدخال

pdfLaTeX

سبق pdfLaTeX ظهور Unicode ويتعامل مع الملفات المصدرية كتدفقات بايتات ذات 8 بتات. يجب أن تصرّح بـ \usepackage[utf8]{inputenc} للتعامل مع إدخال UTF-8، وبـ \usepackage[T1]{fontenc} لترميز المخرجات الصحيح. تتطلب الأحرف خارج ترميز T1 حزمًا إضافية.

XeLaTeX

بُني XeLaTeX على محرك Unicode. يقرأ UTF-8 أصليًا، فلا حاجة إلى تصريحات inputenc أو fontenc. كل حرف Unicode متاح ما دام الخط المختار يغطي نقطة الرمز.

تحميل الخطوط

pdfLaTeX

يستخدم pdfLaTeX مقاييس خطوط TeX (ملفات .tfm) وخطوط Type 1 أو OTF المثبتة مسبقًا في توزيعة TeX. لا يمكنك تحميل خط نظام عشوائي بالاسم؛ فقط الخطوط المعبّأة لـ TeX متاحة.

XeLaTeX

يصل XeLaTeX إلى الخطوط عبر واجهة خطوط نظام التشغيل. مع fontspec يمكنك تحميل أي خط مثبّت بالاسم: \setmainfont{Fira Sans} . وميزات OpenType (الربطات والحروف الكبيرة الصغيرة والمحاور المتغيرة) متاحة مباشرةً.

سرعة التجميع

pdfLaTeX هو الأسرع باستمرار، فهو أسرع بنحو مرتين من XeLaTeX في المستندات المكافئة. تضيق الفجوة في المستندات الكبيرة الكثيفة بالرياضيات، وتتسع في المستندات الغنية بالخطوط حيث يجب على XeLaTeX حل مسارات خطوط النظام.

pdfLaTeX

~0.8s

مستند نموذجي بمرحلة واحدة

XeLaTeX

~1.5s

مستند نموذجي بمرحلة واحدة

توافق الحزم

pdfLaTeX

كُتبت عقود من الحزم على افتراض أن pdfLaTeX هو المحرك. تعمل حزم مثل microtype وpdfpages ومعظم حزم CTAN بالكامل. توقّع توافقًا شبه شامل.

XeLaTeX

تعمل معظم الحزم مع XeLaTeX، لكن بعضها يملك دعمًا محدودًا أو منعدمًا، خصوصًا الحزم التي ترتبط بالأجزاء الداخلية للخطوط الخاصة بـ pdfLaTeX. تعمل microtype في XeLaTeX لكنها تفقد ميزتي بروز الحروف وتمديدها.

الرياضيات

ينتج المحركان مخرجات رياضية ممتازة. يستخدم pdfLaTeX مجموعة خطوط Computer Modern / AMS الكلاسيكية للرياضيات. ويدعمها XeLaTeX أيضًا، لكنه يتيح كذلك خطوط رياضيات OpenType عبر unicode-math، ومنها XITS Math وLibertinus Math وSTIX Two Math. وفي المستندات التي تمزج أحرف Unicode مع الرياضيات (مثل الحروف اليونانية ضمن السطر) يكون XeLaTeX الخيار الطبيعي.

\subsection{مصفوفة الميزات}

مقارنة جنبًا إلى جنب

الميزة
pdfLaTeX
XeLaTeX
إدخال Unicode
عبر inputenc
أصلي
خطوط النظام
لا
نعم (fontspec)
سرعة التجميع
سريع (~0.8 ثانية)
متوسط (~1.5 ثانية)
توافق الحزم
ممتاز
جيد
رياضيات OpenType
لا
نعم (unicode-math)
اللغات من اليمين إلى اليسار
محدود
نعم (bidi)
Microtype
دعم كامل
محدود
افتراضي في معظم القوالب
نعم
لا

\begin{examples}

أمثلة عملية دنيا

يُجمَّع المثالان مع FormaTeX. جرّبهما مباشرةً في الـ playground.

pdfLaTeX
% pdfLaTeX — fastest, widest package support
\documentclass{article}
\usepackage[utf8]{inputenc}   % required for pdfLaTeX
\usepackage[T1]{fontenc}
\usepackage{microtype}        % works best with pdfLaTeX

\begin{document}
Hello, World! Standard Latin text compiles in milliseconds.
$E = mc^2$
\end{document}
XeLaTeX
% XeLaTeX — Unicode native, system fonts
\documentclass{article}
\usepackage{fontspec}          % system font loading
\usepackage{unicode-math}      % Unicode math support

\setmainfont{Linux Libertine O}
\setmathfont{XITS Math}

\begin{document}
XeLaTeX natively handles Unicode: α β γ δ — no inputenc needed.
Greek: Αλφαβητικό σύστημα
$∫₀^∞ e^{−x²} dx = √π/2$
\end{document}

\subsection{Packages}

الحزم الرئيسية لكل محرك

حزم pdfLaTeX

inputenc

ترميز الإدخال (مطلوب لـ UTF-8 في pdfLaTeX)

fontenc

ترميز الخط: T1 لأوروبا الغربية

microtype

تحسينات طباعية دقيقة؛ الأفضل مع pdfLaTeX

babel

دعم تعدد اللغات والتوصيل بين المقاطع

حزم XeLaTeX

fontspec

حمّل أي خط نظام أو OpenType بالاسم

unicode-math

خطوط رياضيات Unicode (XITS Math وLibertinus Math)

polyglossia

دعم حديث لتعدد اللغات، يحل محل babel

bidi

تخطيط نص ثنائي الاتجاه (العبرية والعربية وغيرهما)

\section{Migration}

الانتقال من pdfLaTeX إلى XeLaTeX

تُجمَّع معظم مستندات pdfLaTeX في XeLaTeX بعد تعديل بسيط في المقدمة (preamble). مع FormaTeX، يكفي أن تغيّر المعامل "engine" في استدعاء API، ثم تحدّث المقدمة وفق ذلك.

احذف
\usepackage[utf8]{inputenc}

يقرأ XeLaTeX ترميز UTF-8 أصليًا، فلا حاجة إلى inputenc

احذف
\usepackage[T1]{fontenc}

fontenc حزمة خاصة بـ pdfLaTeX

أضف
\usepackage{fontspec}

مطلوبة لتحميل خطوط النظام في XeLaTeX

اختياري
\usepackage{unicode-math}

تفعّل خطوط رياضيات OpenType مثل XITS Math

فكّر في
\usepackage{polyglossia}

استبدل babel في المستندات متعددة اللغات

\subsection{استخدام API}

اختيار المحرك عبر FormaTeX API

تبديل المحركات تغيير في حقل واحد. كلا المحركين متاح في جميع الخطط دون أي إعداد إضافي.

اختيار المحرك عبر API
curl -X POST https://api.formatex.io/api/v1/compile \
  -H "X-API-Key: $FORMATEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "engine": "xelatex",
    "latex": "\\documentclass{article}\\usepackage{fontspec}\\begin{document}Hello\\end{document}"
  }' \
  --output document.pdf

غيّر "engine": "xelatex" إلى "engine": "pdflatex" لتبديل المحركات. راجع الدليل الكامل للمحركات للاطلاع على المحركات الأربعة المدعومة.

بدّل المحركات في أي وقت

جمّع بأي محرك في ثوانٍ

يشغّل FormaTeX محركات pdfLaTeX وXeLaTeX وLuaLaTeX وlatexmk. مفتاح API واحد وبلا بنية تحتية.