\engines{comparison}
XeLaTeX مقابل pdfLaTeX
يُنتج المحركان ملفات PDF عالية الجودة، لكنهما يقدمان مقايضات مختلفة. يغطي هذا الدليل كل فرق مهم لتختار المحرك المناسب لكل مستند.
- السرعة مهمة (أسرع محرك)
- تستخدم نصًا لاتينيًا قياسيًا
- تحتاج إلى أقصى توافق مع الحزم
- تباعد microtype وبروز الحروف مطلوبان
- نص 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{مصفوفة الميزات}
مقارنة جنبًا إلى جنب
\begin{examples}
أمثلة عملية دنيا
يُجمَّع المثالان مع FormaTeX. جرّبهما مباشرةً في الـ playground.
% 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 — 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}
الحزم الرئيسية لكل محرك
inputenc
ترميز الإدخال (مطلوب لـ UTF-8 في pdfLaTeX)
fontenc
ترميز الخط: T1 لأوروبا الغربية
microtype
تحسينات طباعية دقيقة؛ الأفضل مع pdfLaTeX
babel
دعم تعدد اللغات والتوصيل بين المقاطع
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
تبديل المحركات تغيير في حقل واحد. كلا المحركين متاح في جميع الخطط دون أي إعداد إضافي.
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 واحد وبلا بنية تحتية.

