.TH grog 1 "2026-03-15" "groff 1.24.1" .SH "نام (NAME)" grog \- حدس زدن دستور groff مورد نیاز برای پردازش یک سند . . .\" ==================================================================== .\" Legal Terms .\" ==================================================================== .\" .\" Copyright 1989-2014 Free Software Foundation, Inc. .\" 2021-2023 G. Branden Robinson .\" .\" This file is part of grog, which is part of groff, a free software .\" project. You can redistribute it and/or modify it under the terms .\" of the GNU General Public License version 2 (GPL2) as published by .\" the Free Software Foundation. .\" .\" groff is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY .\" or FITNESS FOR A PARTICULAR PURPOSE. .\" .\" The text for GPL2 is available in the internet at .\" . . . .\" ذخیره و غیرفعال‌سازی حالت سازگاری (برای مثال، Solaris 10/11). .do nr *groff_grog_1_man_C \n[.cp] .cp 0 . .\" تعریف ماکروی جایگزین برای MR در groff 1.23 در صورتی که سیستم فاقد آن باشد. .nr do-fallback 0 .if !\n(.f .nr do-fallback 1 \" mandoc .if \n(.g .if !d MR .nr do-fallback 1 \" older groff .if !\n(.g .nr do-fallback 1 \" non-groff *roff .if \n[do-fallback] \{\ . de MR . ie \\n(.$=1 \ . I \%\\$1 . el \ . IR \%\\$1 (\\$2)\\$3 . . .\} .rr do-fallback . . .\" ==================================================================== .SH "خلاصه دستور (SYNOPSIS)" .\" ==================================================================== . .SY grog .RI [ groff-option\~ .\|.\|.\&] .RB [ \-\- ] .RI [ file\~ .\|.\|.] .YS . . .P .SY grog .B \-h .YS . .SY grog .B \-\-help .YS . . .P .SY grog .B \-v .YS . .SY grog .B \%\-\-version .YS . . .\" ==================================================================== .SH "توضیحات (DESCRIPTION)" .\" ==================================================================== . دستور .I grog ورودی خود را می‌خواند و حدس می‌زند که کدام گزینه‌های .MR groff 1 برای رندر و پردازش آن مورد نیاز است. . اگر هیچ عملوندی داده نشود، یا اگر .I file برابر با .RB \[lq] \- \[rq] باشد، .I grog جریان ورودی استاندارد را می‌خواند. . دستور معادل .I groff به‌طور معمول در جریان خروجی استاندارد نوشته می‌شود. . . .\" ==================================================================== .SH "گزینه‌ها (OPTIONS)" .\" ==================================================================== . گزینه‌های .B \-h و .B \-\-help پیام راهنمای نحوه استفاده را نمایش می‌دهند، در حالی که گزینه‌های .B \-v و .B \%\-\-version اطلاعات نسخه را نمایش می‌دهند؛ پس از نمایش، برنامه خارج می‌شود. . . .P تمام گزینه‌های کوتاه دیگر که مشخص می‌شوند (یعنی آرگومان‌هایی که با علامت خط تیره .RB \[lq] \- \[rq] و به دنبال آن یک حرف شروع می‌شوند) به‌عنوان گزینه‌ها یا دسته‌گزینه‌های .I groff با یا بدون آرگومان گزینه تفسیر می‌شوند. . چنین گزینه‌هایی در خط فرمان ساخته‌شده برای .I groff گنجانده می‌شوند. . . .\" ==================================================================== .SH "جزئیات استنتاج (INFERENCE DETAILS)" .\" ==================================================================== . دستور .I grog هر عملوند .I file را می‌خواند و رشته‌هایی را که بر اساس احتمالات آماری از ویژگی‌های اسناد .MR roff 7 به شمار می‌روند، تطبیق الگو می‌دهد. . این برنامه تلاش می‌کند حدس بزند کدام‌یک از گزینه‌های .I groff زیر برای رندر و نمایش صحیح ورودی لازم هستند: .BR \-e ، .BR \-g ، .BR \-G ، .BR \-j ، .\" gideal هنوز پیاده‌سازی نشده است. .\" .BR \-J , .BR \-p ، .BR \-R ، .\".BR \-s , .B \-t (پیش‌پردازنده‌ها)؛ و .BR \-man ، .BR \-mdoc ، .BR \-mdoc\-old ، .BR \-me ، .BR \-mm ، .BR \-mom و .B \-ms (بسته‌های ماکرو). . دستور استنتاج‌شده .I groff شامل این گزینه‌ها و هرگونه پارامتر .I file در جریان خروجی استاندارد نوشته می‌شود. . . .P امکان تعیین گزینه‌های دلخواه .I groff در خط فرمان وجود دارد. . این گزینه‌ها بدون تغییر در دستور استنتاج‌شده گنجانده می‌شوند. . از جمله گزینه‌های .I groff می‌توان به .B \-C برای فعال‌سازی حالت سازگاری با .I troff شرکت AT&T و .B \-T برای انتخاب یک دستگاه خروجی غیرپیش‌فرض اشاره کرد. . اگر ورودی با کدگذاری ISO\~646:1991\~IRV (US-ASCII) یا ISO\~Latin-1 (8859-1) کدگذاری نشده باشد، توصیه می‌کنیم یکی از گزینه‌های .I groff را برای اجرای .MR preconv 1 مشخص کنید؛ به گزینه‌های .BR \-D ، .BR \-k و .B \-K در .MR groff 1 مراجعه کنید. . برای ورودی‌های UTF-8، گزینه .B \-k انتخاب مناسبی است. . . .P دستور .I groff ممکن است هنگام مشخص شدن یک گزینه نامناسب .BR \-m ، یا چندین گزینه متناقض، پیام‌های تشخیصی صادر کند. . بنابراین، بهتر است هیچ گزینه .B \-m به .I grog داده نشود مگر آنکه نتواند تمام آرگومان‌های .B \-m مورد نیاز یک سند را به‌درستی استنتاج کند. . یک سند .I roff می‌تواند بدون استفاده از هیچ بسته ماکرویی نیز نوشته شود. . در چنین مواردی، .I grog دستور .I groff را بدون گزینه .B \-m استنتاج می‌کند. . . .\" ==================================================================== .SS "محدودیت‌ها (LIMITATIONS)" .\" ==================================================================== . دستور .I grog فرض می‌کند که ورودی نویسه‌های گریز (escape)، کنترلی یا کنترلی بدون شکست (no-break) را تغییر نمی‌دهد. . همچنین .I grog ساختارهای ادامه‌دهنده خطوط ورودی یا ساختارهای کنترلی .I roff (توالی‌های گریز آکولاد و درخواست‌های .RB \[lq] if \[rq]، .RB \[lq] ie \[rq] و .RB \[lq] el \[rq]) و نیز درخواست .RB \[lq] while \[rq] در .IR groff را تجزیه نمی‌کند. . بنابراین، ورودی مانند . .RS .EX \&.if \[rs] t .NH 1 \&.if n .SH Introduction .EE .RE . استفاده از ماکروهای .B NH و .B SH در بسته .I ms را از دید .I grog پنهان می‌سازد. . توسعه‌دهندگان .I grog این ساختارها را آن‌قدر نامتداول در نظر گرفته‌اند که مشکلات استنتاجی چندانی ایجاد نمی‌کنند. . پیش‌پردازنده‌ها هنگام تطبیق فراخوانی‌های ماکرویی که محدوده‌های جایگزین‌شونده یک فایل ورودی را در بر می‌گیرند، می‌توانند حتی سخت‌گیرانه‌تر باشند. . به‌عنوان مثال، .IR pic نیاز دارد که فراخوانی‌های .BR PS ، .BR PE و .B PF دقیقاً بعد از نویسه کنترلی پیش‌فرض در ابتدای خط قرار گیرند. . . .P تشخیص گزینه .B \-s (پیش‌پردازنده .MR \%soelim 1 ) دشوار است؛ استنتاج صحیح ضرورت آن مستلزم آن است که .I grog تمام فایل‌های داده‌شده به‌عنوان آرگومان به درخواست .B .so را تحت همان شرایطی که خود .I \%soelim انجام می‌دهد، به‌صورت بازگشتی باز کند؛ به صفحه راهنمای آن مراجعه کنید. . به یاد داشته باشید که .I \%soelim تنها زمانی لازم است که فایل‌های فراخوانی‌شده (source شده) نیاز به پیش‌پردازش داشته باشند. . بنابراین، به‌عنوان یک راهکار، می‌توانید ورودی را به‌صورت دستی از طریق .I \%soelim اجرا کرده، خروجی آن را به .I grog لوله (pipe) کنید، و خروجی را با اجرای مستقیم .I grog روی ورودی مقایسه نمایید. . اگر ورودی پردازش‌شده با .I \%soelim باعث شود .I grog گزینه‌های پیش‌پردازنده بیشتری را استنتاج کند، آنگاه گزینه .B \-s احتمالاً ضروری است. . . .RS .P .EX $ \c .B printf \[dq].TS\[rs]nl.\[rs]nI\[aq]m a table.\[rs]n.TE\[rs]n\[dq] > \ 3.roff $ \c .B printf \[dq].so 3.roff\[rs]n\[dq] > 2.roff $ \c .B printf \[dq].XP\[rs]n.so 2.roff\[rs]n\[dq] > 1.roff $ \c .B grog 1.roff groff \-ms 1.roff $ \c .B \%soelim 1.roff | grog groff \-t \-ms \- .EE .RE . . .P در مثال بالا، می‌بینیم که این روش به .I grog امکان داد تا ماکروهای .MR \%tbl 1 را تشخیص دهد، بنابراین گزینه .B \-s را به همراه گزینه شناسایی‌شده .B \-t به یک دستور بازبینی‌شده .I grog یا .I groff اضافه می‌کنیم. . . .RS .P .EX $ \c .B grog \-st 1.roff groff \-st \-ms 1.roff .EE .RE . . .\" ==================================================================== .SH "وضعیت خروج (EXIT STATUS)" .\" ==================================================================== . دستور .I grog با .RB وضعیت\~ 1 خارج می‌شود اگر به نظر برسد یک بسته ماکرو در سند ورودی استفاده شده است اما .I grog نتواند تشخیص دهد کدام بسته است، یا با وضعیت .B 2 اگر در مدیریت یک گزینه یا عملوند مشکلی وجود داشته باشد. . در غیر این صورت، با وضعیت .BR 0 خارج می‌شود. . استنتاج نشدن هیچ پیش‌پردازنده یا بسته ماکرویی وضعیت خطا محسوب نمی‌شود؛ یک سند معتبر .I roff نیازی به استفاده از هیچ‌کدام ندارد. . حتی متن ساده نیز ورودی معتبری است، مشروط بر آنکه به نحو (سینتکس) نویسه‌های کنترلی و گریز توجه شود. . . .\" ==================================================================== .SH "مثال‌ها (EXAMPLES)" .\" ==================================================================== . اجرای دستور . .RS .EX .B grog /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1/meintro.me .EE .RE در خط فرمان نتیجه زیر را در پی دارد: .RS .EX groff \-me /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1/meintro.me .EE .RE . زیرا .I grog تشخیص می‌دهد که فایل .I meintro.me با استفاده از ماکروهای بسته .I me نوشته شده است. . از سوی دیگر، دستور . .RS .EX .B grog /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1/pic.ms .EE .RE . خروجی زیر را تولید می‌کند: . .RS .EX groff \-e \-p \-t \-ms /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1/pic.ms .EE .RE . علاوه بر تشخیص بسته ماکروی .IR ms ، دستور .I grog تشخیص می‌دهد که فایل .I pic.ms همچنین به ترکیبی از گزینه .B \-t برای .IR tbl ، گزینه .B \-e برای .IR eqn و گزینه .B \-p برای .IR pic نیاز دارد. . . .P فایل .IR \%doc/\:\%grnexampl.me را در نظر بگیرید که از پیش‌پردازنده .I \%grn برای درج یک فایل تصویری .MR gremlin 1 در یک سند .I me استفاده می‌کند. . فرض کنیم می‌خواهیم خروجی رنگی را غیرفعال کنیم، یک فایل DVI تولید کنیم، و در صورت بروز هرگونه خطا توسط .I \%troff ردیابی خطاها (backtraces) را دریافت نماییم. . دستور . .RS .EX .B grog \-bc \-Idoc \-Tdvi doc/grnexmpl.me .EE .RE . توسط .I grog به صورت زیر پردازش می‌شود: . .RS .EX groff \-bc \-Idoc \-Tdvi \-e \-g \-me doc/grnexmpl.me .EE .RE . که در آن می‌توانیم ببینیم .I grog بسته ماکروی .I me را همراه با پیش‌پردازنده‌های .I eqn و .I grn استنتاج کرده است. . (اگر مایلید این مثال را خودتان امتحان کنید، فایل ورودی در مسیر .I /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1 قرار دارد.) . . .\" ==================================================================== .SH "نویسندگان (AUTHORS)" .\" ==================================================================== . دستور .I grog در ابتدا توسط James Clark با پوسته بورن (Bourne shell) نوشته شد. . پیاده‌سازی فعلی در پرل توسط .MT groff\-bernd\:.warken\-72@\:web\:.de Bernd Warken .ME نوشته شده و توسط .MT g.branden\:.robinson@\:gmail\:.com G.\& Branden Robinson .ME به‌طور اساسی بازبینی شده است. . . .\" ==================================================================== .SH "همچنین ببینید (SEE ALSO)" .\" ==================================================================== . .MR groff 1 . . .\" بازیابی حالت سازگاری (برای مثال، Solaris 10/11). .cp \n[*groff_grog_1_man_C] .do rr *groff_grog_1_man_C . . .\" Local Variables: .\" fill-column: 72 .\" mode: nroff .\" End: .\" vim: set filetype=groff textwidth=72: