\compare{xelatex-vs-lualatex}

XeLaTeX مقابل LuaLaTeX

يدعم المحركان Unicode أصلًا ويحمّلان خطوط النظام عبر fontspec. الفرق الحقيقي هو محرك البرمجة Lua المدمج في LuaLaTeX وخط معالجة تشكيل النصوص الأفضل لديه. يغطي هذا الدليل كل فرق ذي أهمية.

XeLaTeX— سريع، Unicode، خطوط النظامLuaLaTeX— برمجة Lua مع HarfBuzz
استخدم XeLaTeX عندما…
  • سرعة التجميع أولوية
  • تحتاج إلى خطوط النظام مع ميزات OpenType
  • كتابات من اليمين إلى اليسار (العربية والعبرية) مع الحزمة bidi
  • لا تحتاج إلى البرمجة بـ Lua أثناء التجميع
استخدم LuaLaTeX عندما…
  • تحتاج إلى البرمجة بـ Lua داخل مستندك
  • تحتاج إلى تشكيل نصوص متقدم (HarfBuzz)
  • توليد جداول ديناميكية أو محتوى محسوب
  • تحتاج إلى ميزات luacolor أو luatextra

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

ما الذي يختلف فعلًا في الداخل

محرك البرمجة Lua

XeLaTeX

لا يحتوي XeLaTeX على لغة برمجة نصية مدمجة. يجب التعبير عن منطق المستند بالكامل عبر وحدات ماكرو TeX أو الحزم. وهذا كافٍ لمعظم مهام التنضيد، لكنه يحدّ من توليد المحتوى الديناميكي أثناء التجميع.

LuaLaTeX

يدمج LuaLaTeX مفسّر Lua 5.3 كاملًا يمكن الوصول إليه من داخل مستندك عبر luacode. يمكنك حساب القيم والمرور على البيانات واستدعاء مكتبات Lua الخارجية وإعادة النتائج إلى مجرى تنضيد TeX أثناء التجميع.

تشكيل النصوص والكتابات المعقدة

XeLaTeX

يستخدم XeLaTeX مكتبتي ICU وSIL لتشكيل النصوص عبر محرك XeTeX. وتُدعم الكتابات المعقدة (العربية والديفاناغارية والتايلاندية) عبر الحزمتين bidi وpolyglossia. عمليًا يغطي هذا معظم متطلبات التنضيد متعدد اللغات.

LuaLaTeX

يدمج LuaLaTeX محرك HarfBuzz (عبر LuaHarfBuzz)، وهو محرك التشكيل نفسه الذي تستخدمه المتصفحات وAndroid وmacOS. يتمتع HarfBuzz بتغطية أوسع للكتابات وتطبيق أدق لميزات OpenType، مما يجعله الخيار الأفضل للمستندات ذات متطلبات الكتابات المعقدة أو استبدال الرموز (glyph) المتقدم.

سرعة التجميع

XeLaTeX أسرع باستمرار من LuaLaTeX. ويعود الفرق إلى كلفة تهيئة آلة Lua الافتراضية في LuaLaTeX وخط معالجة تشكيل HarfBuzz. في المستندات البسيطة يكون الفارق صغيرًا، أما في المستندات الكبيرة الكثيفة الخطوط فقد يكون LuaLaTeX أبطأ بنسبة 30–50%.

XeLaTeX

~1.5s

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

LuaLaTeX

~2.0s

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

توافق الحزم

XeLaTeX

تعمل معظم حزم CTAN التي تعمل مع pdfLaTeX مع XeLaTeX أيضًا، باستثناء الحزم منخفضة المستوى الخاصة بـ pdfLaTeX. وتُعدّ الحزمتان fontspec وunicode-math من الحزم الأساسية المدعومة بالكامل.

LuaLaTeX

يدعم LuaLaTeX الحزم نفسها التي يدعمها XeLaTeX، إضافة إلى الوصول إلى منظومة Lua. وحزم مثل luacode وluacolor وluatextra حصرية بـ LuaLaTeX.

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

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

الميزة
XeLaTeX
LuaLaTeX
إدخال Unicode
أصلي
أصلي
خطوط النظام (fontspec)
نعم
نعم
برمجة Lua
لا
نعم (luacode)
سرعة التجميع
سريع (حوالي 1.5 ثانية)
متوسط (حوالي 2 ثانية)
رياضيات OpenType
نعم (unicode-math)
نعم (unicode-math)
اللغات من اليمين إلى اليسار
نعم (bidi)
جزئي (luabidi)
المحتوى الديناميكي
لا
نعم (Lua أثناء التشغيل)
توافق الحزم
جيد
جيد
LuaHarfBuzz (التشكيل)
لا
نعم
استهلاك الذاكرة
متوسط
أعلى

\section{Recommendations}

أي محرك لأي نوع من المستندات؟

يعتمد المحرك المناسب على متطلباتك المحددة، لا على ترتيب عام شامل.

بحث أكاديمي (نص لاتيني)

XeLaTeX

تجميع أسرع، ودعم ممتاز لـ fontspec، ودعم كامل لـ unicode-math لخطوط الرياضيات الحديثة.

تقرير متعدد اللغات (كتابات معقدة)

LuaLaTeX

يتعامل تشكيل HarfBuzz مع العربية والديفاناغارية والتايلاندية بدقة أعلى من محرك ICU في XeLaTeX.

توليد التقارير آليًا

LuaLaTeX

تتيح لك البرمجة بـ Lua المرور على البيانات وتوليد جداول أو أقسام أثناء التجميع دون معالجة مسبقة خارجية.

أطروحة / رسالة دكتوراه

XeLaTeX

تكرار أسرع أثناء الكتابة، ودعم واسع للقوالب، وfontspec يغطي جميع متطلبات الخطوط المعتادة.

كتاب أو مستند طويل

LuaLaTeX

تتيح استدعاءات Lua الرجعية تخصيصات طباعية دقيقة تتجاوز ما تسمح به وحدات ماكرو TeX. ويحسّن HarfBuzz جودة الرموز (glyph) للخطوط المخصصة.

سيرة ذاتية

XeLaTeX

مستند قصير وتجميع سريع، وfontspec يتعامل مع جميع خطوط الهوية البصرية المخصصة التي قد تحتاجها.

\begin{examples}

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

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

XeLaTeX
% XeLaTeX — Unicode native, system fonts via fontspec
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}

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

\begin{document}
XeLaTeX handles Unicode natively: α β γ — no inputenc needed.
Arabic: \textarabic{مرحبا} \quad Greek: Αλφαβητικό

$\int_0^\infty e^{-x^2}\, dx = \frac{\sqrt{\pi}}{2}$
\end{document}
LuaLaTeX
% LuaLaTeX — Lua scripting + modern font loading
\documentclass{article}
\usepackage{fontspec}
\usepackage{luacode}

\setmainfont{Linux Libertine O}

% Generate content with Lua at compile time
\begin{luacode*}
  local items = {"Introduction", "Methods", "Results", "Discussion"}
  for i, v in ipairs(items) do
    tex.print(i .. ". " .. v .. "\\\\")
  end
\end{luacode*}

\begin{document}
LuaLaTeX: Unicode + Lua scripting in a single engine.
$f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!}(x-a)^n$
\end{document}

\section{FAQ}

الأسئلة الشائعة

XeLaTeX وLuaLaTeX كلاهما متاح

جمّع بالمحرك الذي تفضله

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