> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ar/mzyd-mn-almwdhwaat/39-mltex-enctex-and-synctex-tex-extensions.md).

# امتدادات TeX: MLTeX وEncTeX وSyncTeX

## بعض التفاصيل الخلفية حول امتدادات TeX

لـ TeX تاريخ طويل من التطوير—أكثر من 4 عقود الآن! خلال تلك الفترة تم تطوير «إصدارات» جديدة من TeX—مثل e-TeX وpdfTeX وXeTeX وLuaTeX وما إلى ذلك. وإلى جانب المحركات الجديدة تمامًا، مع مجموعة كاملة من الميزات الإضافية، ظهرت امتدادات مختلفة *امتدادات* تتركز عادةً على تنفيذ ميزة محددة لتعزيز البرنامج الأصلي لكنوث.

مع ظهور محركات TeX الحديثة، مثل XeTeX وLuaTeX، تضاءلت الحاجة إلى بعض امتدادات TeX القديمة واستخدامها، لأن محركات TeX الأحدث تجلب وظائف إضافية قوية—مثل الدعم المدمج للنصوص المشفرة بـ UTF-8. والغرض من هذه الصفحة هو تقديم بعض الملاحظات حول الامتدادات، بما في ذلك MLTeX وEncTeX، التي قد لا تزال تراها مذكورة في [خيارات سطر أوامر محرك TeX](/latex/ar/mzyd-mn-almwdhwaat/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md). لم يعد تطوير MLTeX وEncTeX مستمرًا، لكن امتدادًا واحدًا مفيدًا جدًا، وهو SyncTeX، ما يزال قيد التطوير النشط ويدعمه Overleaf.

## MLTeX

*TeX متعدد اللغات*، أو MLTeX، تم تطويره خلال الأعوام 1992–5 كتعديل على TeX للسماح بتهجئة الكلمات التي تحتوي على أحرف معلمة باستخدام خطوط Computer Modern (CM) العادية.

### تفعيل (تمكين) MLTeX

صُمِّم MLTeX ليعمل كجزء مما يُسمّى `.fmt`  (ملف صيغة)، وهو في الواقع نسخة ثنائية مُسبقة الترجمة من مجموعة ماكروز TeX. لإنشاء ملفات الصيغة، تضع محرك TeX في ما يُسمّى `INI` الوضع، وتُعالج مجموعة الماكروز ثم تصدر `ملف.` أمرًا لكتابة `.fmt` الملف. انظر [هذه المقالة](/latex/ar/mqalat-mtamqh/50-the-two-modes-of-tex-engines-ini-mode-and-production-mode.md) لمناقشة أوضاع INI.

لتمكين MLTeX، *بالنسبة إلى المحركات التي تدعمه*، مثل pdfTeX، ستكتب

```
pdftex -ini -mltex *pdfetex.ini
```

حيث `pdfetex.ini` هو ملف موجود ضمن توزيعة TeX Live.

**لماذا النجمة (`*`)?** تضع النجمة pdfTeX في ما يُسمّى «الوضع الموسّع»، الذي يفعّل دعم بدائيات e-TeX. إذا حذفتها وكتبت `pdftex -ini -mltex pdfetex.ini` فستحصل على خطأ:

```
هذا هو pdfTeX، الإصدار 3.14159265-2.6-1.40.19 (INITEX)
 \write18 مفعّل.
MLTeX v2.2 مفعّل
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! خطأ فادح في e-TeX: لا يمكن معالجة هذا الملف إلا في الوضع الموسّع؛
  هل ربما نسيت النجمة؟
```

**ملاحظة**: بدلاً من استخدام نجمة لتمكين «الوضع الموسّع»، يمكنك استخدام `-etex` خيار سطر الأوامر بدلاً من ذلك:

```
pdftex -ini -etex -mltex pdfetex.ini
```

**ملاحظة**: باستخدام `-mltex` الخيار في سطر الأوامر مع `.fmt` ملف كان *لم يُنشأ* مع تفعيل MLTeX لن *تحتوي* يعمل: يجب «تفعيل» MLTeX عبر ملف صيغة مناسب.

عندما تستخدم `-mltex` الخيار أثناء `.fmt` إنشاء الملف، تُكتب متغير منطقي بقيمة «true» إلى `.fmt` الملف لإخبار محرك TeX بأن امتدادات MLTeX قد تم تفعيلها ويجب أن تكون متاحة للمستخدم. إذا لم تُضبط `-mltex` الخيار صراحةً فسيكون المتغير المقابل «false». وإذا اكتُشفت قيمة ذلك المتغير على أنها «false» (عند إعادة تحميل ذلك `.fmt` الملف أثناء تشغيل TeX) فإن محاولة استخدام امتدادات MLTeX ستؤدي إلى `أمر غير معرّف...` خطأ—لأن بدائيات MLTeX لن تكون قد سُجِّلت (حُمِّلت)، وبالتالي لن يتعرّف عليها النظام.

بعد تشغيل `pdftex -ini -mltex *pdfetex.ini` على سطر الأوامر، سترى نصًا مشابهًا لما يلي، يبيّن أن MLTeX v2.2 مفعّل:

```
هذا هو pdfTeX، الإصدار 3.14159265-2.6-1.40.19 (INITEX)
\write18 مفعّل.
الدخول إلى الوضع الموسّع
MLTeX v2.2 مفعّل
....
....
....
بدء التفريغ إلى الملف pdfetex.fmt
....
لا توجد صفحات مخرجة.
تمت كتابة السجل في pdfetex.log.
```

ينتج عن ذلك `.fmt` ملفًا باسم `pdfetex.fmt` يتيح لك استخدام أوامر MLTeX:

```
pdftex -fmt=pdfetex <yourfile.tex>
```

حيث `<yourfile.tex>` يمكنه الاستفادة من بدائيات MLTeX الخاصة

كان MLTeX يُوزَّع في الأصل كملف تغييرات مستقل، [mltex.ch](http://tug.ctan.org/systems/generic/mltex/mltex.ch)، يمكن دمجه مع الشفرة المصدرية الرئيسية لكنوث ([`tex.web`](https://ctan.org/tex-archive/systems/knuth/dist/tex?lang=en)) لاشتقاق نسخة جديدة من TeX، تُسمّى MLTeX، وكانت تحتوي على عدد من البدائيات الجديدة. واليوم، فإن شفرة MLTeX من `mltex.ch` أصبحت مدمجة ضمن الملف الرئيسي `tex.ch` الذي يُستخدم لبناء معظم محركات TeX تقريبًا.

### بدائيات MLTeX

هذه الملاحظات أُعدّت في الغالب وأُعيدت من الملف `web2c.info` الموجود ضمن [TeX Live](https://tug.org/texlive/) الحزمة.

* **`\charsubdef`**: تعريفات استبدال الأحرف. يعلن عن كيفية إنشاء رمز حرف مَشدود (accented) — قد لا يكون موجودًا بالضرورة في الخط الحالي — باستخدام رمزي حرفين (موجودين بالفعل).

  ```
  \charsubdef COMPOSITE [=] ACCENT BASE
  ```

  كلٌّ من COMPOSITE وACCENT وBASE هي أرقام رموز خط، وتُعبَّر عنها بالصياغة المعتادة في TeX: \`\e بصورة رمزية، و'145 للثماني، و"65 للسداسي عشر، و101 للعشري. وهكذا فهي تحدد ما إذا كان رمز حرف، سواء أُدخل كحرف واحد أو باستخدام `\char` البدائية، سيُسند إلى رمز خط أم إلى `\accent` تركيب رمز.

  على سبيل المثال، إذا افترضتَ أن رمز الحرف 138 (عشري) للحرف e-مشدود circumflex، وكنت تستخدم خطوط Computer Modern، التي تحتوي على علامة circumflex في الموضع 18 والحرف الصغير ‘e’ في موضع ASCII المعتاد 101 عشري، فستستخدم `\charsubdef` كما يلي:

  ```
  \charsubdef 138 = 18 101
  ```
* **`\charsubdefmax`**: يعيّن أكبر قيمة في `\charsubdef` القائمة. على سبيل المثال:

  ```
  \charsubdefmax=-1 % تعطيل جميع الاستبدالات
  \charsubdefmax=256 % تمكين جميع الاستبدالات
  ```
* **`\tracingcharsubdef`**: تتبّع الاستبدالات. للمساعدة في تشخيص المشكلات المتعلقة بـ `\charsubdef`، يوفّر MLTeX معاملًا بدائيًا، `\tracingcharsubdef`. إذا كانت قيمته موجبة، فسيتم الإبلاغ عن كل استخدام لـ `\charsubdef` . يمكن أن يساعد هذا في تعقّب موضع إعادة تعريف حرف ما.

## EncTeX

تم تطوير EncTeX خلال الأعوام 1997–2004 كامتداد لـ TeX يوفّر إعادة ترميز مرنة للإدخال/الإخراج عبر إضافة بدائيات جديدة—على سبيل المثال، وسيلة لترجمة الإدخال أثناء دخوله إلى TeX. وهو يتيح، مثلًا، ترجمة السلاسل متعددة البايتات، مثل ترميز UTF-8، لاستخدامها في محركات TeX القياسية ذات 8 بت.

### تفعيل (تمكين) EncTeX

كما هو الحال مع MLTeX، فقد صُمِّم EncTeX أيضًا ليعمل كجزء مما يُسمّى `.fmt`  (ملف صيغة)—انظر [MLTeX](#mltex)أعلاه، لشرح ملفات الصيغة/وضع INI.

لتمكين EncTeX، *بالنسبة إلى المحركات التي تدعمه*، مثل pdfTeX، فإنك تنشئ ملف صيغة مفعّلًا بـ EncTeX بكتابة

```
pdftex -ini -enc *pdfetex.ini
```

حيث `pdfetex.ini` هو ملف موجود ضمن توزيعة TeX Live.

**لماذا النجمة (`*`)?** تضع النجمة pdfTeX في ما يُسمّى «الوضع الموسّع»، الذي يفعّل دعم بدائيات e-TeX. إذا حذفتها وكتبت `pdftex -ini -mltex pdfetex.ini` فستحصل على خطأ:

```
هذا هو pdfTeX، الإصدار 3.14159265-2.6-1.40.19 (INITEX)
 \write18 مفعّل.
MLTeX v2.2 مفعّل
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! خطأ فادح في e-TeX: لا يمكن معالجة هذا الملف إلا في الوضع الموسّع؛
  هل ربما نسيت النجمة؟
```

**ملاحظة**: بدلاً من استخدام نجمة لتمكين «الوضع الموسّع»، يمكنك استخدام `-etex` خيار سطر الأوامر بدلاً من ذلك:

```
pdftex -ini -etex -mltex pdfetex.ini
```

ال `-enc` يؤدي خيار سطر الأوامر إلى جعل محرك pdfTeX يفعّل EncTeX بكتابة بعض البيانات في `pdfetex.fmt` الملف الناتج.

**ملاحظة**: باستخدام `-enc` الخيار في سطر الأوامر مع `.fmt` ملف كان *لم يُنشأ* مع تفعيل EncTeX لن *تحتوي* يعمل: يجب «تفعيل» EncTeX عبر ملف صيغة مُنشأ على نحو مناسب.

### بدائيات EncTeX

يضيف EncTeX عشرة أوامر بدائية جديدة إلى محرك TeX:

* 3 بدائيات في الإصدار الأول (1997):
* `\xordcode`
* `\xchrcode`
* `\xprncode`
* 7 بدائيات إضافية (لدعم UTF-8) في 2003:
* `\mubyte`
* `\endmubyte`
* `\mubytein`
* `\mubyteout`
* `\mubytelog`
* `\specialout`
* `\noconvert`

استخدام هذه البدائيات وسلوكها موثّقان جيدًا في [دليل مرجع EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf)، الذي كتبه مؤلف EncTeX، Petr Olšák. ولتجنّب التكرار غير الضروري هنا، يُحال القارئ المهتم إلى ذلك المستند.

### مزيد من المعلومات حول EncTeX

* [الإصدار الثاني من EncTeX: دعم UTF-8](http://mirrors.ctan.org/systems/enctex/eurotex2003-enctex.pdf): مقال بقلم مؤلف EncTex، Petr Olšák.
* [دليل مرجع EncTeX](http://mirrors.ctan.org/systems/enctex/encdoc-e.pdf) (بالإنجليزية).

### تفعيل (تمكين) كلٍّ من MLTeX وEncTeX

لتمكين كلٍّ من MLTeX وEncTeX ستنشئ ملف صيغة مناسبًا باستخدام سطر أوامر مثل

```
pdftex -ini -enc -mltex *pdfetex.ini
```

حيث `pdfetex.ini` هو ملف موجود ضمن توزيعة TeX Live.

**لماذا النجمة (`*`)?** تضع النجمة pdfTeX في ما يُسمّى «الوضع الموسّع»، الذي يفعّل دعم بدائيات e-TeX. إذا حذفتها وكتبت `pdftex -ini -enc -mltex pdfetex.ini` فستحصل على خطأ:

```
هذا هو pdfTeX، الإصدار 3.14159265-2.6-1.40.19 (INITEX)
 \write18 مفعّل.
MLTeX v2.2 مفعّل
(c:/texmf-dist/tex/plain/config/pdfetex.ini
(c:/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex)
(c:/texmf-dist/tex/plain/etex/etex.src

! خطأ فادح في e-TeX: لا يمكن معالجة هذا الملف إلا في الوضع الموسّع؛
  هل ربما نسيت النجمة؟
```

**ملاحظة**: بدلاً من استخدام نجمة لتمكين «الوضع الموسّع»، يمكنك استخدام `-etex` خيار سطر الأوامر بدلاً من ذلك:

```
pdftex -ini -etex -enc -mltex pdfetex.ini
```

بعد تشغيل سطر الأوامر أعلاه سترى رسالة، مثل التالية، لإعلامك بأن MLTeX وEncTeX كلاهما مفعّل:

```
هذا هو pdfTeX، الإصدار 3.14159265-2.6-1.40.19 (INITEX)
 \write18 مفعّل.
الدخول إلى الوضع الموسّع
MLTeX v2.2 مفعّل
 encTeX v. Jun. 2004، إعادة الترميز مفعّلة.
....
....
....
بدء التفريغ إلى الملف pdfetex.fmt
....
لا توجد صفحات مخرجة.
تمت كتابة السجل في pdfetex.log.
```

و `pdfetex.fmt` سيُنتَج ملف صيغة، يفعّل كلًّا من MLTeX وEncTeX.

## SyncTeX

أصبح امتداد SyncTeX متاحًا منذ 2008 وما يزال قيد التطوير النشط من قِبل منشئه Jérôme Laurens. وهو مستخدم على نطاق واسع، بما في ذلك من قبل Overleaf، ويدعمه كل محركات TeX المستخدمة اليوم.

### ماذا يفعل SyncTeX؟

عند عرض مستند مُصفَّف بواسطة TeX، ربما لمراجعته/التدقيق فيه قبل إرساله إلى ناشر، قد تلاحظ خطأ وتحتاج إلى إصلاحه في الشفرة المصدرية لـ TeX. ومع ذلك، قد يكون العثور على الموضع الصحيح في ملف TeX أمرًا صعبًا، خصوصًا إذا كان المستند كبيرًا. وبالمثل، قد ترغب في القيام بالعكس: القفز من موضع في ملف مصدر TeX مباشرةً إلى موضع الصفحة في ملف PDF النهائي المصمَّف. في كلتا الحالتين، هناك حاجة إلى *مزامنة* موضعًا معينًا في ملف TeX والموضع المقابل له ضمن عرض نتائجه المصمَّفة: وهذا ما يوفّره SyncTeX—طريقة لربط المواقع في ملفات TeX تلقائيًا بمواضع الصفحات في المستندات المصمَّفة.

إذا كان SyncTeX مفعّلًا، فإنه يكتب ملفًا خاصًا بامتداد `.synctex.gz` (مضغوط بـ gz) أو `.synctex` (غير مضغوط) اعتمادًا على [خيارات سطر الأوامر المقدَّمة إلى SyncTeX](#synoptions). يمكن لمحررات النصوص المفعّلة بـ SyncTeX وعارِضات PDF (في الغالب) استخدام تلك الملفات لإجراء المزامنة اللازمة بين الإدخال (شفرة TeX) والإخراج (عرض ملف PDF المصمَّف). ومن الواضح أن هذا لا يمكن أن «يحدث» بمجرد ذاته من دون أن يمتلك محرر النصوص الخاص بالمستخدم وعارض مستندات PDF الوظيفة المناسبة التي تتيح التواصل بين مواقع ملف النص/عارض PDF—استنادًا إلى البيانات الموجودة في `.synctex.gz` (أو `.synctex`) الملف الذي يكتبه SyncTeX.

بالإضافة إلى الوظيفة داخل محرك TeX—لإنشاء `.synctex.gz` الملفات—يوفّر SyncTeX أيضًا [محللًا](https://github.com/jlaurens/synctex/) يقرأ `.synctex.gz` (أو `.synctex`) الملفات لاستخراج معلومات موضع الصفحة/السطر ذات الصلة. تستخدم التطبيقات ذلك المحلل لتوفير دعم لـ SyncTeX.

### تفعيل (تمكين) SyncTeX

تمتلك محركات TeX المفعّلة بـ SyncTeX طريقتين لتفعيل/تعطيل SyncTeX:

* خيار سطر أوامر: `-synctex=NUMBER`
* أمر في `.tex` الملف: الـ `\synctex` بدائية

### استخدام SyncTeX من سطر الأوامر

يمكنك استخدام `-synctex=NUMBER` الخيار عندما تشغّل محرك TeX يدعم SyncTeX، مثل pdfTeX.

#### أمثلة

* تمكين SyncTeX: المخرجات `.synctex.gz` (ملف مضغوط بـ gz):

```
pdftex -synctex=1 myfile.tex
```

ينتج `myfile.synctex.gz`

* تمكين SyncTeX: المخرجات `.synctex` (ملف غير مضغوط):

```
pdftex -synctex=-1 myfile.tex
```

ينتج `myfile.synctex`

* تعطيل SyncTeX:

```
pdftex -synctex=0 myfile.tex
```

لا يتم إنتاج أي مخرجات لـ SyncTeX.

### البدائية الوحيدة لـ SyncTeX

يوفّر SyncTeX بدائية واحدة، `\synctex`يمكن للمستخدمين إضافتها إلى `.tex` ملف:

* تمكين SyncTeX: `\synctex=1`
* تعطيل SyncTeX: `\synctex=0`

### مزيد من المعلومات حول SyncTeX

* [مقال في TUGBoat بقلم Jérôme Laurens](http://www.tug.org/TUGboat/tb29-3/tb93laurens.pdf)، مؤلف SyncTeX.
* ال [مستودع GitHub](https://github.com/jlaurens/synctex) لمحلّل SyncTeX.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ar/mzyd-mn-almwdhwaat/39-mltex-enctex-and-synctex-tex-extensions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
