grn(1) General Commands Manual grn(1)

grn - پیشپردازنده groff برای تصاویر gremlin

grn [-C] [-T dev] [-M dir] [-F dir] [file ...]
grn -?
grn --help
grn -v
grn --version

دستور grn یک پیش‌پردازنده برای گنجاندن تصاویر gremlin در ورودی troff(1) است. دستور grn در خروجی استاندارد می‌نویسد، و تنها خطوط ورودی بین دو خطی را که با .GS و .GE آغاز می‌شوند پردازش می‌کند. این خطوط باید شامل دستورات grn باشند (به زیر مراجعه کنید). این ماکروها یک فایل gremlin را درخواست می‌کنند؛ تصویر موجود در آن فایل تبدیل شده و در جریان ورودی troff قرار می‌گیرد. ماکروی .GS می‌تواند با یک آرگومان C، L یا R فراخوانی شود تا کل تصویر gremlin را در مرکز، چپ‌چین، یا راست‌چین کند (حالت پیش‌فرض مرکزچین است). اگر هیچ فایلی ذکر نشود، ورودی استاندارد خوانده می‌شود. در انتهای تصویر، موقعیت روی صفحه در پایین تصویر gremlin قرار می‌گیرد. اگر ورودی grn به جای .GE با .GF پایان یابد، موقعیت در بالای تصویر رها می‌شود.

در حال حاضر تنها بسته ماکروی me از .GS، .GE و .GF پشتیبانی می‌کند.

دستور grn دنباله‌های گریز ترسیمی تولید می‌کند که از پسوند طرح رنگ groff (\D'F ...') استفاده می‌کنند، و بنابراین ممکن است با سایر نگارش‌های troff کار نکند.

هر خط ورودی بین .GS و .GE می‌تواند شامل یک دستور grn باشد. دستورات از یک یا دو رشته تشکیل شده‌اند که با فاصله از هم جدا می‌شوند؛ رشته اول دستور و رشته دوم عملوند آن است. دستورات می‌توانند با حروف کوچک یا بزرگ نوشته شوند و می‌توان آن‌ها را تا یک نویسه مخفف کرد.

دستوراتی که بر محیط یک تصویر اثر می‌گذارند (آن‌هایی که قبل از “default” فهرست شده‌اند، به زیر مراجعه کنید) تنها برای تصویر جاری مؤثر هستند: محیط در آغاز تصویر بعدی به مقادیر پیش‌فرض بازنشانی می‌شود. دستورات به شرح زیر هستند:

1 N
2 N
3 N
4 N
اندازه متن شماره ۱ (۲، ۳، یا ۴) در gremlin را به N نقطه تنظیم می‌کند. مقدار پیش‌فرض به ترتیب ۱۲ (۱۶، ۲۴ و ۳۶) است.
قلم معمولی/رومی (roman) (مورب/italics، توپر/bold، یا خاص/special) را به قلم f در troff (چه نام یا شماره) تنظیم می‌کند. مقدار پیش‌فرض به ترتیب R (I، B و S) است.
قلم ترام (stipple font) را به قلم ترام f در troff (نام یا شماره) تنظیم می‌کند. دستور stipple را می‌توان تا “st” مخفف کرد (برای جلوگیری از سردرگمی با “special”). هیچ مقدار پیش‌فرضی برای ترام‌ها وجود ندارد (مگر اینکه مقداری توسط دستور “default” تعیین شده باشد)، و گنجاندن یک تصویر gremlin با چندضلعی‌ها بدون تعیین قلم ترام نامعتبر است.
تصویر را (علاوه بر هرگونه بزرگ‌نمایی پیش‌فرض) به میزان N، یک عدد ممیز شناور بزرگ‌تر از صفر، بزرگ‌نمایی می‌کند. دستور scale را می‌توان تا “sc” مخفف کرد.
ضخامت خطوط باریک (به ترتیب متوسط و ضخیم) در gremlin را به اندازه N برابر 0.15pt تنظیم می‌کند (این مقدار در زمان کامپایل قابل تغییر است). مقادیر پیش‌فرض به ترتیب 1.0 (3.0 و 5.0) است، که معادل 0.15pt (به ترتیب 0.45pt و 0.75pt) می‌باشد. مقدار ضخامت صفر کمترین ضخامت خط ممکن را انتخاب می‌کند. مقادیر منفی باعث می‌شوند ضخامت خط متناسب با اندازه نقطه جاری باشد.
مقیاس‌بندی متن برای هماهنگی با تصویر. متن Gremlin معمولاً با اندازه نقطه مشخص‌شده توسط دستورات 1، 2، 3 یا 4 چاپ می‌شود، صرف‌نظر از هرگونه ضریب مقیاس در تصویر. تنظیم pointscale باعث می‌شود که اندازه‌های نقطه به همراه تصویر مقیاس‌بندی شوند (البته در محدوده محدودیت‌های troff). هر عملوندی به غیر از off مقیاس‌بندی متن را فعال می‌کند.
بازنشانی مقادیر پیش‌فرض محیط تصویر به تنظیمات تصویر جاری. این دستور به عنوان سازوکاری برای تنظیم سراسری پارامترها در ابتدای ورودی troff در نظر گرفته شده است، اما در هر زمان دیگری نیز برای بازنشانی تنظیمات پیش‌فرض قابل استفاده است.
اجبار تصویر به داشتن عرضی معادل N اینچ. این دستور هرگونه ضریب مقیاس موجود در همان تصویر را لغو می‌کند. مقدار “width 0” نادیده گرفته می‌شود.
اجبار تصویر به داشتن ارتفاعی معادل N اینچ، با لغو سایر ضرایب مقیاس. اگر هر دو دستور width و height مشخص شده باشند، محدودیت سخت‌گیرانه‌تر مقیاس تصویر را تعیین می‌کند. دستورات height و width توسط دستور “default” ذخیره نمی‌شوند. با این وجود، در صورت تنظیم بودن آن گزینه، بر مقیاس‌بندی اندازه نقطه اثر خواهند گذاشت.
دریافت تصویر از فایل gremlin با نام name واقع در دایرکتوری جاری (یا در دایرکتوری کتابخانه؛ گزینه -M در بالا را ببینید). اگر چندین دستور file داده شود، آخرین دستور ملاک خواهد بود. اگر name وجود نداشته باشد، پیام خطا گزارش شده و پردازش از خط .GE ادامه می‌یابد.

از آنجا که grn یک پیش‌پردازنده است، به عناصر وضعیت قالب‌بندی (formatter state)، از جمله دندانه‌گذاری، طول خط، اندازه قلم، یا مقادیر ثبات‌ها دسترسی ندارد. در نتیجه، هیچ ورودی troff نمی‌تواند بین ماکروهای .GS و .GE قرار گیرد. با این حال، عناصر متنی gremlin متعاقباً توسط troff پردازش می‌شوند، بنابراین هر چیزی که در یک خط ورودی troff معتبر باشد، در یک خط از متن gremlin نیز معتبر خواهد بود (به جز نویسه کنترلی نقطه “.” در ابتدای خط). بنابراین، می‌توان در یک شکل gremlin با گنجاندن عبارات eqn محصور در جداکننده‌های از پیش تعیین‌شده (مانند “$$”) در فایل gremlin، معادلات ریاضی ایجاد کرد.

هنگام استفاده از grn همراه با سایر پیش‌پردازنده‌ها، پیش‌پردازنده tbl(1) را پیش از grn، pic(1) و/یا ideal اجرا کنید. اگر به eqn(1) نیاز است، آن را به عنوان آخرین پیش‌پردازنده اجرا کنید. دستور groff(1) پیش‌پردازنده‌ها را به طور خودکار به ترتیب صحیح اجرا می‌کند.

یک تصویر یک موجودیت واحد در نظر گرفته می‌شود، اما این موضوع مانع از تلاش troff برای شکستن آن در صورت قرار گرفتن در انتهای یک صفحه نمی‌شود. قرار دادن تصویر بین نگه‌دارنده‌ها (“keeps”) در ماکروهای me جای‌گیری مناسب آن را تضمین می‌کند.

دستور grn از ثبات‌های g1 تا g9 در troff استفاده می‌کند و قبل از ورود به ماکروی .GS، ثبات‌های g1 و g2 را به ترتیب به عرض و ارتفاع شکل gremlin (بر حسب واحدهای دستگاه) تنظیم می‌کند (این مورد برای افرادی است که قصد بازنویسی این ماکروها را دارند).

دو قالب فایل متمایز برای gremlin وجود دارد: قالب اصلی برای پایانه‌های گرافیکی AED، و نسخه Sun یا X11. پسوندی که توسط نسخه Sun/X11 استفاده می‌شود و امکان استفاده از نقاط مرجع با مختصات منفی را فراهم می‌آورد، با نسخه AED سازگار نیست . تا زمانی که یک فایل gremlin حاوی مختصات منفی نباشد، هر دو قالب به درستی توسط هر دو نسخه gremlin یا grn خوانده می‌شوند. تفاوت دیگر در قالب Sun/X11، استفاده از نام‌ها برای اشیاء تصویری (مانند POLYGON، CURVE) به جای اعداد است. فایل‌هایی که تصویر یکسانی را نشان می‌دهند در زیر آورده شده‌اند:

sungremlinfile gremlinfile
0 240.00 128.00 0 240.00 128.00
CENTCENT 2
240.00 128.00 240.00 128.00
185.00 120.00 185.00 120.00
240.00 120.00 240.00 120.00
296.00 120.00 296.00 120.00
* -1.00 -1.00
2 3 2 3
10 A Triangle 10 A Triangle
POLYGON 6
224.00 416.00 224.00 416.00
96.00 160.00 96.00 160.00
384.00 160.00 384.00 160.00
* -1.00 -1.00
5 1 5 1
0 0
-1 -1
•
نخستین خط هر فایل gremlin شامل رشته “gremlinfile” (AED) یا “sungremlinfile” (Sun/X11) است.
•
دومین خط فایل شامل جهت‌گیری و مقادیر x و y برای یک نقطه موقعیت‌یابی است که با فاصله از یکدیگر جدا شده‌اند. جهت‌گیری، چه 0 یا 1، توسط نسخه Sun/X11 نادیده گرفته می‌شود. مقدار 0 به این معنی است که gremlin اشیاء را در قالب افقی نمایش می‌دهد (ناحیه ترسیمی که عرض آن بیشتر از ارتفاعش است، همراه با یک منو در بالا). مقدار 1 به این معنی است که gremlin اشیاء را در قالب عمودی نمایش می‌دهد (ناحیه ترسیمی که ارتفاع آن بیشتر از عرضش است، همراه با یک منو در سمت چپ). x و y مقادیر ممیز شناور هستند که نقطه موقعیت‌یابی را مشخص می‌کنند که هنگام خواندن این فایل در فایلی دیگر استفاده می‌شود. محتوای این خط واقعاً چندان اهمیتی ندارد؛ مقدار “1 0.00 0.00” پیشنهاد می‌شود.
•
بقیه فایل شامل صفر یا چند مشخصه عنصر است. پس از آخرین مشخصه عنصر، خطی قرار دارد که شامل رشته “-1” است.
•
خطوط طولانی‌تر از ۱۲۷ نویسه به همان طول بریده می‌شوند.

•
نخستین خط هر عنصر شامل یک عدد ده‌دهی است که نوع عنصر (AED) یا نام آن (Sun/X11) را مشخص می‌کند.
gremlin File Format: Object Type Specification
AED Number Sun/X11 Name Description
0 BOTLEFT text aligned to bottom left
1 BOTRIGHT text aligned to bottom right
2 CENTCENT center object
3 VECTOR vector
4 ARC arc
5 CURVE curve
6 POLYGON polygon
7 BSPLINE b-spline
8 BEZIER Bézier
10 TOPLEFT text aligned to top left
11 TOPCENT text aligned to top center
12 TOPRIGHT text aligned to top right
13 CENTLEFT text aligned to center left
14 CENTRIGHT text aligned to center right
15 BOTCENT text aligned to bottom center
•
هر خط پس از نوع شیء، نقطه‌ای را مشخص می‌کند که برای نمایش آن عنصر به کار می‌رود. این خط شامل یک مختصات x و یک مختصات y در قالب ممیز شناور است که با فاصله از هم جدا شده‌اند. فهرست نقاط با خطی پایان می‌یابد که شامل رشته “-1.0 -1.0” (در AED) یا یک علامت ستاره منفرد، “*” (در Sun/X11) است.
•
پس از نقاط، خطی شامل دو مقدار ده‌دهی می‌آید که قلم‌مو (brush) و اندازه (size) را برای عنصر مشخص می‌کند. قلم‌مو سبکی را که اشیاء با آن رسم می‌شوند تعیین می‌کند. برای بردارها، کمان‌ها و منحنی‌ها، شش مقدار معتبر قلم‌مو وجود دارد:
1 خطوط نازک نقطه‌چین
2 خطوط نازک خط-نقطه
3 خطوط ضخیم توپر
4 خطوط نازک خط‌چین
5 خطوط نازک توپر
6 خطوط متوسط توپر
برای چندضلعی‌ها، مقدار 0 نیز معتبر است: این مقدار یک حاشیه نامرئی را مشخص می‌کند. برای متن، قلم‌مو یک قلم را به صورت زیر انتخاب می‌کند:
1 رومی/عادی (قلم R در troff)
2 مورب (قلم I در troff)
3 توپر (قلم B در troff)
4 خاص (قلم S در troff)
اگر از grn برای عبور دادن تصاویر خود از طریق groff استفاده می‌کنید، این قلم صرفاً یک قلم آغازین است. رشته متنی می‌تواند شامل دنباله‌های قالب‌بندی مانند “\fI” یا “\d” باشد که ممکن است قلم را تغییر دهند (و همچنین کارهای متعدد دیگری انجام دهند). برای متن، فیلد اندازه یک مقدار ده‌دهی بین ۱ تا ۴ است. این فیلد اندازه قلمی را که متن با آن رسم خواهد شد تعیین می‌کند. برای چندضلعی‌ها، این فیلد اندازه به عنوان شماره ترام برای پر کردن چندضلعی تفسیر می‌شود. این شماره در زمان چاپ برای ارجاع به یک قلم ترام استفاده می‌شود.
•
آخرین خط هر عنصر شامل یک عدد ده‌دهی و یک رشته از نویسه‌هاست، که با یک فاصله از یکدیگر جدا شده‌اند. این عدد شمارنده تعداد نویسه‌ها در رشته است. این اطلاعات تنها برای عناصر متنی استفاده می‌شود، و حاوی رشته متنی است. می‌تواند فاصله‌هایی درون متن وجود داشته باشد. برای کمان‌ها، منحنی‌ها و بردارها، تعداد نویسه‌ها صفر (0) است که دقیقاً یک فاصله قبل از نویسه خط جدید به دنبال آن می‌آید.

نرم‌افزار gremlin برای پایانه‌های AED طراحی شده بود، و مختصات آن نمایانگر فضای مختصات AED است. برای تصاویر عمودی، مقادیر x از ۱۱۶ تا ۵۱۱، و مقادیر y از ۰ تا ۴۸۳ متغیر هستند. برای تصاویر افقی، مقادیر x از ۰ تا ۵۱۱، و مقادیر y از ۰ تا ۳۶۷ متغیر هستند. اگرچه لزومی ندارد دقیقاً به این محدوده پایبند باشید، اما اگر دست‌کم در همین حوالی بمانید نتایج بهتری دریافت خواهید کرد. همچنین، فهرست نقاط با نقطه‌ای به مختصات (-1, -1) خاتمه می‌یابد، بنابراین هرگز نباید از مختصات منفی استفاده کنید. نرم‌افزار gremlin مختصات را با استفاده از قالب “%f1.2” در printf(3) می‌نویسد؛ اگر می‌خواهید کد grn را تغییر دهید احتمالاً استفاده از همین قالب ایده خوبی خواهد بود.

هیچ محدودیتی در محدوده مختصات استفاده‌شده برای ایجاد اشیاء در نسخه Sun/X11 از gremlin وجود ندارد. با این حال، فایل‌های دارای مختصات منفی در صورت نمایش در پایانه AED مسلماً باعث بروز مشکل خواهند شد.

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

تشخیص .GS و .GE (و .GF) حتی زمانی که نویسه‌ای غیر از فاصله یا خط جدید بلافاصله پس از آن‌ها بیاید.
جستجوی dir برای زیرشاخه‌های devname (name نام درایور خروجی است) جهت یافتن پرونده DESC پیش از دایرکتوری‌های پیش‌فرض قلم /usr/share/groff/site-font، /usr/share/groff/1.24.1/font و /usr/lib/font.
افزودن dir به ابتدای مسیر جستجوی فایل‌های gremlin. مسیر جستجوی پیش‌فرض به ترتیب دایرکتوری جاری، دایرکتوری خانگی (home)، /usr/share/groff/site-tmac و /usr/share/groff/1.24.1/tmac است.
آماده‌سازی خروجی دستگاه با استفاده از درایور خروجی dev. مقدار پیش‌فرض ps است. برای فهرستی از دستگاه‌های معتبر به groff(1) مراجعه کنید.

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

/usr/share/groff/1.24.1/font/devname/DESC
دستگاه خروجی name را توصیف می‌کند.

David Slattengren و Barry Roitblat نگارش اصلی برکلی grn را نوشتند. Daniel Senderowicz و Werner Lemberg آن را برای groff تغییر دادند.

gremlin(1), groff(1), pic(1), ideal(1)

2026-03-15 groff 1.24.1