تخ (برمجية)

تخ أو تك  هو نظام للصف الطباعي، صممه وكتب معظمه دونالد كانوث، وتم إصداره في عام 1978 .

تم تصميم تخ بالإضافة إلى لغة  «التي تصف الخطوط والعائلة الأصلية التي تسمى  لعائلة الخطوط » لهدفين رئيسيين هما إتاحة إنتاج كتب عالية الجودة لأي شخص بمجهود معقول، وتوفير نظام يعطي نفس الناتج على أي حاسوب، الآن أو في المستقبل، ينسق الاسم على شكل  باستخدام تخ نفسه.

يرى الكثيرون أن تخ أفضل نظام لكتابة المعادلات الرياضية المعقدة. يشيع تخ بين الأكاديميين وخاصة وسط الرياضياتيين والفزيائيين. كما إستبدل بشكل كبير  - منسق مفضل آخر - على أنظمة يونكس، التي تستخدم كليهما لأغراض مختلفة. يستخدم أيضا تخ الآن في الكثير من الأغراض الطباعية الأخرى وخاصة في صورة لاتخ (LaTeX) وغيره من حزم القوالب، هناك  شائع الاستخدام لملفات تخ هو application/x-tex ، تخ مجاني ومن البرمجية حرة.

نبذة تاريخية 

عندما نُشر أول جزء من كتاب دونالد كانوث فن برمجة الحاسوب سنة 1969، تم تصفيفه باستخدام الطباعة المعدنية بواسطة آلة طباعة من القرن التاسع عشر من شركة مونوتيب، منتجة “طرازا تقليدي جيد” أعجب به دونالد كانوث، وعندما نشرت الطبعة الثانية في 1976 تعين إعادة تصفيف الكتاب من البداية لأن تقنيات مونوتيب إستُبدلت بشكل كبير وحل محلها تقنيات النسخ الضوئي، ولم يعد الخط الأصلي متاحا، ولكن عندما استلم كانوث عينات الكتاب في مارس 1977 لمراجعتها وجدها قبيحة  في هذه الأثناء رأي كانوث للمرة الأولى نتائج نظام طباعة رقمي عالي الجودة، وصار مهتما بالطباعة الرقمية. العينات غير المرضية أعطته الدافع ليحل هذه المشكلة مرة واحدة بتصميم نظامه الخاص للطباعة. في 13 مايو 1977 كتب ملاحظة لنفسه يصف فيها الخصائص الأولية لتخ.
وبالمثل فإصدارات ميتافونت بعد 2.0 تقترب بصمت من ثابت إيه e ، وسيحدث تغيير مماثل بعد وفاة كانوث.

مع هذا، وحيث أن كود تخ المصدري يكاد يكون ملكية عامة (انظر ما يلي)، يسمح (بل ويشجع صراحة) للمبرمجين الآخرين بتحسين النظام بشرط استخدام اسم آخر لتوزيع تخ المعدل، مما يعني أن الكود يمكن أن يتطور. فمثلا مشروع أوميجا طُوّر بعد 1991 ويهدف أساسا لإضافة إمكانيات تعدد اللغات إلى تخ. دونالد كانوث نفسه أنشأ نسخ معدلة “غير رسمية” من تخ مثل TeX-XeT التي تتيح الخلط بين أنظمة الكتابة من اليمين لليسار ومن اليسار لليمين.

نظام الطباعة 

تبدأ أوامر تخ غالبا بشرطة مائلة عكسية وتجمع بين أقواس مجعدة، مع هذا فتقريبا كل الخصائص النحوية لتخ يمكن تغييرها على الهواء مما يجعل تحليل مدخلات تخ صعبا على أي شيء عدا تخ نفسه. لغة تخ لغة ماكرو ورموز (token): الكثير من الأوامر بما فيها أغلب الأوامر التي يُعرّفها المستخدم يتم فكّها على الهواء حتى تبقى الرموز التي لا تفك فيتم تنفيذها. الفك في حد ذاته خال عمليا من الأعراض الجانبية. يجعل هذا من تخ لغة تورنغ كاملة حتى على مستوى الفك.

يمكن تقسيم النظام إلى أربع مستويات: في الأول تقرأ الحروف من ملف الدخْل وتسند إلى رمز فئة (يسمى أحيانا “catcode” اختصارا). التجميعات من الشرطة الراجعة (أو أي محرف في الفئة 0) متبوعة بحروف (المحارف من الفئة 11) أو محرف واحد آخر، تستبدل برمز تتابع تحكم. مما يعني أن هذه المرحلة أشبح بالتحليل البنيوي، يالرغم من أنها لا تكون أعدادا من الأرقام. في المرحلة التالية تتابعات التحكم التي يمكن فكها تستبدل بنصها البديل. عندها يكون دخل المرحلة الثالثة تيار من المحارف (شاملة تلك التي تحمل معان خاصة) وتتابعات تحم لا تفك. هنا تركب المحارف لتكون فقرة. تعمل خوارزمية تقسيم الفقرات في تخ على أمثلة نقاط التقسيم عبر الفقرة بأكملها. المرحلة الرابعة تقطع القائمة الأفقية من السطور والمواد الأخرى لتشكل صفحات.

يعرف تخ بدقة أبعاد كل المحارف والرموز، وباستخدام هذه المعلومات يحسب الترتيب الأمثل للحروف في كل سطر والسطور في كل صفحة. بعدها ينتج ملف DVI (اختصار “DeVice Independent”) يحتوي المواضع النهائية لكل المحارف. يمكن بعدها طباعة ملف dvi مباشرة باستخدام مشغل الطابعة المناسب، أو تحويله إلى أنساق أخرى. هذه الأيام يستخدم  بكثرة متخطيا خطوة إنتاج ملف DVI.

يفهم نظام تخ حوالي 300 أمر، تسمى أوليات. لكن هذه الأوامر منخفضة المستوى نادرا ما يستخدمها المستخدم مباشرة، وأغلب الوظائف توفرها ملفات التنسيق (صور طرح ذاكرة تخ بعد تحميل حزم الماكرو الكبيرة). تنسيق كانوث المبدئي الأصلي، والذي يضيف حوالي 600 أمر، يسمى تخ الصرف (يتوفر من CTAN). أكثر التنسيقات استخداما هو لاتخ أو لاتك، الذي بدأ تطويره ليزلي لامبورت، والذي يشمل أنساق المستندات مثل الكتب والخطابات والشرائح إلخ.. ويضيف دعم المراجع وترقيم الأقسام والمعادلات تلقائيا. ومن التنسيقات شائعة الاستخدام أيضا  من مجتمع الرياضيات الأمريكي والذي يوفر الكثير من الأوامر صديقة المستخدم والتي يمكن تغييرها لتناسب احتياجات دور النشر. أغلب مميزات أ.م.س يمكن استخدامها في لاتخ باستخدام “حزم” AMS. ومن التنسيقات الأخرى  الذي يستخدم أساسا للنشر المكتبي.

كيف يعمل تخ 

مثال برنامج أهلا بالعالم باستخدام تخ الصِرف:
Hello, World
\end % marks the end of the file; not shown in the final output
يمكن حفظ الملف باسم myfile.tex ، حيث دوت تخ.tex هو امتداد ملفات تخ الشائع.

يعتبر تخ أي شيء بعد علامة النسبة المؤوية تعليقا ويتجاهله. تشغيل تخ على هذا الملف (مثلا بكتابة tex myfile.tex في سطر الأوامر، أو استدعاؤه من الواجهة الرسومية) سينتج ملفا باسم myfile.dvi. يمكن طباعة الناتج مباشرة من عارض DVI أو تحويله إلى نسق أكثر شيوعا مثل بوست سكريبت (PostScript) باستخدام برنامج dvips. سبب هذا أن تخ يستخدم خطوط نقطية مصممة للعرض جيدا في حجم معين، بينما PostScript يستخدم خطوط متجهية. تنويعات تخ الأخرى مثل  تنتج ملفا PDF مباشرة.

أمثلة رياضياتية 

يوفر تخ سياقا نصيا للمعادلات الرياضية. مثلا، معادلة ايجاد الجذور للمعادلات التربيعيه الشهيرة تكتب على الملف:
The quadratic formula is $-b \pm \sqrt{b^2 - 4ac} \over 2a$
\end

الناتج سيشبه:

ملاحظات

وصلات خارجية 

 
 مرجع سريع عن تخ الصرف (PDF)
 سيمون إڤِنسَن. مقدمة إلى إنتاج الوثائق الرياضاتية باستخدام AmSLaTeX.
 معرض تخ معرض من أمثلة تخ
 Eijkhout, Victor. تخ بالموضوع
 منظومة عرب تخ المشهورة 

برمجيات 1978
برمجيات حرة
برمجيات نشر مكتبي
تخ
دونالد كانوث
صف الحروف
طباعة رقمية
علم المكتبات
لغات برمجة ماكرو
لغات ترميزية