| GROFF(1) | دستورهای کاربری | GROFF(1) |
نام (NAME)
groff - رابط اصلی و پیشخوان سامانه حروفچینی متنی GNU roff
خلاصه دستور (SYNOPSIS)
groff [ گزینهها... ] [ فایل... ]
توضیحات (DESCRIPTION)
دستور groff رابط و اجراکننده اصلی سامانه حروفچینی و قالببندی مستندات GNU roff است.
سامانه GNU roff یک سیستم حروفچینی پیشرفته است که فایلهای متنی ساده حاوی دستورات قالببندی را خوانده و خروجیهایی در قالبهای PostScript، PDF، HTML، DVI یا دیگر قالبها، و یا برای نمایش مستقیم در ترمینال تولید میکند.
دستورات قالببندی میتوانند دستورات پایه و اولیه حروفچینی (primitives)، ماکروهای تعریفشده در بستههای استاندارد، یا ماکروهای سفارشی نوشتهشده توسط کاربر باشند. میتوان هر سه روش را با یکدیگر ترکیب کرد.
اگر هیچ عملوند فایلی مشخص نشده باشد، یا مقدار فایل برابر با “-” باشد، groff جریان ورودی استاندارد (stdin) را پردازش میکند.
به عنوان یک پیادهسازی نوین و گسترشیافته از سیستم حروفچینی AT&T Unix، برنامه groff به دلیل پیوند تاریخی و کهن خود با اسناد و صفحات راهنمای یونیکس، تقریباً در تمامی سیستمهای سازگار با POSIX حضور دارد. این نرمافزار و سامانههای پیشین آن نقش بهسزایی در حروفچینی و انتشار چندین عنوان از پرفروشترین کتابهای مرجع مهندسی نرمافزار جهان داشتهاند. groff قادر است مستنداتی با نهایت ظرافت و کیفیت تایپوگرافی تولید کند، در حالی که کمترین میزان از حافظه و پردازش سیستم را مصرف مینماید.
فرمان groff وظیفه مدیریت و هماهنگی اجرای پیشپردازندهها، تبدیل اسناد ورودی به یک زبان توصیف صفحه مستقل از دستگاه، و در نهایت تولید خروجی نهایی از آن زبان را بر عهده دارد.
گزینهها (OPTIONS)
-h و --help پیام راهنمای استفاده از دستور را نمایش داده و خارج میشوند.
از آنجا که هدف از طراحی groff پوشش و مدیریت اکثر فراخوانیهای مستقیم قالببند troff(1) توسط کاربران است، این دو برنامه گزینههای مشترک متعددی دارند. با این حال، groff دارای گزینههایی اختصاصی است که در troff وجود ندارند، و گزینههایی دیگر را نیز به شکلی متفاوت تفسیر میکند. در عین حال، تمامی گزینههای معتبر troff را نمیتوان مستقیماً به groff ارسال کرد.
گزینههای اختصاصی groff (groff-specific options)
گزینههای زیر یا در troff گنو وجود ندارند یا توسط groff به شکلی متمایز تفسیر میشوند.
- -D enc
- تنظیم کدگذاری ورودی جایگزین (fallback) مورد استفاده توسط preconv(1) به enc؛ به صورت خودکار گزینه -k را فعال میسازد.
- -e
- اجرای پیشپردازنده فرمولهای ریاضی eqn(1).
- -g
- اجرای پیشپردازنده نمودارهای گرملین grn(1).
- -G
- اجرای پیشپردازنده نمودارهای آماری grap(1)؛ به صورت خودکار گزینه -p را فعال میسازد.
- -I dir
- مشابه گزینه troff عمل میکند (پایینتر توضیح داده شده است)، اما علاوه بر آن گزینههای -g و -s را نیز فعال میکند. همچنین این مقدار به soelim(1) و درایور خروجی فرستاده میشود و پیشپردازنده grn نیز گزینه -M را با شناسه dir دریافت میکند.
- -j
- اجرای پیشپردازنده ساختارهای شیمیایی chem(1)؛ به صورت خودکار گزینه -p را فعال میسازد.
- -k
- اجرای پیشپردازنده تبدیل کدگذاری preconv(1). در صورتی که هیچیک از گزینههای -K یا -D تعیین نشده باشند، به صفحه راهنمای این ابزار مراجعه فرمایید تا از رفتار پیشفرض آن آگاه شوید.
- -K enc
- تنظیم کدگذاری ورودی مورد استفاده توسط preconv(1) به enc؛ به صورت خودکار گزینه -k را فعال میسازد.
- -l
- ارسال خروجی به یک برنامه اسپولر (spooler) جهت چاپ کاغذی. دستور “print” در فایل توصیف دستگاه، فرمان پیشفرض مورد استفاده برای چاپ را مشخص میکند؛ به groff_font(5) مراجعه کنید. اگر چنین دستوری برای دستگاه خروجی تعریف نشده باشد، خروجی به برنامه lpr(1) فرستاده میشود. گزینههای -L و -X را نیز ببینید.
- -L arg
- ارسال شناسه arg به برنامه اسپولر چاپ. اگر چندین شناسه مورد نیاز است، هر شناسه را با یک گزینه -L جداگانه ارسال فرمایید. برنامه groff پیش از ارسال arg به برنامه اسپولر، خط تیره سوییچ به آن اضافه نمیکند.
- -M
- مشابه گزینه troff عمل میکند (پایینتر توضیح داده شده است)، اما علاوه بر آن به برنامههای eqn(1)، grap(1) و grn(1) نیز فرستاده میشود.
- -N
- ممنوعیت خطوط جدید (newline) میان جداکنندههای eqn: گزینه -N را به eqn(1) ارسال مینماید.
- -p
- اجرای پیشپردازنده رسم تصاویر و دیاگرامهای pic(1).
- -P arg
- ارسال آرگومان arg به پسپردازنده (postprocessor). اگر ارسال چندین آرگومان لازم باشد، هر یک را با یک گزینه -P جداگانه مشخص کنید. برنامه groff پیش از ارسال arg به پسپردازنده، خط تیره سوییچ به ابتدای آن اضافه نمیکند.
- -R
- اجرای پیشپردازنده ارجاعات کتابشناسی refer(1). هیچ سازوکاری برای ارسال آرگومان به refer تعبیه نشده است، زیرا بیشتر گزینههای refer دارای عناصر دستوری معادل در خود زبان هستند که میتوان مستقیماً درون سند مشخص کرد.
- -s
- اجرای پیشپردازنده الحاق فایلها soelim(1).
- -S
- فعالسازی حالت «امنتر» (safer mode)؛ برای حالت معکوس آن به گزینه -U در پایین مراجعه کنید. به دلایل امنیتی، حالت امن به طور پیشفرض فعال است.
- -t
- اجرای پیشپردازنده جدولهای tbl(1).
- -T dev
- هدایت troff به قالببندی ورودی برای دستگاه خروجی dev. سپس groff یک درایور خروجی را جهت تبدیل خروجی troff به قالبی متناسب با dev فراخوانی میکند؛ به بخش «دستگاههای خروجی» در ادامه مراجعه کنید.
- -U
- کار در حالت ناامن (unsafe): ارسال گزینه -U به pic و troff.
- -v
- --version
- نوشتن اطلاعات نسخه groff و تمامی ابزارهای اجراشده توسط آن در جریان خروجی استاندارد؛ به این معنا که خط فرمان مانند روال معمول پردازش شده و گزینه -v به قالببند و هر یک از پیشپردازندهها یا پسپردازندههای فراخوانیشده ارسال میگردد.
- -V
- چاپ خط لوله (pipeline) دستوراتی که groff قصد اجرای آنها را دارد در خروجی استاندارد، بدون اجرای واقعی آنها. اگر این گزینه بیش از یک بار درج شود، groff هم خط لوله را در خروجی مینویسد و هم آن را به مرحله اجرا درمیآورد.
- -X
- استفاده از gxditview(1) به جای پسپردازنده معمولی برای پیشنمایش سند در یک نمایشگر گرافیکی X11. ترکیب این گزینه با -Tps از ویژگیها و مقیاسهای قلم دستگاه PostScript بهره میبرد، در حالی که گزینههای -TX75 و -TX100 از مقیاسهای قلمهای سیستم پنجرهای X11 استفاده میکنند.
- -Z
- غیرفعالسازی مرحله پسپردازش. خروجی میانی troff مستقیماً در جریان خروجی استاندارد قرار میگیرد (مگر آنکه با گزینه -z سرکوب شده باشد)؛ برای شرح این قالب به groff_out(5) مراجعه فرمایید.
گزینههای مستقیم (Transparent options)
گزینههای زیر مستقیماً و بدون تغییر به برنامه قالببند troff(1) منتقل میشوند و جزئیات دقیقتر آنها در صفحه راهنمای آن آمده است.
- -a
- تولید یک تقریب متنی ساده (plain text) از خروجی حروفچینیشده.
- -b
- نوشتن ردگیری پشته (backtrace) در جریان خطای استاندارد به هنگام بروز هر خطا یا هشدار.
- -c
- شروع فرآیند با غیرفعال بودن خروجی رنگی.
- -C
- فعالسازی حالت سازگاری با troff شرکت AT&T؛ به طور خودکار گزینه -c را فعال میکند.
- -d cs
- -d name=string
- تعریف یک متغیر رشتهای (string).
- -E
- جلوگیری از نمایش پیامهای خطای troff؛ به طور خودکار گزینه -Ww را فعال میکند.
- -f fam
- تعیین خانواده قلم (font family) پیشفرض.
- -F dir
- جستجو در دایرکتوری dir برای یافتن دایرکتوری توصیف قلمها و مشخصات دستگاه خروجی انتخابشده.
- -i
- پردازش ورودی استاندارد پس از اتمام پردازش فایلهای ورودی مشخصشده.
- -I dir
- جستجو در دایرکتوری dir برای یافتن فایلهای ورودی.
- -m name
- پردازش فایل ماکروی name.tmac پیش از پردازش فایلهای ورودی.
- -M dir
- جستجو در دایرکتوری dir برای یافتن فایلهای ماکرو.
- -n num
- شمارهگذاری صفحه نخست سند به عنوان num.
- -o list
- تولید خروجی تنها برای صفحاتی که شماره آنها در فهرست list آمده است.
- -r cnumeric-expression
- -r register=numeric-expression
- تعریف مقدار یک رجیستر عددی.
- -w name
- -W name
- فعالسازی (-w) یا جلوگیری از (-W) صدور هشدارهای متعلق به دستهبندی name.
- -z
- جلوگیری از تولید خروجی قالببندیشده مستقل از دستگاه توسط troff.
کاربرد (USAGE)
معماری سامانه GNU roff از الگوی پیادهسازیهای مستقل از دستگاه roff پیروی میکند که شامل پیشپردازندهها، بستههای ماکرو، درایورهای خروجی (یا همان «پسپردازندهها»)، مجموعهای از ابزارهای کمکی، و برنامه قالببند هستهای troff است. برای آشنایی با نحوه کارکرد عمومی سامانههای حروفچینی به roff(7) مراجعه نمایید.
برنامههای پیشخوان در سامانه GNU roff کاربری آن را نسبت به نسخههای سنتی roff که نیازمند ساخت دستی خطوط لوله پیچیده یا استفاده از فایلهای موقت بودند، بسیار آسانتر کردهاند. توضیحات پیشرو اجزای تشکیلدهنده سامانه GNU roff را خلاصه کرده و اطلاعات اختصاصی groff را به مستندات roff(7) میافزاید.
شروع به کار (Getting started)
کاربرانی که ترجیح میدهند با آزمون و خطای عملی یاد بگیرند یا به بازخورد سریع علاقه دارند، میتوانند با یک سند ساده «سلام، دنیا!» کار خود را آغاز نمایند.
$ echo "Hello, world!" | groff -Tascii | sed '/^$/d' Hello, world!
در دستور بالا از sed تنها برای حذف ۶۵ خط خالی اضافی استفاده شده است که در غیر این صورت صفحه ترمینال را پر میکردند. (سامانههای roff در عصر پایانههای کاغذی با ۶۶ خط در هر صفحه طراحی شده بودند.)
کاربران امروزی ترجیح میدهند خروجی را در ترمینالهای با قابلیت پشتیبانی از UTF-8 دریافت کنند:
$ echo "Hello, world!" | groff -Tutf8 | sed '/^$/d'
تولید خروجی در قالبهای PDF، HTML یا DVI مربوط به TeX نیز به همان اندازه ساده است؛ تنها بخش دشوار، انتخاب برنامه نمایشدهنده مناسب برای مشاهده خروجی خواهد بود:
$ echo "Hello, world!" | groff -Tpdf > hello.pdf $ evince hello.pdf $ echo "Hello, world!" | groff -Thtml > hello.html $ firefox hello.html $ echo "Hello, world!" | groff -Tdvi > hello.dvi $ xdvi hello.html
استفاده از groff به عنوان REPL (Using groff as a REPL)
علاقهمندان به برنامهنویسی میتوانند از groff به صورت حلقه خواندن-ارزیابی-چاپ (REPL) استفاده کنند. این کار برای سنجش درک خود از رفتار قالببند یا دستوراتی که میپذیرد بسیار مفید است. فعالسازی تمامی هشدارها با -ww به دستیابی به این هدف کمک میکند:
$
groff -ww -Tutf8
\# This is a comment. Let's define a register.
.nr a 1
\# Do integer arithmetic with operators evaluated left-to-right.
.nr b \n[a]+5/2
\# Let's get the result on the standard error stream.
.tm \n[b]
3
\# Now we'll define a string.
.ds name Leslie\" This is another form of comment.
.nr b (\n[a] + (7/2))
\# Center the next two text input lines.
.ce 2
Hi, \*[name].
Your secret number is \n[b].
\# We will see that the division rounded toward zero.
It is
\# Here's an if-else control structure.
.ie (\n[b] % 2) odd.
.el even.
\# This trick sets the page length to the current vertical
\# position, so that blank lines don't spew when we're done.
.pl \n[nl]u
<Control-D>
Hi, Leslie.
Your secret number is 4.
It is even.
اندازه و قالب کاغذ (Paper format)
در GNUroff، ابعاد صفحه برای برنامه قالببند troff و برای دستگاههای خروجی به صورت مجزا مدیریت میشوند. در قالببند، دستوراتی برای تعیین طول صفحه (.pl)، فاصله از لبه صفحه یا همان حاشیه چپ (.po)، و طول خط متن (.ll) به کار میروند. حاشیه راست به طور صریح پیکربندی نمیشود؛ ترکیب فاصله از لبه و طول خط، اطلاعات لازم برای استخراج آن را فراهم میآورد.
بسته ماکروی papersize، که به صورت خودکار توسط troff بارگذاری میشود، رابطی کارآمد برای تنظیم ابعاد صفحه با نامهای شناختهشده مانند “letter” یا “A4” ارائه میدهد؛ به groff_tmac(5) مراجعه کنید. مقدار پیشفرض در این سیستم “A4” است.
احترام به این ابعاد بر عهده هر بسته ماکرو است و برخی بستهها سازوکارهای جایگزینی برای تنظیم آن ارائه میدهند.
برای هر دستگاه خروجی، اندازه محیط چاپ در فایل DESC مربوط به آن تعریف میشود. اکثر درایورهای خروجی از گزینه -p در خط فرمان برای بازنویسی ابعاد پیشفرض و از گزینه -l برای حالت افقی (landscape) پشتیبانی میکنند. به groff_font(5) جهت مشاهده دستور papersize مراجعه کنید. صفحه راهنمای درایور خروجی، نظیر grops(1) نیز راهگشا است. دستور groff از گزینه -P برای انتقال گزینهها به دستگاههای خروجی استفاده میکند؛ برای نمونه جهت تولید خروجی PostScript روی کاغذ A4 افقی:
-
groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
پیشخوان (Front end)
برنامه groff یک پوسته و رابط پیرامونی برای برنامه troff(1) است. این ابزار امکان فعالسازی پیشپردازندهها را از طریق گزینههای خط فرمان فراهم کرده و پسپردازنده مناسب را برای دستگاه خروجی انتخابشده به طور خودکار اجرا مینماید. بدین ترتیب، نیازی به ایجاد دستی خط لولهها یا مدیریت فایلهای موقت که در نسخههای سنتی roff(7) الزامی بود نخواهد بود. میتوان از ابزار grog(1) جهت حدس زدن گزینههای لازم برای پردازش یک سند استفاده کرد.
زبان حروفچینی (Language)
ورودی یک سامانه roff شامل متن ساده است که با خطوط کنترلی و توالیهای گریز (escape sequences) درآمیخته شده است. این ترکیب، سندی را در یکی از زبانهای خانواده roff میسازد؛ برای پیشزمینه تاریخی به roff(7) مراجعه کنید. مروری کلی بر دستور زبان GNU roff از جمله فهرست کاملی از توالیهای گریز، درخواستها و رجیسترهای از پیشتعریفشده در groff(7) یافت میشود. همچنین بخشهای افزوده GNU roff به زبان سنتی AT&T troff در groff_diff(7) شرح داده شدهاند.
پیشپردازندهها (Preprocessors)
یک پیشپردازنده، زبانی با کاربرد ویژه (دامنه خاص) را خوانده و خروجیهایی به زبان roff تولید میکند. غالباً این ورودیها در بخشهای مشخصی از فایل ورودی (که با ماکروهای خاص هر پیشپردازنده محصور شدهاند) قرار دارند و پیشپردازنده آنها را جایگزین مینماید. بنابراین پیشپردازندهها علاوه بر زبان اختصاصی خود، زیرمجموعهای از نحو roff را نیز درک میکنند. سامانه GNU roff پیادهسازیهای مجددی از پیشپردازندههای نامآشنای AT&T troff ارائه میدهد که قابلیتهای گستردهتری داشته و برای قالببندی نیازمند troff گنو هستند.
| tbl | صفحهآرایی و چیدمان جدولها؛ |
| eqn | حروفچینی فرمولها و عبارات ریاضی؛ |
| pic | رسم تصاویر و نمودارها؛ |
| refer | پردازش ارجاعات و کتابشناسی؛ |
| soelim | پیشپردازش و الحاق فایلهای ورودی؛ |
| grn | رندر دیاگرامهای |
| chem | رسم ساختارهای شیمیایی با استفاده از pic ؛ |
| gperl | مقداردهی رجیسترها و رشتههای groff با استفاده از |
| glilypond | جایگذاری نتهای موسیقی LilyPond ؛ و |
| gpinyin | تسهیل ورود متن چینی با نویسههای Hanyu Pinyin. |
یکی از پیشپردازندههای منحصربهفرد در GNU roff برنامه preconv(1) است که کدگذاریهای گوناگون ورودی را به قالبی قابلدرک برای troff گنو تبدیل مینماید. در صورت استفاده، این ابزار پیش از تمامی پیشپردازندههای دیگر اجرا میشود.
اکثر پیشپردازندهها محتوای خود را میان یک جفت نشانه (token) مشخص قرار میدهند. این نشانهها باید در ابتدای خط ورودی آمده و از نویسه نقطه کنترلی استفاده کنند. فاصلهها یا تبها نباید بلافاصله پس از نقطه یا پیش از پایان خط قرار گیرند. عدم رعایت این نکات مانع از شناسایی بلوک توسط پیشپردازنده خواهد شد. این نشانهها در خروجی حفظ شده و سپس توسط troff به عنوان فراخوانی ماکرو تعبیر میگردند. پیشپردازنده ideal هنوز در groff در دسترس نیست.
| پیشپردازنده | نشانه آغازین | نشانه پایانی |
| chem | .cstart | .cend |
| eqn | .EQ | .EN |
| grap | .G1 | .G2 |
| grn | .GS | .GE |
| ideal | .IS | .IE |
| .IF | ||
| pic | .PS | .PE |
| .PF | ||
| .PY | ||
| refer | .R1 | .R2 |
| tbl | .TS | .TE |
| glilypond | .lilypond start | .lilypond stop |
| gperl | .Perl start | .Perl stop |
| gpinyin | .pinyin start | .pinyin stop |
بستههای ماکرو (Macro packages)
فایلهای ماکرو، فایلهای ورودی roff هستند که خود خروجی مستقیمی تولید نمیکنند، بلکه نگارش و قالببندی سایر اسناد را تسهیل مینمایند. هنگامی که یک فایل ماکرو در یک مسیر استاندارد نصب شده و برای استفاده عمومی طراحی شده باشد، به آن «بسته ماکرو» (macro package) میگویند.
بستههای ماکرو را میتوان پیش از هر سندی با استفاده از گزینه -m بارگذاری نمود. سامانه GNU roff اکثر بستههای ماکروی مشهور AT&T troff را به شکلی کاملاً سازگار پیادهسازی و گسترش داده است. این بستهها به دلیل سنت خلاصهنویسی در روزهای آغازین یونیکس نامهایی تکحرفی یا دوحرفی دارند؛ به گونهای که بسیاری از آنها در زبان روزمره با حرف سوییچ nroff یا troff فراخوانیکننده خود شناخته میشوند (مانند «man» برگرفته از manual، یا بسته «s» که به نام ms یا حتی -ms معروف است).
بستههای ماکرو وظایف گوناگونی را بر عهده دارند. برخی بستهها «همهمنظوره و کامل» هستند که مدیریت صفحهآرایی، حاشیهها و لغتنامه اختصاصی ساختار سند را بر عهده میگیرند؛ هر سند تنها میتواند از یکی از این بستهها استفاده کند:
- an
- برای نگارش صفحات راهنما بر پایه قالب نگارش ۷ یونیکس (۱۹۷۹)؛ به groff_man(7) مراجعه کنید. این بسته با گزینه -man در خط فرمان فراخوانی میشود.
- doc
- برای نگارش صفحات راهنما بر پایه قالب 4.3BSD-Reno (۱۹۹۰)؛ به groff_mdoc(7) مراجعه کنید. این بسته با گزینه -mdoc در خط فرمان فراخوانی میشود.
- e
- مجموعه ماکروهای عمومی برکلی، توسعهیافته به عنوان جایگزینی برای بسته s شرکت AT&T؛ به groff_me(7) مراجعه کنید. این بسته با گزینه -me در خط فرمان فراخوانی میشود.
- m
- پیادهسازی نسل دوم بستههای اسناد عمومی شرکت AT&T و جانشین بسته s؛ به groff_mm(7) مراجعه کنید. این بسته با گزینه -mm در خط فرمان فراخوانی میشود.
- om
- (همواره با عنوان «mom» خوانده میشود) بسته ماکروی مدرنی است که توسط پیتر شافتر (Peter Schaffter) اختصاصاً برای GNU roff نگاشته شده است. برای مستندات کامل به راهنمای HTML بسته mom مراجعه کنید. این بسته در خط فرمان با -mom مشخص میشود.
- s
- قالب عمومی و اصیل اسناد در سیستم AT&T؛ به groff_ms(7) مراجعه کنید. این بسته با گزینه -ms در خط فرمان فراخوانی میشود.
سایر بستهها ماهیت کمکی دارند؛ برای نمونه، andoc یک بسته پوششی در GNU roff است که به صورت خودکار تشخیص میدهد آیا یک صفحه راهنما از قالب man استفاده کرده یا mdoc، و بسته مربوطه را فراخوانی میکند. این بسته در خط فرمان با -mandoc تعیین میشود. برنامههای مرورگر راهنما مانند man(1) از این ماکرو بهره میبرند تا دیگر نیازی به پویش اولیه محتوای سند نداشته باشند.
بسیاری دیگر از فایلهای ماکرو عملکردهای بستههای جامع را تکمیل میکنند یا برای اسناد بدون بسته ماکرو (که گاهی «خام» یا raw نامیده میشوند) به کار میروند؛ شرح آنها در groff_tmac(5) آمده است.
قالببندها (Formatters)
قالببند، برنامهای است که زبان ورودی roff را تفسیر و پردازش میکند؛ این برنامه troff(1) نام دارد. این ابزار تمامی قابلیتهای برنامههای AT&T troff و nroff را به همراه افزودههای متعددی ارائه میدهد. گزینه -C در خط فرمان، برنامه troff را به «حالت سازگاری» (compatibility mode) میبرد تا رفتار سیستم سنتی AT&T را با بالاترین دقت ممکن شبیهسازی کند.
اسکریپت پوسته nroff(1) رفتار سیستم سنتی AT&T nroff را شبیهسازی مینماید. این اسکریپت تلاش میکند خروجی را بر پایه تنظیمات محلی (locale) کاربر کدگذاری کند و کاربر را از تعیین دستگاه خروجی با سوییچ -T بینیاز سازد؛ از این رو برای خروجیهای پایانهای بسیار کارآمد است.
برنامه troff گنو خروجی نهایی خود را در زبانی مستقل از دستگاه اما وابسته به تعاریف آن تولید میکند که جزئیات آن در groff_out(5) آمده است.
دستگاههای خروجی (Output devices)
خروجی troff برای یک «دستگاه خروجی» خاص قالببندی میشود که معمولاً با گزینه -T در خط فرمان تعیین میگردد. اگر این گزینه یا متغیر محیطی GROFF_TYPESETTER تعیین نشده باشند، دستگاه خروجی پیشفرض ps خواهد بود. دستگاههای خروجی پشتیبانیشده به شرح زیر هستند:
- ascii
- برای پایانههای مبتنی بر مجموعه نویسهها و کدگذاری ISO 646 1991:IRV (معروف به US-ASCII).
- cp1047
- برای پایانههای مبتنی بر کدپیج ۱۰۴۷ شرکت IBM.
- dvi
- برای تولید خروجی قالب DVI سامانه حروفچینی TeX.
- html
- xhtml
- به ترتیب برای تولید خروجی در قالبهای وب HTML و XHTML.
- latin1
- برای پایانههای مبتنی بر مجموعه نویسه و کدگذاری ISO Latin-1 (ISO 8859-1).
- lbp
- برای چاپگرهای لیزری سری CaPSL شرکت کانن (چاپگرهای سری LBP-4 و LBP-8).
- lj4
- برای چاپگرهای سازگار با پروتکل PCL5 و چاپگرهای سری HP LaserJet 4.
- برای تولید اسناد قالب PDF.
- ps
- برای تولید اسناد و خروجی چاپ PostScript.
- utf8
- برای پایانههای متنی نوین با مجموعه نویسههای یونیکد (ISO 10646) در کدگذاری UTF-8.
- X75
- برای پیشنمایش در gxditview با تفکیکپذیری ۷۵ نقطه بر اینچ (dpi) و اندازه قلم پایه ۱۰ پوینت.
- X75-12
- برای پیشنمایش در gxditview با تفکیکپذیری ۷۵ نقطه بر اینچ و اندازه قلم پایه ۱۲ پوینت.
- X100
- برای پیشنمایش در gxditview با تفکیکپذیری ۱۰۰ نقطه بر اینچ و اندازه قلم پایه ۱۰ پوینت.
- X100-12
- برای پیشنمایش در gxditview با تفکیکپذیری ۱۰۰ نقطه بر اینچ و اندازه قلم پایه ۱۲ پوینت.
پسپردازندهها (Postprocessors)
هر برنامهای که خروجی troff گنو را تفسیر نماید، یک پسپردازنده به شمار میرود. پسپردازندههای ارائهشده توسط سامانه GNU roff در حقیقت «درایورهای خروجی» هستند که سند را برای مشاهده در مانیتور یا چاپ آماده میکنند. البته ساخت پسپردازندهها برای مقاصد دیگر (مانند چینش مجدد صفحات یا تحلیل آماری سند) نیز امکانپذیر است.
هر درایور خروجی از یک یا چند دستگاه خروجی پشتیبانی میکند و برای هر یک فایلی جهت توصیف دستگاه دارد. دستگاه با استفاده از فرمان postpro در فایل توصیف خود، پسپردازنده اختصاصیاش را مشخص میسازد؛ به groff_font(5) مراجعه فرمایید. گزینه -X این انتخاب را نادیده گرفته و موجب میشود تا برنامه gxditview به عنوان درایور خروجی عمل کند.
- grodvi(1)
- فراهمکننده درایور دستگاه dvi.
- grohtml(1)
- فراهمکننده درایورهای دستگاههای html و xhtml.
- grolbp(1)
- فراهمکننده درایور دستگاه lbp.
- grolj4(1)
- فراهمکننده درایور دستگاه lj4.
- gropdf(1)
- فراهمکننده درایور دستگاه pdf.
- grops(1)
- فراهمکننده درایور دستگاه ps.
- grotty(1)
- فراهمکننده درایورهای خروجی پایانهای ascii، cp1047، latin1 و utf8.
- gxditview(1)
- فراهمکننده پیشنمایش برای X75، X75-12، X100 و X100-12، و همچنین با قابلیت پیشنمایش خروجیهای ps.
ابزارهای کمکی (Utilities)
سامانه GNU roff شامل مجموعهای از ابزارهای کمکی و جانبی است:
- gdiffmk(1)
- علامتگذاری تفاوتها و تغییرات میان دو فایل ورودی roff.
- grog(1)
- حدس هوشمندانه فرمان و گزینههای groff که سند برای قالببندی به آنها نیاز دارد.
ابزارهای زیر فایلهای توصیف قلم را ایجاد میکنند تا قالببند بتواند هنگام تولید خروجی از آن قلمها استفاده نماید:
- addftinfo(1)
- افزودن اطلاعات به فایلهای توصیف قلم AT&T troff جهت استفاده در troff گنو.
- afmtodit(1)
- تولید فایلهای توصیف قلم برای قلمهای PostScript Type 1.
- pfbtops(1)
- تبدیل قلمهای PostScript Type 1 از قالب PFB (دودویی) به قالب متنی PFA جهت خوانده شدن توسط afmtodit.
- hpftodit(1)
- تولید فایلهای توصیف قلم برای چاپگرهای سری HP LaserJet 4.
- tfmtodit(1)
- تولید فایلهای توصیف قلم برای دستگاه خروجی DVI سامانه TeX.
- xtotroff(1)
- تولید فایلهای توصیف قلم برای قلمهای هسته سامانه X Window.
سه ابزار کمکی زیر نمودارهای طراحیشده با زبانهای پیشپردازنده roff را به فایلهای تصویری گرافیکی تبدیل میکنند:
- eqn2graph(1)
- تبدیل فرمولهای eqn به تصویر برشخورده.
- grap2graph(1)
- تبدیل نمودارهای grap به تصویر برشخورده.
- pic2graph(1)
- تبدیل نمودارهای pic به تصویر برشخورده.
مجموعهای دیگر از برنامهها برای تعامل با پایگاه داده مراجع کتابشناسی مورد استفاده در پیشپردازنده refer(1) طراحی شدهاند:
- indxbib(1)
- تولید نمایههای معکوس برای پایگاههای کتابشناسی به منظور افزایش چشمگیر سرعت جستجو.
- lkbib(1)
- جستجو در پایگاههای داده کتابشناسی.
- lookbib(1)
- جستجوی تعاملی در پایگاههای داده مراجع.
وضعیت خروج (EXIT STATUS)
دستور groff در صورت بروز خطا در تجزیه آرگومانها با وضعیت خطا خارج میشود، و در صورت مشخص شدن گزینههای -h یا --help با موفقیت خاتمه مییابد. در غیر این صورت، groff یک خط لوله را برای پردازش ورودی اجرا میکند؛ اگر تمام دستورات درون خط لوله با موفقیت پایان یابند، groff نیز با موفقیت خاتمه مییابد.
در صورت بروز خطا، کد خروج groff خلاصهای بیتی از مشکلات پیشآمده را کدگذاری میکند: اگر دستوری با وضعیت شکست خارج شود بیت ۰ (مقدار ۱) تنظیم میشود، اگر دستوری با دریافت سیگنال پایان یابد بیت ۱ (مقدار ۲) تنظیم میشود، و اگر دستوری قابل اجرا نباشد بیت ۲ (مقدار ۴) تنظیم میگردد. (بنابراین، اگر هر سه مشکل رخ دهد، وضعیت خروج برابر با ۷ خواهد بود: ۱ + ۲ + ۴). برای عیبیابی مشکلات خط لوله، میتوانید دستور groff را با گزینه -V مجدداً اجرا کرده و هر مرحله را جداگانه بررسی نمایید.
محیط (ENVIRONMENT)
به طور معمول، نویسه جداکننده مسیرها در متغیرهای محیطی که به PATH ختم میشوند، دونقطه (:) است؛ این مورد در سیستمهای عامل دیگر (مانند ویندوز که از سمیکالن استفاده میکند) ممکن است متفاوت باشد.
- GROFF_BIN_PATH
- مسیر جستجو برای یافتن برنامههایی که توسط groff اجرا میشوند، که پیش از PATH بررسی میگردد. اگر تنظیم نشده باشد، دایرکتوری نصب فایلهای اجرایی (/usr/bin) پیش از PATH جستجو میشود.
- GROFF_COMMAND_PREFIX
- میتوان سامانه GNU roff را در زمان کامپایل به گونهای پیکربندی کرد که پیشوندی به نام برنامههای دارای معادل در AT&T اضافه کند تا از تداخل نام جلوگیری شود. پیشفرض خالی است، اما در صورت استفاده معمولاً حرف «g» است (برای نمونه gtroff، gnroff، geqn، gpic، gtbl و غیره).
- GROFF_ENCODING
- مقدار این متغیر به گزینه -e پیشپردازنده preconv(1) منتقل میشود تا کدگذاری فایلهای ورودی را تعیین کند. وجود این متغیر به معنای اعمال خودکار گزینه -k است. گزینه -K در groff این متغیر را بازنویسی میکند.
- GROFF_FONT_PATH
- فهرست دایرکتوریها برای جستجوی فایلهای توصیف قلم و دستگاهها؛ به troff(1) و groff_font(5) مراجعه کنید.
- GROFF_TMAC_PATH
- فهرست دایرکتوریها برای جستجوی فایلهای ماکرو؛ به troff(1) و groff_tmac(5) مراجعه کنید.
- GROFF_TMPDIR
- دایرکتوری ایجاد فایلهای موقت. اگر تنظیم نشده باشد، مقدار TMPDIR و در ویندوز TMP یا TEMP بررسی میشود؛ در غیر این صورت از /tmp استفاده میگردد. دستورات refer(1)، grohtml(1) و grops(1) از فایلهای موقت بهره میبرند.
- GROFF_TYPESETTER
- تعیین دستگاه خروجی پیشفرض؛ اگر تنظیم نشده باشد ps است. گزینه -T بر این متغیر اولویت دارد.
- SOURCE_DATE_EPOCH
- برچسب زمانی بر حسب ثانیه از مبدا یونیکس که به عنوان زمان ساخت سند استفاده میشود. این زمان توسط gmtime(3) و asctime(3) به قالبی خوانا برای انسان تبدیل شده و در رجیسترهای سند قرار میگیرد.
- TZ
- منطقه زمانی جهت تبدیل زمان به قالب خوانا برای انسان؛ به tzset(3) مراجعه کنید. در صورت استفاده از SOURCE_DATE_EPOCH، تبدیل همواره بر پایه ساعت هماهنگ جهانی (UTC) خواهد بود.
مثالها (EXAMPLES)
سامانههای roff بیش از هر چیز برای صفحهآرایی صفحات راهنما شناخته میشوند. هنگامی که برنامه مرورگر man(1) یک صفحه راهنما را مییابد، دستوری مشابه زیر را اجرا میکند:
groff -t -man -Tutf8 /usr/share/man/man1/groff.1
برنامه مرورگر خروجی را به یک صفحهبند (pager) منتقل میکند.
برای پردازش یک سند roff با استفاده از پیشپردازندههای tbl و pic و بسته ماکروی me به شیوه سنتی AT&T، کاربر ناچار به اجرای خط لولهای به شکل زیر بود:
-
pic foo.me | tbl | troff -me -Tutf8 | grotty
با بهرهگیری از groff، این زنجیره به یک دستور کوتاه و سرراست تبدیل میشود:
-
groff -p -t -me -T utf8 foo.me
راهکاری سادهتر نیز استفاده از grog(1) برای حدس زدن پیشپردازندهها و ماکروهای مورد نیاز با استفاده از جایگزینی دستور پوسته است:
-
$(grog -Tutf8 foo.me)
هر گزینه خط فرمان برای پسپردازنده باید با خط تیرههای لازم مشخص شود، زیرا groff آرگومانها را مستقیماً منتقل میکند؛ برای نمونه جهت ارسال عنوان پنجره به gxditview:
groff -X -P -title -P 'trial run' mydoc.t
دستور بالا معادل است با:
groff -X -Z mydoc.t | gxditview -title 'trial run' -
محدودیتها (LIMITATIONS)
هنگام مرور صفحهبهصفحه خروجی برای دستگاههای ascii، cp1047، latin1 و utf8، برنامههایی چون more(1) و less(1) ممکن است برای پردازش صحیح توالیهای گریز ترمینال (جهت برجستهسازی یا ایتالیک) نیازمند گزینههای خاصی باشند؛ به grotty(1) مراجعه فرمایید.
در میزبانهای EBCDIC (مانند OS/390 Unix)، دستگاههای خروجی ascii و latin1 در دسترس نیستند. به طور متقابل، دستگاه خروجی cp1047 در سیستمهای مبتنی بر استانداردهای کدگذاری ISO 646 یا ISO 8859 موجود نمیباشد.
دایرکتوریهای نصب (INSTALLATION DIRECTORIES)
سامانه GNU roff بسته به پیکربندی زمان کامپایل، فایلها را در مسیرهای مختلفی ذخیره میکند. در این نصب، مسیرهای زیر مورد استفاده قرار گرفتهاند:
- /etc/X11/app-defaults
- دایرکتوری پیشفرضهای برنامه برای gxditview(1).
- /usr/bin
- دایرکتوری حاوی دستورات اجرایی groff.
- /usr/share/groff/1.23.0/eign
- فهرست واژههای متداول برای indxbib(1).
- /usr/share/groff/1.23.0
- دایرکتوری فایلهای داده و منابع سیستم.
- /usr/dict/papers/Ind
- نمایه پیشفرض برای ابزارهای lkbib(1) و refer(1).
- /usr/share/doc/groff-base
- دایرکتوری مستندات و راهنماها.
- /usr/share/doc/groff-base/examples
- دایرکتوری مثالها و نمونهها.
- /usr/share/groff/1.23.0/font
- دایرکتوری قلمها.
- /usr/share/doc/groff-base/html
- دایرکتوری مستندات به فرمت HTML.
- /usr/lib/font
- دایرکتوری قدیمی قلمها.
- /usr/share/groff/site-font
- دایرکتوری قلمهای محلی سیستم.
- /usr/share/groff/site-tmac
- دایرکتوری بستههای ماکروی محلی سیستم (فایلهای tmac).
- /usr/share/groff/1.23.0/tmac
- دایرکتوری رسمی بستههای ماکرو (فایلهای tmac).
- /usr/share/groff/1.23.0/oldfont
- دایرکتوری قلمها جهت سازگاری با نگارشهای قدیمیتر groff؛ به grops(1) مراجعه کنید.
- /usr/share/doc/groff-base/pdf
- دایرکتوری مستندات به فرمت PDF.
دایرکتوری ماکروهای groff
بیشتر فایلهای ماکروی ارائهشده با سامانه GNU roff در مسیر /usr/share/groff/1.23.0/tmac قرار دارند. به طور کلی چندین مسیر برای یافتن فایلهای ماکرو پیموده میشود؛ به troff(1) مراجعه فرمایید. جهت مشاهده فهرست بستههای ماکروی موجود به groff_tmac(5) مراجعه کنید.
دایرکتوری توصیف قلم و دستگاههای groff
فایلهای توصیف قلم و دستگاههای ارائهشده با سامانه GNU roff در مسیر /usr/share/groff/1.23.0/font ذخیره شدهاند. به طور کلی چندین مسیر برای یافتن مشخصات دستگاه و قلمها پیموده میشود؛ به troff(1) مراجعه کنید. برای درک ساختار و قالب این فایلها به groff_font(5) مراجعه نمایید.
دسترسی (AVAILABILITY)
پیوندهای دریافت انتشارها، مخزن سورسکد، فهرستهای رایانامهای گفتگو، سامانه پیگیری باگها و اطلاعات تکمیلی در صفحه رسمی groff در وبگاه پروژه گنو در دسترس است.
یک پیادهسازی آزاد از پیشپردازنده grap که توسط تد فیبر (Ted Faber) نوشته شده است، در پایگاه وب پیشپردازنده grap موجود میباشد. سامانه groff تنها از این نسخه grap پشتیبانی میکند.
نویسندگان (AUTHORS)
سامانه groff (شامل پیشخوان و کل سامانه حروفچینی) در اصل توسط جیمز کلارک (James Clark) طراحی و پیادهسازی شده است. مشارکتکنندگان در این سند شامل کلارک، ترنت ای. فیشر (Trent A. Fisher)، ورنر لمبرگ (Werner Lemberg)، برند وارکن (Bernd Warken) و جی. برندن رابینسون (G. Branden Robinson) هستند.
همچنین ببینید (SEE ALSO)
کتاب Groff: The GNU Implementation of troff نوشته ترنت ای. فیشر و ورنر لمبرگ، راهنمای جامع و مرجع اصلی groff است. میتوانید آن را به صورت تعاملی با دستور info groff مطالعه نمایید.
- مقدمه، تاریخچه و مطالعه بیشتر:
- roff(7)
- نمایشدهنده اسناد groff (و اسناد مستقل از دستگاه troff در AT&T):
- gxditview(1)
- پیشپردازندهها:
- chem(1)، eqn(1)، neqn(1)، glilypond(1)، grn(1)، preconv(1)، gperl(1)، pic(1)، gpinyin(1)، refer(1)، soelim(1)، tbl(1)
- بستههای ماکرو و ابزارهای مرتبط:
- groff_hdtbl(7)، groff_man(7)، groff_man_style(7)، groff_mdoc(7)، groff_me(7)، groff_mm(7)، groff_mmse(7) (تنها در محیطهای زبان سوئدی)، mmroff(1)، groff_mom(7)، pdfmom(1)، groff_ms(7)، groff_rfc1345(7)، groff_trace(7)، groff_www(7)
- ابزارهای مدیریت پایگاههای داده کتابشناسی:
- indxbib(1)، lkbib(1)، lookbib(1)
- زبان، قراردادها و افزودههای گنو:
- groff(7)، groff_char(7)، groff_diff(7)، groff_font(5)، groff_tmac(5)
- زبان خروجی میانی:
- groff_out(5)
- برنامه قالببند هسته:
- troff(1)
- پوستهها و اجراکنندههای قالببند:
- nroff(1)، pdfroff(1)
- پسپردازندهها برای دستگاههای خروجی:
- grodvi(1)، grohtml(1)، grolbp(1)، grolj4(1)، gropdf(1)، grops(1)، grotty(1)
- ابزارهای پشتیبانی از قلمها:
- addftinfo(1)، afmtodit(1)، hpftodit(1)، pfbtops(1)، tfmtodit(1)، xtotroff(1)
- ابزارهای تبدیل اشکال و نمودارها به تصویر گرافیکی:
- eqn2graph(1)، grap2graph(1)، pic2graph(1)
- ابزار نشانهگذاری تغییرات و تفاوتها:
- gdiffmk(1)
- ابزار حدس هوشمند گزینههای groff:
- grog(1)
| مه ۲۰۲۵ | groff |