tbl(1)

الاسم
tbl - يُحضّر الجداول لمستندات groff

موجز
tbl [-C] [ملف ...]

tbl --help

tbl -v
tbl --version

الوصف
يُعدّ تطبيق GNU للأداة tbl جزءًا من نظام تنسيق المستندات groff(1) إنّ tbl هو معالج أولي لـ troff(1) يُترجم أوصاف الجداول المضمنة في مدخلات roff(7) إلى اللغة التي يفهمها troff. ينسخ محتويات كل ملف إلى مجرى المخرجات القياسي، محوّلًا كل منطقة جدول بين الأسطر التي تبدأ بـ .TS و .TE إلى تعليمات لمنسق GNU troff. بينما تتوافق صيغة مدخلات GNU tbl بشكل كبير مع AT&T tbl، إلا أن المخرجات التي ينتجها GNU tbl لا يمكن معالجتها بواسطة AT&T troff؛ لذا يجب استخدام GNU troff (أو أي troff يطبق امتدادات GNU المستخدمة). عادةً، لا يُنفّذ tbl مباشرةً من قبل المستخدم، بل يُستدعى بتحديد الخيار -t للأداة groff(1). إذا لم توجد معاملات ملف، أو إذا كان الملف هو “-”، يقرأ tbl مجرى المدخلات القياسي.

  نظرة عامة
يتوقع tbl العثور على أوصاف الجداول بين أسطر المدخلات التي تبدأ بـ .TS (بداية الجدول) و .TE (نهاية الجدول). تتضمن كل منطقة جدول من هذا النوع وصفًا واحدًا أو أكثر للجداول. داخل منطقة الجدول، يجب أن يسبق كل وصف جدول (بعد الوصف الأول) سطر مدخلات يبدأ بـ .T&. هذه الآلية لا تبدأ منطقة جدول جديدة؛ تُعامل جميع أوصاف الجداول كجزء من غلاف .TS/.TE الخاص بها، حتى لو كانت محاطة بإطارات أو لها عناوين أعمدة تتكرر في الصفحات اللاحقة (انظر أدناه).

(يجب على مستخدمي roff المتمرسين ملاحظة أن tbl ليس مفسرًا للغة roff: يجب استخدام محرف التحكم المبدئي، ولا يُسمح بمسافات أو علامات جدولة بين محرف التحكم واسم الماكرو. تظل رموز مدخلات tbl هذه كما هي في المخرجات، حيث تصبح استدعاءات ماكرو عادية. غالبًا ما تُعرّف حزم الماكرو ماكروهات TS و T& و TE للتعامل مع مشكلات وضع الجداول في الصفحة. ينتج tbl طلبات troff لتعريف هذه الماكروهات كفارغة إذا لم تكن تعريفاتها موجودة عندما يواجه المنسق منطقة جدول.)

قد تبدأ كل منطقة جدول بـ خيارات المنطقة، ويجب أن تحتوي على تعريف جدول واحد أو أكثر؛ يحتوي كل تعريف جدول على مواصفات التنسيق متبوعة بسطر مدخلات واحد أو أكثر (صفوف) من المدخلات. تشكل هذه المدخلات بيانات الجدول.

  خيارات المنطقة
قد يحدد السطر الذي يلي رمز .TS مباشرةً خيارات المنطقة، وهي كلمات مفتاحية تؤثر على تفسير أو صيرورة المنطقة ككل أو جميع مدخلات الجدول داخلها دون تمييز. افصل بين خيارات المنطقة المتعددة بفاصلات أو مسافات أو علامات جدولة. تلك التي تتطلب معاملًا بين قوسين تسمح بمسافات وعلامات جدولة بين اسم الخيار وقوس الفتح. تتراكم الخيارات ولا يمكن إلغاؤها داخل منطقة بمجرد التصريح عنها؛ وإذا تكرر خيار يأخذ معاملًا، فإن التكرار الأخير هو الذي يسود. في حال وجودها، يجب إنهاء مجموعة خيارات المنطقة بفاصلة منقوطة (;).

أي من خيارات المنطقة allbox و box و doublebox و frame و doubleframe تجعل الجدول “مؤطرًا” لغرض المناقشة اللاحقة.

allbox
    إحاطة كل مدخل في الجدول بإطار؛ ويتضمن ذلك الخيار box.

box إحاطة منطقة الجدول بأكملها بإطار. تتعرف أداة GNU tbl على frame كمرادف.

center
    توسيط منطقة الجدول بالنسبة لطول السطر، مع تقليل الإزاحة إذا لزم الأمر (مع إصدار تحذير وقت التنسيق) لجعل منطقة الجدول مناسبة؛ المبدئي هو محاذاتها لليسار. تتعرف أداة GNU tbl على centre كمرادف.

decimalpoint(c)
    التعرف على المحرف c كفاصل عشري في الأعمدة التي تستخدم المصنف N (الرقمي) (انظر القسم الفرعي “مصنفات الأعمدة” أدناه). هذا امتداد من GNU.

delim(xy)
    التعرف على المحرفين x و y كمحددي بداية ونهاية، على التوالي، لمدخلات eqn(1) ، وتجاهل المدخلات بينهما. ليس من الضروري أن يكون x و y متمايزين.

doublebox
    إحاطة منطقة الجدول بأكملها بإطار مزدوج؛ ويتضمن ذلك الخيار box. تتعرف أداة GNU tbl على doubleframe كمرادف.

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

linesize(n)
    رسم الخطوط أو القواعد (مثل تلك الناتجة عن box) بسمك n نقطة. المبدئي هو حجم الخط الحالي عند بدء المنطقة. ليس لهذا الخيار أي تأثير على أجهزة الطرفية.

nokeep
    عدم استخدام تحويلات (diversions) لـ roff لإدارة فواصل الصفحات. عادةً، يستخدمها tbl لتجنب كسر الصفحة داخل صف الجدول. قد يتداخل هذا الاستخدام أحيانًا بشكل سيئ مع استخدام حزم الماكرو للتحويلات—عند استخدام الحواشي السفلية، على سبيل المثال. هذا امتداد من GNU.

nospaces
    تجاهل المسافات البادئة واللاحقة في مدخلات الجدول. هذا امتداد من GNU.

nowarn
    كتم الرسائل التشخيصية المنتجة في وقت تنسيق المستند عندما يكون طول السطر والإزاحة أو طول الصفحة غير كافٍ لاحتواء صف الجدول. هذا امتداد من GNU.

tab(c)
    استخدام المحرف c بدلًا من علامة الجدولة للفصل بين المدخلات في صف من بيانات الجدول.

  مواصفات تنسيق الجدول
تُعد مواصفات تنسيق الجدول إلزامية: فهي تحدد عدد الأعمدة في الجدول وتوجه كيفية تنضيد المدخلات داخله. مواصفات التنسيق هي سلسلة من واصفات الأعمدة. يرمز كل واصف لـ مصنف متبوعًا بصفر أو أكثر من المعدلات. المصنفات هي أحرف (يتم التعرف عليها بغض النظر عن حالة الأحرف) أو رموز ترقيم؛ وتتكون المعدلات من أحرف أو أرقام أو تبدأ بها. تفصل المسافات وعلامات الجدولة والأسطر الجديدة والفاصلات بين الواصفات. تُطبق الأسطر الجديدة والفاصلات الواصفات التي تليها على الصف اللاحق من الجدول (مما يسمح، على سبيل المثال، بتوسيط عناوين الأعمدة أو جعلها عريضة بينما لا تكون مدخلات بيانات الجدول كذلك). نسمي مجموعة واصفات الأعمدة الناتجة بـ تعريف الصف. داخل تعريف الصف، غالبًا ما يكون الفصل بين واصفات الأعمدة بمسافات أو علامات جدولة اختياريًا؛ فقط بعض المعدلات، الموضحة أدناه، تجعل الفصل ضروريًا.

يختار المصنف من بين عدة ترتيبات. يحدد بعضها موضع مدخلات الجدول داخل خلية مستطيلة: موسطة، محاذاة لليسار، رقمية (محاذاة لفاصل عشري قابل للضبط)، وهكذا. تؤدي مصنفات أخرى عمليات خاصة مثل رسم الخطوط أو دمج المدخلات من الخلايا المتجاورة في الجدول. باستثناء “|”، يمكن أن يتبع أي مصنف واحد أو أكثر من المعدلات؛ يقبل بعضها معاملًا، والذي يمكن وضعه بين قوسين في GNU tbl. تختار المعدلات الخطوط، وتضبط حجم التنضيد، وتؤدي مهام أخرى موضحة أدناه.

يمكن أن تشغل مواصفات التنسيق عدة أسطر مدخلات، ولكن يجب أن تنتهي بنقطة “.” متبوعة بسطر جديد. يُطبق كل تعريف صف بدوره على صف واحد من الجدول. يطبق tbl آخر تعريف صف على صفوف بيانات الجدول الزائدة عن تعريفات الصفوف.

للتوضيح في أمثلة هذا المستند، نكتب المصنفات بأحرف كبيرة والمعدلات بأحرف صغيرة. بناءً على ذلك، “CbCb,LR.” يُعرّف صفين من عمودين. تكون مدخلات الصف الأول موسطة وعريضة؛ بينما تكون الأعمدة الأولى والثانية للصف الثاني وأي صفوف أخرى محاذاة لليسار ولليمين، على التوالي. أي صفوف من المدخلات المضافة إلى بيانات الجدول تعيد استخدام تعريف الصف “LR”.

يحدد تعريف الصف الذي يحتوي على أكبر عدد من واصفات الأعمدة عدد الأعمدة في الجدول؛ وأي تعريف صف يحتوي على عدد أقل، يوسعه GNU tbl ضمنيًا من الجانب الأيمن باستخدام الواصفات L بالقدر اللازم لجعل الجدول مستطيلاً.

  مصنفات الأعمدة
المصنفات L و R و C هي الأسهل فهمًا واستخدامًا.

A, a
    توسيط أطول مدخل في هذا العمود، ومحاذاة المدخلات المتبقية في العمود لليسار بالنسبة للمدخل الموسط، ثم إزاحة جميع المدخلات بمقدار en واحد. يمكن استخدام مثل هذه المدخلات “الأبجدية” (ومن هنا جاء اسم المصنف) في نفس العمود مع المدخلات المصنفة كـ L، كما في “LL,AR.”. غالبًا ما تُسمى مدخلات A بـ “الأعمدة الفرعية” نظرًا لإزاحتها.

C, c
    توسيط المدخلة داخل العمود.

L, l
    محاذاة المدخلة لليسار داخل العمود.

N, n
    محاذاة المدخلة رقميًا في العمود. يحاذي tbl أعمدة الأرقام العشرية عموديًا عند خانة الآحاد. إذا تجاور أكثر من فاصل عشري مع رقم ما، يُستخدم الفاصل الذي في أقصى اليمين للمحاذاة العمودية. في حال عدم وجود فاصل عشري، يستخدم tbl الرقم الذي في أقصى اليمين للمحاذاة العمودية؛ وإذا لم توجد أي أرقام، يوسّط tbl المدخلة داخل العمود. تحدد محرفة roff الوهمية \& في المدخلة الرمز الذي يسبقها (إن وجد) كمكان للآحاد؛ وإذا تكررت في البيانات، يستخدم tbl أقصى واحدة جهة اليسار للمحاذاة.

    إذا اشتركت مدخلات مصنفة كـ N في عمود مع مدخلات L أو R ، يوسّط tbl أعرض مدخلة N بالنسبة لأعرض مدخلة L أو R ، مع الحفاظ على محاذاة مدخلات N بالنسبة لبعضها البعض.

    قد تتعارض الفواصل العشرية في معادلات eqn داخل الأعمدة المصنفة كـ N مع استخدام tbl لها في المحاذاة. حدد خيار منطقة delim لجعل tbl يتجاهل البيانات الموجودة داخل محددات eqn.

R, r
    محاذاة المدخلة لليمين داخل العمود.

S, s
    دمج المدخلة السابقة على اليسار في هذا العمود.

^   دمج المدخلة في نفس العمود من الصف السابق في هذا الصف.

_, -
    استبدال مدخلة الجدول بخط أفقي. يتوقع tbl مدخلة جدول فارغة لتتوافق مع هذا المصنف؛ إذا وُجدت بيانات هناك، يُصدِر رسالة تشخيصية. إذا كان تعريف الصف بأكمله يتكون من هذه المصنفات (يكفي واحد فقط)، يُعامل كـ “_” يشغل صفًا من مدخلات الجدول، ولا يُتوقع وجود بيانات مقابلة.

=   استبدال مدخلة الجدول بخط أفقي مزدوج. يتوقع tbl مدخلة جدول فارغة لتتوافق مع هذا المصنف؛ إذا وُجدت بيانات هناك، يُصدِر رسالة تشخيصية. إذا كان تعريف الصف بأكمله يتكون من هذه المصنفات (يكفي واحد فقط)، يُعامل كـ “=” يشغل صفًا من مدخلات الجدول، ولا يُتوقع وجود بيانات مقابلة.

|   وضع خط عمودي على الصف المقابل من الجدول (إذا تجاور اثنان من هذه، يوضع خط عمودي مزدوج). لا يساهم هذا المصنف في عدد الأعمدة ولا تقابله أي مدخلات جدول. يؤدي وضع | إلى يسار واصف العمود الأول أو إلى يمين الأخير إلى إنشاء خط عمودي عند حافة الجدول؛ وهذه الخطوط زائدة (وتُتجاهل) في الجداول المؤطرة.

لتغيير تنسيق الجدول داخل منطقة tbl، استخدم رمز .T& في بداية السطر. أتبعه بمواصفات التنسيق وبيانات الجدول، ولكن ليس خيارات المنطقة. لا يمكن لعدد الأعمدة في التنسيق الذي يتم تقديمه بهذه الطريقة أن يزيد بالنسبة للتنسيق السابق؛ في هذه الحالة، يجب إنهاء منطقة الجدول وبدء واحدة أخرى. إذا لم يكن ذلك مفيدًا لأن المنطقة تستخدم خيارات الإطار أو لأن الأعمدة تتحاذى بطريقة غير مرغوب فيها، يجب تصميم مواصفات تنسيق الجدول الأولية لتشمل أقصى عدد مطلوب من الأعمدة، واستخدام مصنف الدمج الأفقي S عند الضرورة لتحقيق محاذاة الأعمدة المطلوبة.

يعد الدمج أفقيًا في العمود الأول أو عموديًا في الصف الأول خطأً. لا يدعم tbl مناطق الدمج غير المستطيلة.

  معدلات الأعمدة
يمكن لأي عدد من المعدلات أن يتبع مصنف العمود. معطيات المعدل، حيثما تُقبل، تكون حساسة لحالة الأحرف. إذا طُبق معدل معين على مصنف أكثر من مرة، أو طُبقت معدلات متعارضة، فإن التواجد الأخير فقط هو الذي يسري مفعوله. المعدل x يتعارض مع e و w، لكن e لا يتعارض مع w؛ إذا استُخدمت هذه معًا، فإن x يلغي كلاً من e و w، بينما يتجاوز أي من e أو w المعدل x.

b, B
    تنسيق المدخلة بخط عريض، وهو اختصار لـ f(B).

d, D
    محاذاة مدخلة الجدول المدمجة عموديًا إلى الأسفل (“down”)، بدلاً من التوسيط، ضمن نطاقها. هذا امتداد من GNU.

e, E
    مساواة عروض الأعمدة التي تحمل هذا المعدل بعرض العمود الأعرض. يضبط هذا المعدل طول السطر المبدئي المستخدم في كتلة نصية.

f, F
    اختيار نوع الخط لمدخلة الجدول. يجب أن يتبعه اسم خط أو نمط (حرف واحد أو حرفان لا يبدآن برقم)، أو موضع تثبيت الخط (رقم واحد)، أو اسم أو موضع تثبيت بأي طول بين قوسين. الشكل الأخير هو امتداد من جي‌إن‌يو. (يقابل هذا المعطى ما يقبله طلب ft في troff.) يجب أن ينتهي وصف الصف بمعطى من حرف واحد ليس بين قوسين، أو يُفصل بمسافة واحدة أو أكثر أو بعلامات جدولة عما يليه.

i, I
    تنسيق المدخلة بخط مائل، وهو اختصار لـ f(I).

m, M
    استدعاء ماكرو groff قبل تنسيق كتلة نصية (انظر القسم الفرعي “الكتل النصية” أدناه). هذا امتداد من GNU. يجب أن يتبعه اسم ماكرو مكون من حرف أو حرفين، أو اسم بأي طول بين قوسين. يجب فصل اسم الماكرو المكون من حرف واحد وليس بين قوسين بمسافة واحدة أو أكثر أو بعلامات جدولة عما يليه. يجب تعريف الماكرو المسمى قبل مواجهة منطقة الجدول التي تحتوي على معدل العمود هذا. يجب أن يحتوي الماكرو على طلبات groff بسيطة فقط لتغيير تنسيق النص، مثل الضبط أو الوصل. يُستدعى الماكرو بعد سريان مفعول معدلات العمود b و f و i و p و v؛ وبالتالي يمكنه تجاوز معدلات العمود الأخرى.

p, P
    ضبط حجم الخط. يجب أن يتبعه رقم صحيح n مع إشارة اختيارية في بدايته. إذا كان بدون إشارة، يُضبط حجم الخط على n نقطة. خلاف ذلك، يتم زيادة حجم الخط أو إنقاصه حسب الإشارة بمقدار n نقطة. استخدام رقم متعدد الخانات مع إشارة هو امتداد من جي‌إن‌يو. (يقابل هذا المعطى ما يقبله طلب ps في troff.) إذا كان معدل حجم الخط متبوعًا بمعدل فصل الأعمدة (انظر أدناه)، فيجب فصلهما بمسافة واحدة أو علامة جدولة واحدة على الأقل.

t, T
    محاذاة مدخلة الجدول المدمجة عموديًا إلى الأعلى، بدلاً من التوسيط، ضمن نطاقها.

u, U
    تحريك العمود للأعلى بمقدار نصف سطر، مما يؤدي لـ “تبادل” الصفوف. هذا امتداد من Documenter's Workbench (DWB) 1.0 وإصدار Research Tenth Edition Unix.

v, V
    ضبط التباعد العمودي لكتلة نصية. يجب أن يتبعه رقم صحيح n مع إشارة اختيارية في بدايته. إذا كان بدون إشارة، يُضبط التباعد العمودي على n نقطة. خلاف ذلك، يتم زيادة التباعد العمودي أو إنقاصه حسب الإشارة بمقدار n نقطة. استخدام رقم متعدد الخانات مع إشارة هو امتداد من جي‌إن‌يو. (يقابل هذا المعطى ما يقبله طلب vs في troff.) إذا كان معدل التباعد العمودي متبوعًا بمعدل فصل الأعمدة (انظر أدناه)، فيجب فصلهما بمسافة واحدة أو علامة جدولة واحدة على الأقل.

w, W
    ضبط العرض الأدنى للعمود. يجب أن يتبعه رقم، إما عدد صحيح بدون وحدة، أو قياس أفقي بأسلوب roff بين قوسين. يُشترط استخدام القوسين إذا كان العرض سيُتبع مباشرة بفصل صريح للأعمدة (كبديل، يمكن إتباع العرض بمسافة واحدة أو أكثر أو علامة جدولة). في حال عدم تحديد وحدة، يُفترض أنها بوحدة en. يضبط هذا المعدل طول السطر المبدئي المستخدم في كتلة نصية.

x, X
    توسيع العمود. بعد حساب عروض الأعمدة، يتم توزيع أي طول متبقي للسطر بالتساوي على جميع الأعمدة التي تحمل هذا المعدل. هذا امتداد من Documenter's Workbench (DWB) 3.3. تطبيق المعدل x على أكثر من عمود واحد هو امتداد من جي‌إن‌يو. يضبط هذا المعدل طول السطر المبدئي المستخدم في كتلة نصية.

z, Z
    تجاهل مدخلات الجدول المقابلة لهذا العمود لأغراض حساب العرض؛ أي يتم حساب عرض العمود باستخدام المعلومات الموجودة في واصفه فقط. هذا امتداد من Documenter's Workbench (DWB) 1.0 وإصدار Research Tenth Edition Unix.

n   تحدد اللاحقة الرقمية في واصف العمود مسافة الفصل (بوحدات en) عن العمود التالي؛ والمسافة المبدئية هي 3n. يتم ضرب هذا الفصل تناسبيًا إذا كان خيار منطقة expand مفعلًا؛ وفي حالة الجداول التي يفوق عرضها طول سطر المخرجات، قد يكون هذا الفصل صفرًا. لا يمكن تحديد مسافة فصل سالبة. إن وجود قيمة فصل بعد آخر عمود في الصف أمر لا معنى له ويؤدي لصدور رسالة تشخيصية من tbl.

  بيانات الجدول
ضع بيانات الجدول في أسطر بعد مواصفات التنسيق. يقابل كل سطر نصي صفًا في الجدول، باستثناء أن الخط المائل العكسي في نهاية سطر من بيانات الجدول يُكمل المدخلة في سطر الإدخال التالي. (كتل النصوص، الموضحة أدناه، توزع مدخلات الجدول أيضًا عبر أسطر إدخال متعددة.) تُفصل مدخلات الجدول داخل الصف في الإدخال بمحرف جدولة (tab) بشكل مبدئي؛ راجع خيار المنطقة tab أعلاه. المدخلات الزائدة في صف من بيانات الجدول (تلك التي ليس لها واصف عمود مقابل، ولا حتى واصف ضمني ناشئ عن جعل الجدول مستطيلًا)، يتجاهلها tbl مع رسالة تشخيصية. يمرر tbl أسطر تحكم roff دون تغيير إلى مخرجاته. إذا كنت ترغب في وسم مدخلة جدول فارغة بشكل مرئي في مصدر المستند، فاملأها بمحرف roff الوهمي \&. تُقاطع بيانات الجدول بسطر يتكون من وسم الإدخال .T&، وتنتهي بالسطر .TE.

عادةً، تُنضد مدخلة الجدول بشكل صارم. لا تُملأ، ولا تُكسر، ولا تُفصل بواصلة، ولا تُحاذى، ولا تُزود بمسافات إضافية بين الجمل. يوجه tbl المنسق لقياس كل مدخلة جدول فور ظهورها في الإدخال، محدثًا العرض المطلوب للعمود المقابل لها. إذا طُبق المعدل z على المدخلة، يُتجاهل هذا القياس؛ وإذا طُبق w وكان معطاه أكبر من هذا العرض، يُستخدم ذلك المعطى بدلًا منه. على عكس إدخال roff التقليدي (داخل فقرة مثلًا)، فإن التغييرات في تنسيق النص، مثل اختيار الخط أو التباعد العمودي، لا تستمر بين المدخلات.

يفسر tbl عدة أشكال من مدخلات الجدول بشكل خاص.

•   إذا احتوى صف الجدول فقط على شرطة سفلية أو علامة يساوي (_ أو =)، يرسم tbl خطًا أفقيًا مفردًا أو مزدوجًا، على التوالي، عبر الجدول عند تلك النقطة.

•   إذا احتوت مدخلة جدول فقط على _ أو = في صف مأهول ببيانات أخرى، يملأ tbl خليتها بخط أفقي مفرد أو مزدوج، على التوالي، يتصل بجيرانه.

•   إذا احتوت مدخلة جدول فقط على \_ أو \= في صف مأهول ببيانات أخرى، يملأ tbl خليتها بخط أفقي مفرد أو مزدوج، على التوالي، لا يتصل (تمامًا) بجيرانه.

•   إذا احتوت مدخلة جدول فقط على \Rx، حيث x هو أي محرف roff عادي أو خاص أو مفهرس، يملأ tbl خليتها بتكرارات كافية للرمز المقابل لـ x لملء العمود دون الاتصال بجيرانه.

•   في أي صف عدا الصف الأول، تؤدي مدخلة جدول تحتوي على \^ إلى توسيع المدخلة التي فوقها لتشمل المدخلة الحالية.

في بعض الأحيان، قد تكون هذه الوسوم الخاصة مطلوبة كبيانات جدول حرفية. لاستخدام _ أو = حرفيًا وبمفردهما في مدخلة، أضف محرف roff الوهمي \& كبادئة أو لاحقة لهما. للتعبير عن \_ أو \= أو \R، استخدم تسلسل هروب roff لإقحام الخط المائل العكسي (\e أو \[rs]). ثمة طريقة موثوقة لوضع تسلسل الرموز \^ داخل مدخلة جدول وهي استخدام زوج من تسلسلات هروب المحارف الخاصة لـ groff (\[rs]\[ha]).

يمكن تداخل صفوف مدخلات الجدول مع أسطر تحكم groff؛ وهذه لا تُحسب كبيانات جدول. في هذه الأسطر، يجب استخدام محرف التحكم المبدئي (.) (وعدم تغييره)؛ ولا يُتعرف على محرف التحكم غير القابل للكسر. لبدء أول مدخلة جدول في صف بنقطة، اسبقها بمحرف roff الوهمي \&.

  كتل النصوص
يمكن لمحتويات مدخلة جدول عادية أن تجعل العمود، وبالتالي الجدول، عريضًا جدًا؛ مما يؤدي لتجاوز الجدول طول سطر الصفحة، فيصبح قبيحًا أو يتعرض للاقتطاع بواسطة جهاز الإخراج. عندما تتطلب مدخلة جدول تنضيدًا أكثر تقليدية، بحيث تنكسر عبر أكثر من سطر إخراج (وبالتالي تزيد من ارتفاع صفها)، يمكن وضعها داخل كتلة نص.

يفسر tbl مدخلة الجدول “T{” في نهاية سطر الإدخال بشكل خاص، كوسم لبدء كتلة نص. وبالمثل، فإن المدخلة “T}” في بداية سطر الإدخال تنهي كتلة النص. يمكن لأوسمة كتل النصوص مشاركة سطر إدخال مع بيانات جدول أخرى (تسبق T{ وتلي T}). أسطر الإدخال بين هذه الأوسمة تُنسق في تحويلة بواسطة troff. لا يمكن تداخل كتل النصوص. يمكن أن تحدث كتل نصوص متعددة في صف واحد من الجدول.

تُنسق كتل النصوص كما كان النص قبل الجدول، مع تعديلها بواسطة واصفات الأعمدة المعمول بها. تحديدًا، تحدد المصنفات A و C و L و N و R و S محاذاة كتلة النص داخل خليتها، ولكن ليس ضبطها. أضف طلبات na أو ad إلى بداية كتلة النص لتغيير ضبطها بشكل متميز عن النصوص الأخرى في المستند. كما هو الحال مع مدخلات الجدول الأخرى، عند انتهاء كتلة النص، تُهمل أي تعديلات على معلمات التنسيق. ولا تؤثر على مدخلات الجدول اللاحقة، ولا حتى على كتل نصوص أخرى.

إذا لم تُحدد معدلات w أو x لـ جميع أعمدة مدى كتلة النص، فإن الطول المبدئي لكتلة النص (بدقة أكثر، طول السطر المستخدم لمعالجة تحويلة كتلة النص) يُحسب كـ LC/(N+1)، حيث L هو طول السطر الحالي، و C هو عدد الأعمدة التي تشغلها كتلة النص، و N هو عدد الأعمدة في الجدول. إذا لزم الأمر، يمكنك أيضًا التحكم في عرض كتلة النص بتضمين طلب ll (طول السطر) فيها قبل أي نص مطلوب تنسيقه. نظرًا لأن tbl يستخدم تحويلة لتنسيق كتلة النص، فإن ارتفاعها وعرضها متاحان لاحقًا في مسجلات troff المسماة dn و dl، على التوالي.

  واجهة roff
يخزن المسجل TW عرض منطقة الجدول بوحدات أساسية؛ ولا يمكن استخدامه داخل المنطقة نفسها، ولكنه يُعرف قبل إخراج وسم .TE لكي يتمكن ماكرو troff المسمى TE من استخدامه. “T.” هو مسجل بقيمة منطقية يشير إلى ما إذا كان يتم معالجة أسفل الجدول. يُستخدم مسجل #T داخليًا. تجنب استخدام هذه الأسماء لأي غرض آخر.

يعرف tbl أيضًا ماكرو T# لإنتاج الخطوط السفلية والجانبية لجدول مُحاط بإطار. بينما يقوم tbl نفسه بترتيب المخرجات لتشمل استدعاءً لهذا الماكرو في نهاية هذا الجدول، يمكن استخدامه أيضًا بواسطة حزم الماكرو لإنشاء إطارات للجداول متعددة الصفحات عن طريق استدعائه من ماكرو تذييل الصفحة الذي يُستدعى بدوره بواسطة مصيدة (trap) موضوعة بالقرب من أسفل الصفحة. راجع قسم “القيود” أدناه لمزيد من المعلومات حول الجداول متعددة الصفحات.

يستخدم GNU tbl داخليًا أسماء مسجلات وسلاسل وماكرو وتحويلات تبدأ بالرقم 3. يجب ألا يستخدم المستند المراد معالجته مسبقًا بـ GNU tbl أيًا من هذه المعرفات.

  التفاعل مع eqn
عالج المستند باستخدام tbl قبل eqn(1). (يرتب groff(1) المعالجات المسبقة آليًا بالترتيب الصحيح.) لا تستدعِ ماكروات EQ و EN داخل الجداول؛ بدلًا من ذلك، اضبط المحددات في إدخال eqn الخاص بك واستخدم خيار منطقة delim لكي يتعرف عليها tbl.

  تحسينات GNU tbl
بالإضافة إلى الامتدادات المذكورة أعلاه، يزيل GNU tbl القيود التي كان يعاني منها مستخدمو AT&T tbl.

•   يمكن تحديد خيارات المنطقة بأي حالة أحرف.

•   لا يوجد حد لعدد الأعمدة في الجدول، بغض النظر عن تصنيفها، ولا يوجد أي حد لعدد كتل النصوص.

•   يأخذ GNU tbl في الاعتبار جميع صفوف الجدول عند حساب عرض الأعمدة، وليس فقط تلك الموجودة في أول 200 سطر إدخال للمنطقة. وبالمثل، فإنه يتعرف على أوسمة متابعة الجدول (.T&) خارج أول 200 سطر إدخال للمنطقة.

•   قد تظهر المدخلات الرقمية والأبجدية في العمود نفسه.

•   قد تمتد المدخلات الرقمية والأبجدية أفقيًا.

  استخدام GNU tbl داخل الماكروات
يمكنك تضمين منطقة جدول داخل تعريف ماكرو. ومع ذلك، بما أن tbl يكتب تعريفات الماكرو الخاصة به في بداية كل منطقة جدول، فمن الضروري استدعاء ماكروات الإنهاء بدلًا من إنهاء تعريفات الماكرو بـ “..”. بالإضافة إلى ذلك، يجب تعطيل محرف الهروب.

لا يمكن استخدام جميع ميزات tbl من هذه الماكروات لأن tbl هو معالج مسبق لـ roff: فهو يرى الإدخال قبل أن يراه troff. على سبيل المثال، تفشل المحاذاة العمودية للفواصل العشرية إذا كانت الأرقام التي تحتوي عليها تظهر كمعطيات ماكرو أو سلسلة؛ حيث يتم إجراء المحاذاة بواسطة tbl نفسه، الذي يرى فقط \$1 و \$2 وهكذا، وبالتالي لا يمكنه التعرف على الفاصلة العشرية التي تظهر لاحقًا فقط عندما يقوم troff بإقحام تعريف الماكرو أو السلسلة.

استخدام ماكروات tbl داخل إدخال مشروط (أي، يعتمد على طلب if أو ie أو el أو while) يمكن أن يؤدي إلى أرقام أسطر مضللة في التشخيصات اللاحقة. يقوم tbl بحقن مخرجاته دون قيد أو شرط في المستند المصدر، ولكن الفرع المشروط الذي يحتويه قد لا يُسلك، وإذا لم يُسلك، فإن طلبات lf التي يحقنها tbl لاستعادة رقم سطر المصدر لا يمكن أن يسري مفعولها. فكر في نسخ مسجل عداد أسطر الإدخال “c.” واستعادة قيمته في موقع مناسب بعد إجراء الحسابات اللازمة.

الخيارات
يعرض --help رسالة الاستخدام، بينما يعرض -v و --version معلومات الإصدار؛ ويخرج الجميع بعد ذلك.

-C  مكّن وضع توافق AT&T: التعرف على .TS و .TE حتى لو تبعها محرف آخر غير المسافة أو السطر الجديد، وتفسير تسلسل هروب القائد (leader) في وضع النسخ \a كمحرف قائد.

حالة الخروج
يخرج tbl بالحالة 0 عند نجاح العملية، وبالحالة 2 إذا لم يتمكن البرنامج من تفسير معطيات سطر الأوامر، وبالحالة 1 إذا واجه خطأً أثناء العملية.

القيود
داخل منطقة tbl (باستثناء كتل النصوص أو أسطر تحكم roff)، تجنب تسلسلات الهروب التي تقرأ بقية سطر الإدخال، كما تفعل \" و \!.

الجداول متعددة الصفحات، إذا كانت محاطة بإطار و/أو كنت ترغب في تكرار عناوين أعمدتها بعد فواصل الصفحات، تتطلب دعمًا وقت تنسيق المستند. نشأ عرف لهذا الدعم في حزم الماكرو مثل ms و mm و me. لاستخدامه، اتبع وسم .TS بمسافة ثم “H”؛ سيقوم المنسق بتفسير ذلك كاستدعاء ماكرو TS مع معطى H. بعد ذلك، داخل بيانات الجدول، استدعِ ماكرو TH؛ وهذا يعلم حزمة الماكرو بمكان انتهاء العناوين. إذا لم يكن لجدولك صفوف عناوين كهذه، أو كنت لا ترغب في تكرارها، فاستدعِ TH مباشرة بعد مواصفات تنسيق الجدول. إذا كان الجدول متعدد الصفحات محاطًا بإطار أو يحتوي على عناوين أعمدة مكررة، فلا تحطه بماكروات الحفظ/التحرير (keep/release)، ولا تحوله بأي طريقة أخرى. علاوة على ذلك، لن يؤدي طلب bp إلى فاصل صفحات في جدول “TS H”. عرف ماكرو لتغليف bp: استدعِه بشكل طبيعي إذا لم يكن هناك تحويلة حالية. خلاف ذلك، مرر استدعاء الماكرو إلى التحويلة المحيطة باستخدام تسلسل هروب السطر الشفاف \!؛ سيؤدي هذا إلى "تصعيد" فاصل الصفحة إلى جهاز الإخراج. راجع قسم “أمثلة” أدناه للحصول على توضيح.

لا يدعم grotty(1) الخطوط الأفقية المزدوجة؛ بل يستخدم خطوطًا مفردة بدلًا منها. كما يتجاهل حركات نصف السطر، لذا فإن معدل العمود u ليس له أي تأثير. في أجهزة الطرفية (“وضع nroff ”)، تشغل الخطوط الأفقية وحدود الإطارات مسافة سطر كامل؛ ويضاعف doublebox ذلك للحدود. وبالتالي، تتطلب الجداول التي تستخدم هذه الميزات مساحة عمودية أكبر في وضع nroff عنها في وضع troff: اكتب طلبات ne وفقًا لذلك. تُرسم الخطوط العمودية بين الأعمدة في المسافة بين الأعمدة في وضع nroff؛ استخدام خطوط عمودية مزدوجة و/أو تقليل تباعد الأعمدة عن القيمة المبدئية يمكن أن يجعلها قبيحة أو يؤدي لتراكب بيانات الجدول فوقها.

يجب أن تكون كتلة النص داخل الجدول قادرة على الاحتواء في صفحة واحدة.

استخدام \a لوضع الرواد (leaders) في مدخلات الجدول لا يعمل في GNU tbl، إلا في وضع التوافق. هذا هو السلوك الصحيح: \a هو رائد غير مفسر. لا يزال بإمكانك استخدام محرف الرائد الخاص بـ roff (Control+A) أو تعريف سلسلة نصية لاستخدام \a كما صُمم: ليُفسر فقط في وضع النسخ.

        .ds a \a
        .TS
        box center tab(;);
        Lw(2i)0 L.
        السكان\*a;6,327,119
        .TE

التعداد | 6,327,119

إن وجود “|” بادئ أو لاحق في مواصفات التنسيق، كما في “|LCR|.”، ينتج مسافة (en space) بين القواعد ومحتوى الأعمدة المتجاورة. إذا كانت هذه المسافة غير مرغوبة (يجب أن تلاصق القاعدة المحتوى)، يمكنك إدراج أعمدة “وهمية” بفاصل صفري ومدخلات جدول فارغة مقابلة قبلها و/أو بعدها.

        .TS
        center tab(#);
        R0|L C R0|L.
        _
        #ليفولوز#جلوكوز#ديكستروز#
        _
        .TE

هذه الأعمدة الوهمية ذات عرض صفري وبالتالي فهي غير مرئية؛ ولسوء الحظ فإنها عادة لا تعمل كما هو مقصود على أجهزة الطرفية.

أمثلة
قد يكون من الأسهل اكتساب لغة tbl من خلال الأمثلة بدلاً من الوصف الرسمي، خاصة في البداية.

        .TS
        box center tab(#);
        Cb Cb
        L  L.
        القدرة#التطبيق
        القوة#يسحق ثمرة طماطم
        الرشاقة#يتفادى ثمرة طماطم مقذوفة
        البنية#يأكل ثمرة طماطم عمرها شهر دون أن يمرض
        الذكاء#يعرف أن الطماطم فاكهة
        الحكمة#يختار \f[I]ألا\f[] يضع الطماطم في سلطة الفواكه
        الكاريزما#يبيع سلطات فواكه تعتمد على الطماطم لآكلي اللحوم
        .TE

القدرة | التطبيق
القوة | يسحق ثمرة طماطم
الرشاقة | يتفادى ثمرة طماطم مقذوفة
البنية | يأكل ثمرة طماطم عمرها شهر دون أن يمرض
الذكاء | يعرف أن الطماطم فاكهة
الحكمة | يختار ألا يضع الطماطم في سلطة فواكه
الكاريزما | يبيع سلطات فواكه تعتمد على الطماطم لآكلي اللحوم

يمكن أن يكون استيعاب مصنفات الأعمدة A و N في التصيير المرئي أسهل منه في الوصف.

        .TS
        center tab(;);
        CbS,LN,AN.
        مدخول الطاقة اليومي (بالميغاجول)
        المغذيات الكبيرة
        .\" افتراض 3 أرقام معنوية للدقة
        كربوهيدرات;4.5
        دهون;2.25
        بروتين;3
        .T&
        LN,AN.
        معدن
        Pu-239;14.6
        _
        .T&
        LN.
        الإجمالي;\[ti]24.4
        .TE

    مدخول الطاقة اليومي (بالميغاجول)
    المغذيات الكبيرة
    كربوهيدرات | 4.5
    دهون | 2.25
    بروتين | 3
    معدن
    Pu-239 | 14.6
    الإجمالي | ~24.4

بعد ذلك، سنقوم بتعديل عرض مدمج للامتداد، والمحاذاة الـ عمودية، ومعدلات الأعمدة ذات العرض الصفري من مرجع mandoc لمفسر tbl الخاص به. إنه يستحق الدراسة المتأنية.

        .TS
        box center tab(:);
        Lz  S | Rt
        Ld| Cb| ^
        ^ | Rz  S.
        يسار:يمين
        يسار:مركز:
        :يمين
        .TE

    left | r
    l | center |
     | right

ترنح الصفوف لا يمكن تحقيقه مرئياً على أجهزة الطرفية، ولكن الجدول الذي يستخدمه يمكن أن يظل مفهوماً رغم ذلك.

        .TS
        center tab(|);
        Cf(BI) Cf(BI) Cf(B), C C Cu.
        n|n\f[B]\[tmu]\f[]n|الفرق
        1|1
        2|4|3
        3|9|5
        4|16|7
        5|25|9
        6|36|11
        .TE

    n | nn | الفرق
    1 | 1
    2 | 4 | 3
    3 | 9 | 5
    4 | 16 | 7
    5 | 25 | 9
    6 | 36 | 11

بعض ميزات tbl لا يمكن توضيحها في البيئة المحدودة لصفحة دليل محمولة.

يمكننا تعريف ماكرو خارج منطقة tbl يمكننا استدعاؤه من داخلها للتسبب في فاصل صفحات داخل جدول محاط بإطار متعدد الصفحات. يمكنك اختيار اسم مختلف؛ تأكد من تغيير كلا ظهوري “BP”.

        .de BP
        .  ie '\\n(.z'' .bp \\$1
        .  el \!.BP \\$1
        ..

انظر أيضًا
“Tbl—برنامج لتنسيق الجداول”، بقلم M. E. Lesk، عام 1976 (نُقح في 16 يناير 1979)، تقرير مختبرات AT&T Bell التقني لعلوم الحوسبة رقم 49.

أُخذ مثال الامتداد أعلاه من صفحة دليل mandoc لـ تنفيذ tbl الخاص بها (https://man.openbsd.org/tbl.7).

groff(1), troff(1)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.