tbl(1) General Commands Manual tbl(1)

tbl - پیشپردازنده قالببندی جداول برای groff

tbl [-C] [file ...]
tbl --help
tbl -v
tbl --version

پیاده‌سازی گنو از tbl بخشی از سامانه قالب‌بندی اسناد groff(1) است. tbl یک پیش‌پردازنده troff(1) است که توصیفات جداول جاسازی‌شده در ورودی roff(7) را به زبانی که برای troff قابل فهم است ترجمه می‌کند. این برنامه محتویات هر file (پرونده) را در جریان خروجی استاندارد کپی می‌کند و هر ناحیه جدول (table region) میان خطوطی که با .TS و .TE آغاز می‌شوند را به دستورالعمل‌هایی برای قالب‌بند troff گنو تبدیل می‌نماید. اگرچه نحو ورودی tbl گنو سازگاری بالایی با tbl نسخه AT&T دارد، خروجی تولیدشده توسط tbl گنو را نمی‌توان با troff نسخه AT&T پردازش کرد؛ باید از troff گنو (یا یک troff که افزونه‌های به‌کاررفته گنو را پیاده کرده است) استفاده شود. به طور معمول، tbl مستقیماً توسط کاربر اجرا نمی‌شود، بلکه با مشخص کردن گزینه -t در groff(1) فراخوانی می‌گردد. اگر هیچ عملوند file وجود نداشته باشد، یا اگر file برابر با “-” باشد، tbl جریان ورودی استاندارد را می‌خواند.

tbl انتظار دارد توصیفات جدول میان خطوط ورودی که با .TS (آغاز جدول) و .TE (پایان جدول) آغاز می‌شوند قرار گیرند. هر یک از این نواحی جدول شامل یک یا چند توصیف جدول است. درون یک ناحیه جدول، توصیفات جدول بعد از اولین توصیف باید هرکدام با یک خط ورودی که با .T& آغاز می‌شود پیش‌درآمد داشته باشند. این سازوکار ناحیه جدول جدیدی آغاز نمی‌کند؛ تمامی توصیفات جدول به عنوان بخشی از محصوره .TS/.TE خود در نظر گرفته می‌شوند، حتی اگر دارای کادر باشند یا سرستون‌هایی داشته باشند که در صفحات بعدی تکرار می‌شوند (به ادامه نگاه کنید).

(کاربران باتجربه roff باید توجه داشته باشند که tbl یک مفسر زبان roff نیست: نویسه کنترلی پیش‌فرض باید استفاده شود، و هیچ فاصله یا تبی میان نویسه کنترلی و نام ماکرو مجاز نیست. این نشانه‌های ورودی tbl در خروجی بدون تغییر باقی می‌مانند، که در آنجا به فراخوانی‌های عادی ماکرو تبدیل می‌شوند. بسته‌های ماکرو اغلب ماکروهای TS، T& و TE را برای مدیریت نحوه قرارگیری جدول در صفحه تعریف می‌کنند. اگر هنگام برخورد قالب‌بند با یک ناحیه جدول، تعاریف این ماکروها موجود نباشد، tbl درخواست‌های troff برای تعریف این ماکروها به صورت خالی تولید می‌کند.)

هر ناحیه جدول ممکن است با گزینه‌های ناحیه (region options) آغاز شود، و باید شامل یک یا چند تعریف جدول باشد؛ هر تعریف جدول شامل یک مشخصات قالب (format specification) است که در ادامه آن یک یا چند خط ورودی (سطر) از درایه‌ها (entries) قرار می‌گیرد. این درایه‌ها داده‌های جدول را تشکیل می‌دهند.

خطی که بلافاصله پس از نشانه .TS می‌آید می‌تواند گزینه‌های ناحیه را مشخص کند؛ کلیدواژه‌هایی که بر تفسیر یا رندر کل ناحیه یا تمامی درایه‌های جدول درون آن بدون تفکیک اثر می‌گذارند. گزینه‌های متعدد ناحیه را با کاما، فاصله، یا تب از یکدیگر جدا کنید. گزینه‌هایی که به آرگومان درون پرانتز نیاز دارند، فاصله و تب را میان نام گزینه و پرانتز باز مجاز می‌دانند. گزینه‌ها انباشته می‌شوند و پس از اعلام، نمی‌توان آن‌ها را درون یک ناحیه لغو کرد؛ اگر گزینه‌ای که پارامتر می‌پذیرد تکرار شود، آخرین رخداد اعمال خواهد شد. در صورت وجود، مجموعه گزینه‌های ناحیه باید با یک نقطه-ویرگول (;) خاتمه یابد.

هر یک از گزینه‌های ناحیه allbox، box، doublebox، frame و doubleframe باعث می‌شوند جدول به منظور مباحث بعدی «کادردار» (boxed) تلقی گردد.

قرار دادن هر درایه جدول درون یک کادر؛ بر box دلالت دارد.
قرار دادن کل ناحیه جدول درون یک کادر. tbl گنو frame را به عنوان یک مترادف می‌شناسد.
مرتب‌سازی ناحیه جدول در مرکز نسبت به طول خط، با کاهش تورفتگی در صورت لزوم (همراه با یک هشدار در زمان قالب‌بندی) برای جا گرفتن ناحیه جدول؛ حالت پیش‌فرض، تراز چپ آن است. tbl گنو centre را به عنوان یک مترادف می‌شناسد.
شناسایی نویسه c به عنوان ممیز یا جداکننده اعشار در ستون‌هایی که از طبقه‌بندی‌کننده N (عددی) استفاده می‌کنند (زیربخش «طبقه‌بندی‌کننده‌های ستون» را در ادامه ببینید). این یک افزونه گنو است.
شناسایی نویسه‌های x و y به ترتیب به عنوان جداکننده‌های آغاز و پایان برای ورودی eqn(1)، و نادیده گرفتن ورودی میان آن‌ها. نیازی نیست x و y متمایز باشند.
قرار دادن کل ناحیه جدول درون یک کادر دوخطی؛ بر box دلالت دارد. tbl گنو doubleframe را به عنوان یک مترادف می‌شناسد.
گسترش افقی جدول برای پر کردن فضای موجود (طول خط منهای تورفتگی) از طریق افزایش فاصله بین ستون‌ها. به طور معمول، عرض یک جدول فقط به اندازه‌ای تعیین می‌شود که برای جا دادن عرض درایه‌های آن و فاصله‌گذاری ستون‌ها (خواه مشخص شده باشد خواه پیش‌فرض) کافی باشد. هنگامی که expand بر روی جدولی اعمال شود که از فضای افقی موجود فراتر می‌رود، tbl فاصله ستون‌ها را تا جایی که لازم باشد کاهش می‌دهد (حتی تا صفر). tbl ورودی troff تولید می‌کند که در صورت وقوع چنین فشرده‌سازی هشدار می‌دهد. اصلاح‌کننده ستون x (در ادامه ببینید) این گزینه را باطل می‌کند.
رسم خطوط یا قواعد (برای مثال از box) با ضخامت n پوئن. پیش‌فرض، اندازه قلم جاری در هنگام آغاز ناحیه است. این گزینه در دستگاه‌های ترمینال اثری ندارد.
عدم استفاده از دیورژن‌های roff (diversions) برای مدیریت شکست صفحات. معمولاً tbl آن‌ها را برای جلوگیری از شکست صفحه درون یک سطر جدول به کار می‌گیرد. این کاربرد گاهی اوقات می‌تواند با استفاده خود بسته‌های ماکرو از دیورژن‌ها تداخل ناخوشایندی داشته باشد—مثلاً زمانی که پانویس‌ها به کار گرفته می‌شوند. این یک افزونه گنو است.
نادیده گرفتن فاصله‌های ابتدایی و انتهایی در درایه‌های جدول. این یک افزونه گنو است.
فرونشاندن پیام‌های تشخیصی تولیدشده در زمان قالب‌بندی سند، هنگامی که طول خط و تورفتگی یا طول صفحه برای گنجاندن یک سطر جدول ناکافی است. این یک افزونه گنو است.
استفاده از نویسه c به جای تب برای جداسازی درایه‌ها در یک سطر از داده‌های جدول.

مشخصات قالب جدول اجباری است: تعداد ستون‌های جدول را تعیین می‌کند و نحوه حروف‌چینی درایه‌های درون آن را هدایت می‌نماید. مشخصات قالب، مجموعه‌ای از توصیف‌کننده‌های (descriptors) ستون است. هر توصیف‌کننده یک طبقه‌بندی‌کننده (classifier) را مشخص می‌کند که در پی آن صفر یا چند اصلاح‌کننده (modifiers) می‌آید. طبقه‌بندی‌کننده‌ها حروف (بدون حساسیت به بزرگی و کوچکی) یا نمادهای نگارشی هستند؛ اصلاح‌کننده‌ها از حروف یا ارقام تشکیل شده یا با آن‌ها آغاز می‌شوند. فاصله‌ها، تب‌ها، خطوط جدید و کاماها توصیف‌کننده‌ها را از یکدیگر جدا می‌کنند. خطوط جدید و کاماها، توصیف‌کننده‌های پس از خود را به یک سطر بعدی از جدول اعمال می‌کنند (برای نمونه، امکان وسط‌چین کردن یا برجسته ساختن سرستون‌ها را بدون تغییر درایه‌های داده‌ای جدول فراهم می‌آورند). ما گروه حاصل از توصیف‌کننده‌های ستون را یک تعریف سطر (row definition) می‌نامیم. درون یک تعریف سطر، جداسازی میان توصیف‌کننده‌های ستون با فاصله یا تب اغلب اختیاری است؛ تنها برخی اصلاح‌کننده‌ها که در ادامه شرح داده شده‌اند، جداسازی را الزامی می‌کنند.

طبقه‌بندی‌کننده، یکی از چندین آرایش موجود را برمی‌گزیند. برخی موقعیت قرارگیری درایه‌های جدول درون یک سلول مستطیلی را تعیین می‌کنند: وسط‌چین، چپ‌چین، عددی (تراز بر اساس یک ممیز اعشاری قابل‌پیکربندی)، و غیره. سایرین عملیات ویژه‌ای نظیر رسم خطوط یا گسترش درایه‌ها از سلول‌های مجاور در جدول را انجام می‌دهند. به جز “|”، هر طبقه‌بندی‌کننده‌ای می‌تواند با یک یا چند اصلاح‌کننده دنبال شود؛ برخی از این‌ها آرگومانی می‌پذیرند که در tbl گنو می‌تواند درون پرانتز قرار گیرد. اصلاح‌کننده‌ها قلم‌ها را انتخاب می‌کنند، اندازه حروف را تعیین می‌نمایند، و سایر کارهای شرح‌داده‌شده در ادامه را انجام می‌دهند.

مشخصات قالب می‌تواند چندین خط ورودی را اشغال کند، اما باید با یک نقطه “.” دنبال‌شده توسط یک خط جدید خاتمه یابد. هر تعریف سطر به نوبه خود بر یک سطر از جدول اعمال می‌شود. tbl آخرین تعریف سطر را بر سطرهایی از داده‌های جدول که فراتر از تعاریف سطر هستند اعمال می‌کند.

برای وضوح در مثال‌های این سند، طبقه‌بندی‌کننده‌ها را با حروف بزرگ و اصلاح‌کننده‌ها را با حروف کوچک می‌نویسیم. بنابراین، “CbCb,LR.” دو سطر از دو ستون را تعریف می‌کند. درایه‌های سطر اول وسط‌چین و پررنگ (bold) هستند؛ ستون اول و دوم سطر دوم و سطرهای بعدی به ترتیب چپ‌چین و راست‌چین هستند. هر سطری از درایه‌ها که به داده‌های جدول افزوده شود، مجدداً از تعریف سطر “LR” استفاده می‌کند.

تعریف سطری که بیشترین تعداد توصیف‌کننده‌های ستون را دارد، تعداد ستون‌های جدول را تعیین می‌کند؛ هر تعریف سطر با تعداد کمتر، توسط tbl گنو به طور ضمنی در سمت راست با توصیف‌کننده‌های L به تعداد لازم گسترش می‌یابد تا جدول مستطیلی شود.

طبقه‌بندی‌کننده‌های L، R و C ساده‌ترین‌ها برای درک و استفاده هستند.

طولانی‌ترین درایه در این ستون را وسط‌چین می‌کند، سایر درایه‌های ستون را نسبت به درایه وسط‌چین‌شده چپ‌چین می‌نماید، سپس تمامی درایه‌ها را به اندازه یک en تورفتگی می‌دهد. چنین درایه‌های «الفبایی» (alphabetic - از این رو نام طبقه‌بندی‌کننده) را می‌توان در همان ستون درایه‌های با طبقه‌بندی L به کار برد، مانند “LL,AR.”. درایه‌های A به دلیل تورفتگی‌شان اغلب «زیرستون» (sub-columns) نامیده می‌شوند.
وسط‌چین کردن درایه درون ستون.
چپ‌چین کردن درایه درون ستون.
تراز عددی درایه در ستون. tbl ستون‌های اعداد اعشاری را به صورت عمودی در مرتبه یکان تراز می‌کند. اگر چندین جداکننده اعشار در کنار یک رقم باشند، راست‌ترین آن‌ها را برای تراز عمودی استفاده می‌کند. اگر جداکننده اعشار وجود نداشته باشد، tbl از راست‌ترین رقم برای تراز عمودی استفاده می‌کند؛ اگر هیچ رقمی موجود نباشد، tbl درایه را درون ستون وسط‌چین می‌نماید. نویسه ساختگی roff یعنی \& در یک درایه، گلیف پیش از خود را (در صورت وجود) به عنوان مرتبه یکان نشانه می‌گذارد؛ اگر چندین مورد در داده‌ها رخ دهد، tbl چپ‌ترین آن‌ها را برای تراز به کار می‌برد.
اگر درایه‌های دارای طبقه‌بندی N یک ستون را با درایه‌های L یا R به اشتراک بگذارند، tbl پهن‌ترین درایه N را نسبت به پهن‌ترین درایه L یا R وسط‌چین می‌کند، در حالی که تراز درایه‌های N را نسبت به یکدیگر حفظ می‌نماید.
جداکننده‌های اعشار در معادلات eqn درون ستون‌های با طبقه‌بندی N می‌توانند با استفاده tbl از آن‌ها برای تراز تداخل ایجاد کنند. گزینه ناحیه delim را مشخص کنید تا tbl داده‌های درون جداکننده‌های eqn را نادیده بگیرد.
راست‌چین کردن درایه درون ستون.
گسترش درایه قبلی در سمت چپ به درون این ستون (ادغام افقی).
^
گسترش درایه در همان ستون از سطر قبلی به درون این سطر (ادغام عمودی).
_, -
جایگزین کردن درایه جدول با یک خط افقی (rule). tbl انتظار دارد یک درایه خالی در جدول متناظر با این طبقه‌بندی‌کننده باشد؛ اگر داده‌ای در آنجا یافت شود، یک پیام تشخیصی صادر می‌کند. اگر کل تعریف سطر از این طبقه‌بندی‌کننده‌ها تشکیل شده باشد (فقط یکی لازم است)، به عنوان یک “_” که یک سطر از درایه‌های جدول را اشغال می‌کند در نظر گرفته می‌شود، و هیچ داده متناظری انتظار نمی‌رود.
=
جایگزین کردن درایه جدول با یک خط افقی دوگانه. tbl انتظار دارد یک درایه خالی در جدول متناظر با این طبقه‌بندی‌کننده باشد؛ اگر داده‌ای در آنجا یافت شود، یک پیام تشخیصی صادر می‌کند. اگر کل تعریف سطر از این طبقه‌بندی‌کننده‌ها تشکیل شده باشد (فقط یکی لازم است)، به عنوان یک “=” که یک سطر از درایه‌های جدول را اشغال می‌کند در نظر گرفته می‌شود، و هیچ داده متناظری انتظار نمی‌رود.
|
قرار دادن یک خط عمودی بر روی سطر متناظر در جدول (اگر دو مورد از این‌ها مجاور باشند، یک خط عمودی دوگانه). این طبقه‌بندی‌کننده تاثیری در شمارش ستون‌ها ندارد و هیچ درایه‌ای در جدول متناظر با آن نیست. یک | در سمت چپ اولین توصیف‌کننده ستون یا در سمت راست آخرین توصیف‌کننده، یک خط عمودی در لبه جدول تولید می‌کند؛ این خطوط در جداول کادردار اضافی هستند (و نادیده گرفته می‌شوند).

برای تغییر قالب جدول درون یک ناحیه tbl، از نشانه .T& در آغاز یک خط استفاده کنید. آن را با یک مشخصات قالب و داده‌های جدول دنبال کنید، اما نه با گزینه‌های ناحیه. تعداد ستون‌ها در قالبی که بدین شکل معرفی می‌شود نمی‌تواند نسبت به قالب قبلی افزایش یابد؛ در آن صورت، باید ناحیه جدول را خاتمه داده و ناحیه دیگری را آغاز کنید. اگر این کار به دلیل استفاده ناحیه از گزینه‌های کادر مناسب نباشد یا ستون‌ها به شیوه‌ای نامطلوب تراز شوند، باید مشخصات قالب اولیه جدول را طوری طراحی کنید که حداکثر تعداد ستون‌های مورد نیاز را شامل شود، و در صورت نیاز از طبقه‌بندی‌کننده گسترش افقی S برای دستیابی به تراز ستونی مطلوب استفاده کنید.

گسترش افقی در ستون اول یا گسترش عمودی در سطر اول یک خطا است. tbl از نواحی گسترش‌یافته غیرمستطیلی پشتیبانی نمی‌کند.

هر تعداد اصلاح‌کننده می‌تواند در پی یک طبقه‌بندی‌کننده ستون بیاید. آرگومان‌های اصلاح‌کننده، در صورت پذیرش، به بزرگی و کوچکی حروف حساس هستند. اگر یک اصلاح‌کننده مشخص را بیش از یک بار به یک طبقه‌بندی‌کننده اعمال کنید، یا اصلاح‌کننده‌های متناقض را به کار برید، تنها آخرین رخداد موثر خواهد بود. اصلاح‌کننده x مانعة‌الجمع با e و w است، اما e مانعة‌الجمع با w نیست؛ اگر این‌ها در ترکیب با یکدیگر استفاده شوند، x هر دو e و w را لغو می‌کند، در حالی که هر یک از e یا w بر x ارجحیت دارند (آن را باطل می‌کنند).

حروف‌چینی درایه با حروف برجسته (بولد)، که کوته‌نوشت f(B) است.
تراز کردن یک درایه گسترش‌یافته عمودی با پایین (پایین‌چین یا «down») محدوده خود به جای مرکز آن. این یک افزونه گنو است.
هم‌اندازه کردن پهنای ستون‌های دارای این اصلاح‌کننده با پهن‌ترین ستون. این اصلاح‌کننده طول خط پیش‌فرض مورد استفاده در یک بلوک متنی را تعیین می‌کند.
انتخاب قلم (typeface) برای درایه جدول. یک نام قلم یا سبک (یک یا دو نویسه که با رقم آغاز نشود)، موقعیت استقرار قلم (یک رقم تکی)، یا یک نام یا موقعیت استقرار با هر طولی درون پرانتز باید در ادامه بیاید. شکل آخر یک افزونه گنو است. (این پارامتر با آنچه توسط درخواست ft در troff پذیرفته می‌شود مطابقت دارد.) یک آرگومان تک‌نویسه‌ای بدون پرانتز باید توصیف سطر را خاتمه دهد یا با یک یا چند فاصله یا تب از آنچه در پی می‌آید جدا شود.
حروف‌چینی درایه به صورت مایل یا ایتالیک، که کوته‌نوشت f(I) است.
فراخوانی یک ماکروی groff پیش از حروف‌چینی یک بلوک متنی (زیربخش «بلوک‌های متنی» را در ادامه ببینید). این یک افزونه گنو است. یک نام ماکروی یک یا دو نویسه‌ای، یا نامی با هر طولی درون پرانتز باید در ادامه بیاید. یک نام ماکروی تک‌نویسه‌ای بدون پرانتز باید با یک یا چند فاصله یا تب از مابقی جدا شود. ماکروی نام‌برده باید پیش از برخورد با ناحیه جدولِ حاوی این اصلاح‌کننده ستون تعریف شده باشد. ماکرو باید تنها شامل درخواست‌های ساده groff برای تغییر قالب‌بندی متن باشد، نظیر تراز کردن (adjustment) یا پیوندنویسی خط فاصل (hyphenation). ماکرو پس از اعمال اصلاح‌کننده‌های ستون b، f، i، p و v فراخوانی می‌شود؛ بنابراین می‌تواند سایر اصلاح‌کننده‌های ستون را بازنویسی (override) کند.
تنظیم اندازه قلم (type size). یک عدد صحیح n با یک علامت اختیاری در ابتدا باید در ادامه بیاید. اگر بدون علامت باشد، اندازه قلم بر روی n پوئن تنظیم می‌شود. در غیر این صورت، اندازه قلم بر حسب علامت به اندازه n پوئن افزایش یا کاهش می‌یابد. استفاده از عدد چندرقمی علامت‌دار یک افزونه گنو است. (این پارامتر با آنچه توسط درخواست ps در troff پذیرفته می‌شود مطابقت دارد.) اگر یک اصلاح‌کننده اندازه قلم با یک اصلاح‌کننده جداسازی ستون دنبال شود (در ادامه ببینید)، آن‌ها باید حداقل با یک فاصله یا تب از یکدیگر جدا شوند.
تراز کردن یک درایه جدول گسترش‌یافته عمودی با بالای محدوده خود، به جای مرکز آن.
انتقال ستون به اندازه نیم‌خط به بالا، ایجاد حالت «پلکانی» (staggering) در سطرها. این یک افزونه در Documenter's Workbench (DWB) 1.0 و یونیکس ویرایش دهم Research است.
تنظیم فاصله عمودی (خطوط) یک بلوک متنی. یک عدد صحیح n با یک علامت اختیاری در ابتدا باید در ادامه بیاید. اگر بدون علامت باشد، فاصله عمودی بر روی n پوئن تنظیم می‌شود. در غیر این صورت، فاصله عمودی بر حسب علامت به اندازه n پوئن افزایش یا کاهش می‌یابد. استفاده از عدد چندرقمی علامت‌دار یک افزونه گنو است. (این پارامتر با آنچه توسط درخواست vs در troff پذیرفته می‌شود مطابقت دارد.) اگر یک اصلاح‌کننده فاصله عمودی با یک اصلاح‌کننده جداسازی ستون دنبال شود (در ادامه ببینید)، آن‌ها باید حداقل با یک فاصله یا تب از یکدیگر جدا شوند.
تنظیم حداقل پهنای ستون. یک عدد، خواه یک عدد صحیح بدون واحد، یا یک اندازه افقی roff درون پرانتز، باید در ادامه بیاید. اگر قرار باشد بلافاصله پس از پهنا، یک فاصله ستونی صریح بیاید، پرانتزها الزامی هستند (در غیر این صورت، پس از پهنا یک یا چند فاصله یا تب قرار دهید). اگر هیچ واحدی مشخص نشود، واحد en فرض می‌شود. این اصلاح‌کننده طول خط پیش‌فرض مورد استفاده در یک بلوک متنی را تعیین می‌کند.
گسترش دادن ستون. پس از محاسبه پهنای ستون‌ها، هر طول خط باقی‌مانده را به طور مساوی میان تمامی ستون‌های دارای این اصلاح‌کننده توزیع می‌کند. این یک افزونه Documenter's Workbench (DWB) 3.3 است. اعمال اصلاح‌کننده x به بیش از یک ستون، یک افزونه گنو است. این اصلاح‌کننده طول خط پیش‌فرض مورد استفاده در یک بلوک متنی را تعیین می‌کند.
نادیده گرفتن درایه‌های جدول متناظر با این ستون به منظور محاسبه پهنا؛ بدین معنا که پهنای ستون تنها با استفاده از اطلاعات موجود در توصیف‌کننده آن محاسبه می‌شود. این یک افزونه در Documenter's Workbench (DWB) 1.0 و یونیکس ویرایش دهم Research است.
یک پسوند عددی روی یک توصیف‌کننده ستون، فاصله جداسازی (بر حسب en) از ستون بعدی را تعیین می‌کند؛ فاصله پیش‌فرض 3n است. اگر گزینه ناحیه expand فعال باشد، این فاصله به صورت نسبی چندبرابر می‌شود؛ در مورد جداولی که پهن‌تر از طول خط خروجی هستند، این فاصله ممکن است صفر شود. نمی‌توان یک فاصله منفی تعیین کرد. مقدار جداسازی پس از آخرین ستون در یک سطر بی‌معنی است و موجب صدور پیام تشخیصی از سوی tbl می‌شود.

داده‌های جدول را در خطوط پس از مشخصات قالب قرار دهید. هر خط متنی با یک سطر جدول مطابقت دارد، مگر اینکه یک بک‌اسلش در انتهای یک خط از داده‌های جدول، درایه را در خط ورودی بعدی ادامه دهد. (بلوک‌های متنی که در ادامه شرح داده می‌شوند نیز درایه‌های جدول را در چند خط ورودی پخش می‌کنند.) درایه‌های جدول درون یک سطر، به طور پیش‌فرض با یک نویسه تب در ورودی از یکدیگر جدا می‌شوند؛ گزینه ناحیه tab را در بالا ببینید. درایه‌های اضافی در یک سطر از داده‌های جدول (آن‌هایی که هیچ توصیف‌کننده ستون متناظری ندارند، حتی توصیف‌کننده‌ای ضمنی ناشی از مستطیلی کردن جدول)، توسط tbl همراه با یک پیام تشخیصی دور ریخته می‌شوند. tbl خطوط کنترلی roff را بدون تغییر به خروجی خود منتقل می‌کند. اگر می‌خواهید یک درایه خالی جدول را به صورت مشهود در متن سند مشخص کنید، آن را با نویسه ساختگی \& در roff پر کنید. داده‌های جدول با خطی متشکل از نشانه ورودی .T& قطع می‌شوند و با خط .TE خاتمه می‌یابند.

به طور معمول، یک درایه جدول به صورت انعطاف‌ناپذیر حروف‌چینی می‌شود. متن آن پر (fill) نمی‌شود، شکسته نمی‌شود، خط‌فاصل‌گذاری نمی‌شود، تراز نمی‌شود و با فاصله اضافی میان جملات تکمیل نمی‌گردد. tbl به قالب‌بند دستور می‌دهد تا هر درایه جدول را هنگام مواجهه در ورودی اندازه بگیرد و پهنای مورد نیاز برای ستون متناظر آن را به‌روزرسانی کند. اگر اصلاح‌کننده z بر درایه اعمال شده باشد، این اندازه‌گیری نادیده گرفته می‌شود؛ اگر w اعمال شده باشد و آرگومان آن بزرگ‌تر از این پهنا باشد، به جای آن از آن آرگومان استفاده می‌شود. بر خلاف ورودی معمولی roff (مثلاً درون یک پاراگراف)، تغییرات در قالب‌بندی متن مانند انتخاب قلم یا فاصله عمودی، میان درایه‌ها پابرجا نمی‌مانند.

tbl چندین شکل از درایه‌های جدول را به طور ویژه تفسیر می‌کند.

•
اگر یک سطر جدول تنها شامل یک خط زیرین یا علامت مساوی (_ یا =) باشد، tbl به ترتیب یک خط افقی تکی یا دوگانه را در آن نقطه در سرتاسر جدول رسم می‌کند.
•
اگر یک درایه جدول تنها شامل _ یا = در سطری باشد که در غیر این صورت دارای داده است، tbl سلول آن را به ترتیب با یک خط افقی تکی یا دوگانه پر می‌کند که به همسایگان خود متصل می‌شود.
•
اگر یک درایه جدول تنها شامل \_ یا \= در سطری باشد که در غیر این صورت دارای داده است، tbl سلول آن را به ترتیب با یک خط افقی تکی یا دوگانه پر می‌کند که (تقریباً) به همسایگان خود متصل نمی‌شود.
•
اگر یک درایه جدول تنها شامل \Rxباشد، که در آن x هر نویسه معمولی، ویژه یا نمایه‌شده roff است، tbl سلول آن را با تکرار کافی گلیف متناظر با x پر می‌کند تا ستون را بدون اتصال به همسایگانش پر کند.
•
در هر سطری به جز سطر اول، یک درایه جدول به صورت \^ باعث می‌شود که درایه بالای آن به سمت پایین درون درایه فعلی گسترش یابد (ادغام شود).

گاهی اوقات، ممکن است این نشانه‌های ویژه به عنوان داده واقعی جدول مورد نیاز باشند. برای استفاده از _ یا = به صورت واقعی و به تنهایی در یک درایه، نویسه ساختگی \& در roff را به عنوان پیشوند یا پسوند آن قرار دهید. برای بیان \_، \= یا \R، از یک دنباله گریز roff برای درج بک‌اسلش (\e یا \[rs]) استفاده کنید. یک راه مطمئن برای قرار دادن دنباله گلیف \^ درون یک درایه جدول، استفاده از یک جفت دنباله گریز نویسه ویژه groff است (\[rs]\^).

سطرهای درایه‌های جدول می‌توانند با خطوط کنترلی groff در هم آمیخته شوند؛ این خطوط جزو داده‌های جدول به شمار نمی‌آیند. در چنین خطوطی باید از نویسه کنترلی پیش‌فرض (.) استفاده شود (و تغییر نیابد)؛ نویسه کنترلی بدون شکست شناسایی نمی‌شود. برای شروع اولین درایه جدول در یک سطر با یک نقطه، نویسه ساختگی \& در roff را قبل از آن قرار دهید.

محتوای یک درایه معمولی جدول می‌تواند یک ستون و در نتیجه کل جدول را بیش از حد عریض کند؛ در نتیجه جدول از طول خط صفحه فراتر می‌رود و نازیبا شده یا در معرض بریده شدن توسط دستگاه خروجی قرار می‌گیرد. هنگامی که یک درایه جدول به حروف‌چینی معمولی‌تری نیاز دارد، یعنی در بیش از یک خط خروجی شکسته شود (و در نتیجه ارتفاع سطر خود را افزایش دهد)، می‌توان آن را درون یک بلوک متنی (text block) قرار داد.

tbl یک درایه جدول به صورت “T{” در انتهای یک خط ورودی را به طور ویژه، به عنوان نشانه‌ای برای آغاز یک بلوک متنی تفسیر می‌کند. به همین ترتیب، یک درایه “T}” در ابتدای یک خط ورودی، به بلوک متنی پایان می‌دهد. نشانه‌های بلوک متنی می‌توانند خط ورودی را با سایر داده‌های جدول به اشتراک بگذارند (پیش از T{ و پس از T}). خطوط ورودی میان این نشانه‌ها در یک دیورژن (diversion) توسط troff قالب‌بندی می‌شوند. بلوک‌های متنی نمی‌توانند تو در تو باشند. چندین بلوک متنی می‌توانند در یک سطر جدول رخ دهند.

بلوک‌های متنی همانند متن پیش از جدول قالب‌بندی می‌شوند که با توصیف‌کننده‌های ستون قابل‌اعمال اصلاح می‌گردد. به طور مشخص، طبقه‌بندی‌کننده‌های A، C، L، N، R و S تراز (alignment) یک بلوک متنی درون سلول آن را تعیین می‌کنند، اما نه چینش (adjustment) آن را. درخواست‌های na یا ad را به ابتدای یک بلوک متنی اضافه کنید تا چینش آن را به طور متمایز از سایر متن سند تغییر دهید. همانند سایر درایه‌های جدول، هنگامی که یک بلوک متنی پایان می‌یابد، هرگونه تغییر در پارامترهای قالب‌بندی دور ریخته می‌شود. آن‌ها بر درایه‌های بعدی جدول اثر نمی‌گذارند، حتی بر سایر بلوک‌های متنی.

اگر اصلاح‌کننده‌های w یا x برای تمامی ستون‌های محدوده یک بلوک متنی مشخص نشده باشند، طول پیش‌فرض بلوک متنی (دقیق‌تر، طول خط مورد استفاده برای پردازش دیورژن بلوک متنی) به صورت L×C/(N+1) محاسبه می‌شود، که در آن L طول خط جاری، C تعداد ستون‌های گسترش‌یافته توسط بلوک متنی، و N تعداد ستون‌های جدول است. در صورت لزوم، می‌توانید عرض یک بلوک متنی را با گنجاندن یک درخواست ll (طول خط یا line length) در آن پیش از هر متنی که باید قالب‌بندی شود کنترل کنید. از آنجا که tbl از یک دیورژن برای قالب‌بندی بلوک متنی استفاده می‌کند، ارتفاع و عرض آن متعاقباً در ثبات‌های troff به ترتیب dn و dl در دسترس هستند.

ثبات TW عرض ناحیه جدول را بر حسب واحدهای پایه ذخیره می‌کند؛ نمی‌توان از آن درون خود ناحیه استفاده کرد، اما پیش از ارسال نشانه .TE به خروجی تعریف می‌شود تا یک ماکروی troff با نام TE بتواند از آن استفاده کند. “T.” یک ثبات با مقدار بولی است که مشخص می‌کند آیا انتهای جدول در حال پردازش است یا خیر. یک ثبات #T به صورت داخلی استفاده می‌شود. از به‌کارگیری این نام‌ها برای هر منظور دیگری خودداری کنید.

tbl همچنین یک ماکروی T# تعریف می‌کند تا خطوط پایینی و کناری یک جدول کادردار را ایجاد نماید. در حالی که خود tbl ترتیبی می‌دهد که خروجی شامل فراخوانی این ماکرو در پایان چنین جدولی باشد، بسته‌های ماکرو نیز می‌توانند با فراخوانی آن از درون یک ماکروی پاورقی صفحه (که خود توسط یک ترپ (trap) کاشته‌شده در نزدیکی انتهای صفحه فراخوانی می‌شود)، کادرهایی برای جداول چندصفحه‌ای بسازند. برای اطلاعات بیشتر درباره جداول چندصفحه‌ای، بخش «محدودیت‌ها» را در ادامه ببینید.

tbl گنو در درون خود از نام‌های ثبات، رشته، ماکرو و دیورژنی استفاده می‌کند که با رقم 3 آغاز می‌شوند. سندی که قرار است با tbl گنو پیش‌پردازش شود نباید از چنین شناسه‌هایی استفاده کند.

یک سند را ابتدا با tbl و سپس با eqn(1) پردازش کنید. (groff(1) به طور خودکار پیش‌پردازنده‌ها را به ترتیب صحیح سازمان‌دهی می‌کند.) ماکروهای EQ و EN را درون جداول فراخوانی نکنید؛ در عوض، جداکننده‌ها را در ورودی eqn خود تنظیم کرده و از گزینه ناحیه delim استفاده نمایید تا tbl آن‌ها را شناسایی کند.

علاوه بر افزونه‌های اشاره‌شده در بالا، tbl گنو محدودیت‌هایی را که کاربران tbl نسخه AT&T با آن مواجه بودند برطرف کرده است.

•
گزینه‌های ناحیه را می‌توان با حروف بزرگ یا کوچک مشخص کرد.
•
هیچ محدودیتی در تعداد ستون‌های یک جدول، صرف‌نظر از طبقه‌بندی آن‌ها، و هیچ محدودیتی در تعداد بلوک‌های متنی وجود ندارد.
•
tbl گنو تمامی سطرهای جدول را هنگام محاسبه پهنای ستون‌ها در نظر می‌گیرد، نه فقط سطرهایی که در ۲۰۰ خط اول ورودی یک ناحیه رخ می‌دهند. به همین ترتیب، نشانه‌های ادامه‌دهنده جدول (.T&) را خارج از ۲۰۰ خط اول ورودی یک ناحیه نیز شناسایی می‌کند.
•
درایه‌های عددی و الفبایی می‌توانند در یک ستون یکسان ظاهر شوند.
•
درایه‌های عددی و الفبایی می‌توانند به صورت افقی گسترش یابند (ادغام شوند).

می‌توانید یک ناحیه جدول را درون یک تعریف ماکرو جاسازی کنید. اما، از آنجا که tbl تعاریف ماکروی خود را در ابتدای هر ناحیه جدول می‌نویسد، لازم است به جای پایان دادن به تعاریف ماکرو با “..”، ماکروهای پایانی را فراخوانی کنید. علاوه بر این، نویسه گریز باید غیرفعال شود.

تمامی قابلیت‌های tbl را نمی‌توان از درون چنین ماکروهایی به کار گرفت، زیرا tbl یک پیش‌پردازنده roff است: ورودی را زودتر از troff می‌بیند. برای نمونه، تراز عمودی جداکننده‌های اعشار در صورتی که اعداد حاوی آن‌ها به عنوان پارامترهای ماکرو یا رشته ظاهر شوند، با شکست مواجه می‌شود؛ تراز توسط خود tbl انجام می‌گیرد که تنها \$1، \$2 و غیره را می‌بیند، و بنابراین نمی‌تواند جداکننده اعشاری را که بعدها هنگام درج تعریف ماکرو یا رشته توسط troff ظاهر می‌شود شناسایی کند.

استفاده از ماکروهای tbl درون ورودی‌های شرطی (یعنی وابسته به درخواست‌های if، ie، el یا while) می‌تواند به شماره خطوط گمراه‌کننده در پیام‌های تشخیصی بعدی منجر شود. tbl خروجی خود را بدون قید و شرط درون سند مبدا تزریق می‌کند، اما ممکن است شاخه شرطی حاوی آن اجرا نشود، و اگر اجرا نشود، درخواست‌های lf که tbl برای بازگرداندن شماره خط مبدا تزریق می‌کند نمی‌توانند اعمال شوند. کپی کردن ثبات شمارنده خط ورودی “c.” و بازگرداندن مقدار آن در مکانی مناسب پس از محاسبات مربوطه را مد نظر قرار دهید.

گزینه --help پیام راهنمای نحوه استفاده را نمایش می‌دهد، در حالی که -v و --version اطلاعات نسخه را نشان می‌دهند؛ همگی پس از آن خارج می‌شوند.

فعال‌سازی حالت سازگاری با AT&T: شناسایی .TS و .TE حتی زمانی که با نویسه‌ای غیر از فاصله یا خط جدید دنبال شوند، و تفسیر دنباله گریز راهنما (leader) در حالت کپی \a به عنوان یک نویسه راهنما.

tbl در صورت اجرای موفق با وضعیت 0 خارج می‌شود، با وضعیت 2 اگر برنامه نتواند آرگومان‌های خط فرمان خود را تفسیر کند، و با وضعیت 1 اگر در حین اجرا با خطایی مواجه شود.

درون یک ناحیه tbl (به جز در بلوک‌های متنی یا خطوط کنترلی roff)، از دنباله‌های گریزی که مابقی خط ورودی را می‌خوانند، مانند آنچه \" و \! انجام می‌دهند، خودداری کنید.

جداول چندصفحه‌ای، اگر کادردار باشند یا بخواهید سرستون‌های آن‌ها پس از شکست صفحه تکرار شوند، نیازمند پشتیبانی در زمان قالب‌بندی سند هستند. روالی متداول برای چنین پشتیبانی در بسته‌های ماکرو مانند ms، mm و me به وجود آمده است. برای استفاده از آن، پس از نشانه .TS یک فاصله و سپس “H” قرار دهید؛ این کار توسط قالب‌بند به عنوان فراخوانی ماکروی TS همراه با یک آرگومان H تفسیر خواهد شد. سپس، درون داده‌های جدول، ماکروی TH را فراخوانی کنید؛ این کار به بسته ماکرو اطلاع می‌دهد که سرستون‌ها در کجا پایان می‌یابند. اگر جدول شما فاقد چنین سطرهای سرستونی است یا نمی‌خواهید تکرار شوند، TH را بلافاصله پس از مشخصات قالب جدول فراخوانی کنید. اگر یک جدول چندصفحه‌ای کادردار است یا دارای سرستون‌های تکرارشونده است، آن را با ماکروهای نگهداری/رهاسازی (keep/release) احاطه نکنید، یا به هر روش دیگری آن را درون دیورژن (divert) قرار ندهید. علاوه بر این، درخواست bp باعث شکست صفحه در یک جدول “TS H” نخواهد شد. ماکرویی برای پوشش دادن bp تعریف کنید: در صورتی که دیورژن جاری وجود نداشته باشد، آن را به طور معمول فراخوانی کنید. در غیر این صورت، فراخوانی ماکرو را با استفاده از دنباله گریز خط شفاف \! به دیورژن دربرگیرنده ارسال کنید؛ این کار شکست صفحه را به دستگاه خروجی «منتقل می‌کند» (bubble up). برای مشاهده نمونه، بخش «مثال‌ها» را در ادامه ببینید.

grotty(1) از خطوط افقی دوگانه پشتیبانی نمی‌کند؛ در عوض از خطوط تکی استفاده می‌کند. همچنین حرکت‌های نیم‌خطی را نادیده می‌گیرد، بنابراین اصلاح‌کننده ستون u هیچ اثری ندارد. در دستگاه‌های ترمینال («حالت nroff»)، خطوط افقی و حاشیه‌های کادر یک vee کامل از فضا را اشغال می‌کنند؛ doublebox این مقدار را برای حاشیه‌ها دوبرابر می‌کند. بنابراین جداولی که از این ویژگی‌ها استفاده می‌کنند، در حالت nroff به فضای عمودی بیشتری نسبت به حالت troff نیاز دارند: درخواست‌های ne را متناسب با آن بنویسید. خطوط عمودی میان ستون‌ها در فضای بین ستون‌ها در حالت nroff رسم می‌شوند؛ استفاده از خطوط عمودی دوگانه یا کاهش فاصله ستون‌ها به کمتر از حد پیش‌فرض می‌تواند آن‌ها را نازیبا کرده یا با داده‌های جدول هم‌پوشانی کند.

یک بلوک متنی درون یک جدول باید بتواند در یک صفحه جا بگیرد.

استفاده از \a برای قرار دادن نویسه راهنما (leader) در درایه‌های جدول در tbl گنو کار نمی‌کند، مگر در حالت سازگاری. این رفتار صحیح است: \a یک راهنمای تفسیرنشده است. شما همچنان می‌توانید از نویسه راهنمای roff (Control+A) استفاده کنید یا رشته‌ای تعریف نمایید تا از \a همان‌گونه که طراحی شده بود استفاده شود: تنها در حالت کپی تفسیر گردد.

.ds a \a
.TS
box center tab(;);
Lw(2i)0 L.
Population\*a;6,327,119
.TE
Population? 6,327,119

یک “|” ابتدایی یا انتهایی در مشخصات قالب، مانند “|LCR|.”، یک فاصله en میان خطوط و محتوای ستون‌های مجاور ایجاد می‌کند. اگر چنین فاصله‌ای نامطلوب است (خط باید مماس بر محتوا باشد)، می‌توانید ستون‌های «ساختگی» (dummy) با فاصله صفر و درایه‌های خالی متناظر جدول را پیش یا پس از آن معرفی کنید.

.TS
center tab(#);
R0|L C R0|L.
_
#levulose#glucose#dextrose#
_
.TE

این ستون‌های ساختگی دارای عرض صفر هستند و بنابراین نامرئی می‌باشند؛ متاسفانه آن‌ها معمولاً در دستگاه‌های ترمینال طبق انتظار عمل نمی‌کنند.

یادگیری زبان tbl از طریق مثال‌ها، به ویژه در ابتدا، می‌تواند آسان‌تر از توصیفات رسمی باشد.

.TS
box center tab(#);
Cb Cb
L  L.
Ability#Application
Strength#crushes a tomato
Dexterity#dodges a thrown tomato
Constitution#eats a month-old tomato without becoming ill
Intelligence#knows that a tomato is a fruit
Wisdom#chooses \f[I]not\f[] to put tomato in a fruit salad
Charisma#sells tomato-based fruit salads to hypercarnivores
.TE
Ability Application
Strength crushes a tomato
Dexterity dodges a thrown tomato
Constitution eats a month-old tomato without becoming ill
Intelligence knows that a tomato is a fruit
Wisdom chooses not to put tomato in a fruit salad
Charisma sells tomato-based fruit salads to hypercarnivores

درک طبقه‌بندی‌کننده‌های ستون A و N در رندر بصری می‌تواند آسان‌تر از توصیف متنی آن‌ها باشد.

.TS
center tab(;);
CbS,LN,AN.
Daily energy intake (in MJ)
Macronutrients
.\" assume 3 significant figures of precision
Carbohydrates;4.5
Fats;2.25
Protein;3
.T&
LN,AN.
Mineral
Pu-239;14.6
_
.T&
LN.
Total;\[ti]24.4
.TE
Daily energy intake (in MJ)
Macronutrients
 Carbohydrates 4.5 
 Fats 2.25
 Protein 3   
Mineral
 Pu-239 14.6 
Total ~24.4 

در ادامه، ارائه‌ای فشرده از گسترش، تراز عمودی و اصلاح‌کننده‌های ستون با عرض صفر را که با اندکی تغییر از مرجع mandoc برای مفسر tbl آن اقتباس شده است ارائه می‌دهیم. بررسی دقیق آن بسیار آموزنده است.

.TS
box center tab(:);
Lz  S | Rt
Ld| Cb| ^
^ | Rz  S.
left:r
l:center:
:right
.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|difference
1|1
2|4|3
3|9|5
4|16|7
5|25|9
6|36|11
.TE
n n×n difference
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—A Program to Format Tables”, نویسنده M. E. Lesk, 1976 (بازبینی‌شده در 16 ژانویه 1979), گزارش فنی علوم رایانه آزمایشگاه‌های بل AT&T شماره 49.

مثال گسترش فوق برگرفته از صفحه راهنمای mandoc برای پیاده‌سازی tbl آن است.

groff(1), troff(1)

2026-03-15 groff 1.24.1