كيفية استخدام Troff لتنسيق مستندات PDF في Linux |

ما هو Troff ولماذا تستخدمه؟
بالمعنى الأساسي ، تروف إنه برنامج معالجة كلمات يحول البرامج النصية التي تشبه التعليمات البرمجية إلى مستندات قابلة للطباعة. بخلاف معالجات النصوص ، لا يعتمد Troff على نموذج “WYSIWYG”. بدلاً من ذلك ، يتطلب منك استخدام أنواع معينة من التعليمات البرمجية للتعامل مع التنسيق الخاص بك.
البساطة هي واحدة من أكبر مزايا هذا الأسلوب. سيحتوي التثبيت الأساسي لـ Troff على كل ما تحتاجه لإنشاء مستند. علاوة على ذلك ، فإن افتقارها إلى واجهة مستخدم رسومية يعني أنه يمكنك إنشاء مستند حتى عبر SSH.
نصيحة: تعرف على كيفية إعادة توجيه تطبيقات واجهة المستخدم الرسومية عبر SSH في Linux.
تثبيت Troff
غالبًا ما يتم تجميع Troff افتراضيًا في معظم توزيعات Linux. يمكنك التحقق مما إذا كان لديك في نظامك عن طريق تشغيل علمه -h. سيعرض هذا قائمة قصيرة بجميع العلامات التي يقبلها تثبيت Troff.
هناك حالات لا تقوم فيها التوزيعات بترجمة Troff افتراضيًا. في هذه الحالة ، يمكنك تثبيته بالبحث عن الحزمة “groff”.
هذا إعادة تنفيذ لبرنامجي Troff و Nroff بواسطة مشروع GNU ، والذي يتضمن عددًا من الميزات الجديدة والحديثة.
يمكنك تثبيت groff في Ubuntu باستخدام الأمر التالي:
قم بإنشاء مستند Troff الأول
على غرار الكود المصدري ، كل مستند Troff عبارة عن ملف نصي يحتوي على إرشادات حول كيفية إنشاء مستند. يتضمن ذلك عرض الصفحة والهامش بالإضافة إلى تباعد الأحرف والصفحات.
يسمح لك هذا المستوى من التحكم بمعالجة البرنامج لإنشاء أي نوع من المستندات. لتبسيط الأمر ، أنشأ مطورو Troff “وحدات ماكرو” تختصر هذه الأوامر في صيغة أبسط.
من أكثر وحدات الماكرو شيوعًا التي ستستخدمها في Troff هي ميلي ثانية. سيتم إنشاء وثيقة على غرار مقال. يمكنك إنشاء مستند ms باستخدام الأمر touch:
touch my-first-document.ms
نظرًا لأن جميع مستندات Troff هي نصوص ، يمكنك فتح المستند باستخدام محرر نصوص. في حالتي ، أنا أستخدم vim. بدلاً من ذلك ، يمكنك استخدام أي من برامج تحرير النصوص هذه لنظام التشغيل Linux.
فهم تنسيق Troff
تتبع جميع مستندات Troff بنية مماثلة. يجب أن يكون كل أمر تنسيق تقوم به في سطر منفصل في المحتوى الذي يحاول تنسيقه. على هذا النحو ، قد يبدو مستند Troff النموذجي كما يلي:
.COMMAND1 This is a piece of content in a Troff document. .COMMAND2 This is a different piece of content in a Troff document.
اثنان من أكثر الأوامر الأساسية التي ستستخدمها في أجزاء من الثانية هما TL و .PP. الأول يحول النص الخاص بك إلى عنوان ويقوم بتوسيطه في المستند الخاص بك ، بينما يقوم الأخير بتنسيق النص الخاص بك ليتبع نمطًا يشبه الفقرة.
على سبيل المثال ، يستخدم المقتطف التالي كلا الأمرين TL و .PP:
.TL My First Troff Document .PP This is content that I want to look like a paragraph in my final document. It is not a very long content but it is my first Troff document and it is something that I am proud of. It is about three sentences long and it should wrap around the document properly.
من هنا ، قم بإنشاء مستندك عن طريق تمرير ملفك إلى برنامج Troff.
groff -ms -Tpdf ./my-first-document.ms > output.pdf
نصيحة: إذا كنت تفضل شيئًا أبسط ، فتعلم كيفية كتابة MLA في محرر مستندات Google.
إنشاء نص غامق ومائل ومسطر
تمامًا مثل معالج النصوص العادي ، توفر معظم وحدات ماكرو Troff عددًا من أوامر النمط لتخصيص المستند. بالنسبة إلى ms ، هذه هي .B و. انا و. UL و BX.
- يغير الأمر B النص إلى غامق.
- يغير الأمر .I النص إلى الخط المائل.
- UL و. BX هما أمران يرسمان تسطيرًا ومربعًا حول النص ، على التوالي.
على غرار الأوامر أعلاه ، يتطلب استخدام هذه الأوامر في مستندك فصل كل نمط على سطر خاص به:
.TL My First Troff Document .PP This is .B content .R that I want to look like a paragraph in my final document. [...]
في هذا المثال ، قمت بإنشاء سطر جديد قبل الكلمة “محتوى” وأضفت الأمر .B لتغييره إلى غامق ، ثم أنشأت سطرًا جديدًا وأضفت الأمر .R. هذا يسمح لـ Troff بالعودة إلى أسلوبه السابق.
من المهم ملاحظة أنك تحتاج دائمًا إلى إضافة الأمر .R عند تغيير النمط. على سبيل المثال ، لن يؤدي المقتطف التالي إلى إنهاء الأمر .I لأن Troff لم ير ملف .R بعده:
.TL My First Troff Document .PP This is .I content that I want to look like a paragraph in my final document. [...]
إنشاء أقسام وثيقة جديدة
على غرار LaTeX ، يدعم Troff أيضًا اكتشاف القسم والتسلسل الهرمي ، لذلك لا تحتاج إلى ترتيب ومطابقة مستوى كل رأس عند التحرير.
لإنشاء قسم جديد في المستند الخاص بك ، استخدم الأمر .NH متبوعًا باسم العنوان الخاص بك.
.TL My First Troff Document .NH My First Heading .PP This is content that I want to look like a paragraph in my final document.
بشكل افتراضي ، يحتوي كل رأس Troff على قيمة مستوى تحدد كيفية إنشاء البرنامج وعرض محتواه في المستند النهائي. مع العلم أنه يمكنك تغيير هذه القيمة لضبط مستوى العنوان.
على سبيل المثال ، يؤدي ما يلي إلى إنشاء عنوان من المستوى 2 أسفل العنوان الرئيسي مباشرةً:
.TL My First Troff Document .NH My First Heading .NH 2 My First Subheading .PP This is content that I want to look like a paragraph in my final document.
بصرف النظر عن الرؤوس المرقمة العادية ، يمكن لـ Troff أيضًا إنشاء رؤوس فارغة ستظل تتبع التسلسل الهرمي لمستوى المستند.
للقيام بذلك ، استبدل .NH بأمر SH:
.TL My First Troff Document .SH My First Heading .SH 2 My First Subheading .PP This is content that I want to look like a paragraph in my final document.
نصيحة: تعرف على كيفية تغيير الهوامش في محرر مستندات Google.
أنشئ قوائم في Troff
تتيح لك بساطة Troff أيضًا تحويل سلوكها إلى ما تريده. على سبيل المثال ، لا تأتي القوائم بشكل افتراضي في Troff أو وحدات ماكرو ms. على الرغم من ذلك ، لا يزال بإمكانك إنشاء قائمة من خلال الجمع بين بضعة أوامر ms.
تتكون كل قائمة في Troff من ثلاثة أجزاء: المسافة البادئة والتعداد النقطي والمحتوى. لإنشاء مسافة بادئة ، استخدم الأمرين .rs و .rs. يكرر. سيؤدي هذا إلى إحداث مسافة بادئة لمستوى المسافة البادئة الحالي لأي نص بداخله بأربع مسافات.
.RS This is my first item. .RE
بعد ذلك ، قم بإنشاء الرمز النقطي لعنصر القائمة الخاص بك باستخدام .IP. هذا هو أمر Paragraph Indent الذي يعمل على إصلاح الهامش الأيسر للنص بعرض معين.
يسمح لك الأمر IP أيضًا بتعيين نقطة تعداد مخصصة والمسافة بينها وبين النص الخاص بك. في هذه الحالة ، قمت بضبط الرمز النقطي الخاص بي على “[1]وسأعطيها أربع مسافات.
.RS .IP [1] 4 This is my first item. .RE
الآن انسخ والصق أمر IP الخاص بك لإنشاء عناصر قائمة إضافية.
.RS .IP [1] 4 This is my first item. .IP [2] 4 This is my second item. .IP [3] 4 This is my third item. .RE
أخيرًا ، قم بأتمتة هذه العملية عن طريق إنشاء ماكرو مخصص. على سبيل المثال ، يربط المقتطف التالي أمر IP الخاص بي بـ QW.
.de QW .IP [-] 4 .. .RS .QW This is my first item. .QW This is my second item. .QW This is my third item. .RE
قم بإنشاء جداول مع المعالجات الأولية في Troff
أحد الأشياء الغريبة في Troff هو أن معظم ميزاته موجودة هناك “العلاجات الأولية”. بالنسبة للجزء الأكبر ، هذه ثنائيات خارج البرنامج تعمل عن طريق الإنشاء “البرامج النصية لحاوية المعالج المسبق” وتحويله إلى رمز Troff منخفض المستوى.
يُعد Tbl مثالًا رائعًا على معالج Troff المسبق. إنه برنامج يدير الجداول في مستند. تبدو حاوية Tbl الأساسية كما يلي:
.TS allbox ; c c c. item1 <Tab> item2 <Tab> item3 item4 <Tab> item5 <Tab> item6 .TE
- يخبر الأمران .TS و .TE Tbl أن هذه بيئة يمكنه قراءتها.
- يخبر السطر الثاني البرنامج بكيفية تنسيق هذا الجدول.
- السطر الثالث هو حقل مفصول بمسافة يحدد مقدار الأعمدة ومحاذاة الجدول الخاص بك.
- السطران الرابع والخامس عبارة عن حقول مفصولة بعلامات جدولة تحتوي على محتويات الجدول الخاص بك.
يختلف تجميع مستند باستخدام Tbl قليلاً عن ملف Troff العادي. أولاً ، قم بتحميل ملفك:
tbl my-first-document.ms > preprocessed.ms
بعد ذلك ، قم بتغذية إخراج البرنامج إلى Troff:
groff -ms -Tpdf ./preprocessed.ms > output.pdf
أخيرًا ، أتمتة هذه العملية باستخدام أنابيب UNIX:
tbl my-first-document.ms | groff -ms -Tpdf > output.pdf
أسئلة مكررة:
س 1: هل من الممكن استخدام Troff في Windows؟
الاجابة. بشكل افتراضي ، لا يتم نقل Troff و Groff رسميًا إلى Windows. على الرغم من ذلك ، لا يزال بإمكانك استخدام Groff مع أدوات GNU الأخرى عن طريق تثبيت Windows Subsystem for Linux.
س 2: هل لدى Troff ميزة تتبع ببليوغرافيا؟
الاجابة. نعم. الإحالة عبارة عن معالج مسبق بسيط يستخدم ملف ببليوغرافيا خارجيًا لتتبع المراجع تلقائيًا في مستند Troff. يمكنك معرفة المزيد حول كيفية عملها من خلال زيارة صفحة الدليل الخاصة بها عن طريق تشغيل رجل الإحالة.
Q3: كيف يمكنني إصلاح خطأ “DESC مفقود” عند تجميع Troff؟
الاجابة. من المحتمل أن تكون هذه المشكلة بسبب تبعية مفقودة في نظامك أو ملف إصدار غير متطابق. لإصلاح ذلك ، قم بتثبيت حزمة groff المناسبة من مستودع التوزيع الخاص بك.