MANDOC(1) General Commands Manual MANDOC(1)

mandoc — قالب‌بندی صفحه‌های راهنما

mandoc [-ac] [-I os=name] [-K encoding] [-mdoc | -man] [-O options] [-T output] [-W level] [file ...]

ابزار mandoc صفحه‌های راهنما را برای نمایش قالب‌بندی می‌کند.

به‌طور پیش‌فرض، mandoc متن‌های mdoc(7) یا man(7) را از ورودی استاندارد (stdin) خوانده و خروجی -T locale تولید می‌کند.

گزینه‌ها به شرح زیر هستند:

اگر خروجی استاندارد یک ترمینال باشد و -c مشخص نشده باشد، مانند man(1) از less(1) برای صفحه‌بندی خروجی استفاده می‌کند.
صفحه‌های راهنمای قالب‌بندی‌شده را بدون استفاده از less(1) برای صفحه‌بندی آن‌ها، در خروجی استاندارد رونوشت می‌کند. این رفتار پیش‌فرض است. می‌توان آن را برای لغو اثر -a مشخص کرد.
os=name
نام پیش‌فرض سیستم‌عامل (name) را برای ماکروی Os در mdoc(7) و ماکروی TH در man(7) بازنویسی می‌کند.
encoding
کدگذاری ورودی را مشخص می‌کند. آرگومان‌های encoding پشتیبانی‌شده عبارتند از us-ascii ، iso-8859-1 و utf-8. در صورت مشخص نشدن، تشخیص خودکار از نخستین مورد منطبق در فهرست زیر استفاده می‌کند:
  1. اگر سه بایت اول فایل ورودی، نشان ترتیب بایت (BOM، 0xefbbbf) مربوط به UTF-8 باشد، ورودی به عنوان utf-8 تفسیر می‌شود.
  2. اگر خط اول یا دوم فایل ورودی با قالب خط حالت مطابقت داشته باشد:
    .\" -*- [...;] coding: encoding; -*-

    آنگاه ورودی مطابق با encoding تفسیر می‌شود.

  3. اگر نخستین بایت غیر ASCII در فایل، آغازگر یک توالی معتبر UTF-8 باشد، ورودی به عنوان utf-8 تفسیر می‌شود.
  4. در غیر این صورت، ورودی به عنوان iso-8859-1 تفسیر می‌شود.
|
با گزینهٔ -mdoc -، تمام فایل‌های ورودی به عنوان mdoc(7) تفسیر می‌شوند. با -man -، تمام فایل‌های ورودی به عنوان man(7) تفسیر می‌شوند. به‌طور پیش‌فرض، زبان ورودی به‌صورت خودکار برای هر فایل تشخیص داده می‌شود: اگر اولین ماکرو Dd یا Dt باشد، تجزیه‌کنندهٔ mdoc(7) به کار می‌رود؛ در غیر این صورت، تجزیه‌کنندهٔ man(7) استفاده می‌شود. همراه با سایر آرگومان‌ها، -m بدون هیچ پیامی نادیده گرفته می‌شود.
options
گزینه‌های خروجی جدا شده با کاما. برای مشاهدهٔ options پشتیبانی‌شده، به توضیحات قالب‌های خروجی اختصاصی مراجعه کنید.
output
قالب خروجی را انتخاب می‌کند. مقدارهای پشتیبانی‌شده برای آرگومان output عبارتند از ascii ، html ، مقدار پیش‌فرض locale ، man ، markdown ، pdf ، ps ، tree و utf8.

حالت ویژهٔ -T lint فقط ورودی را تجزیه کرده و هیچ خروجی تولید نمی‌کند. این حالت به منزلهٔ -W all است و پیام‌های تجزیه‌کننده را که معمولاً در خروجی خطای استاندارد ظاهر می‌شوند، به خروجی استاندارد هدایت می‌کند.

level
حداقل سطح پیام (level) را برای گزارش در خروجی خطای استاندارد و تأثیرگذاری بر وضعیت خروج تعیین می‌کند. سطح level می‌تواند base ، style ، warning ، error یا unsupp باشد. سطح base سیستم‌عامل را به‌طور خودکار از محتوای ماکروی Os ، از گزینهٔ خط فرمان -Ios -، یا از مقدار بازگشتی uname(3) استخراج می‌کند. سطوح openbsd و netbsd گونه‌هایی از base هستند که تشخیص خودکار را کنار گذاشته و اعتبارسنجی قراردادهای سیستم پایه را برای یک سیستم‌عامل خاص درخواست می‌کنند. سطح all نام مستعاری برای base است. به‌طور پیش‌فرض، mandoc پیامی نمایش نمی‌دهد. برای جزئیات به وضعیت خروج (EXIT STATUS) و خطاها (DIAGNOSTICS) مراجعه کنید.

گزینهٔ ویژهٔ -W stop به mandoc دستور می‌دهد پس از تجزیهٔ فایلی که هشدارهایی یا خطاهایی حداقل در سطح درخواستی ایجاد می‌کند، خارج شود. هیچ خروجی قالب‌بندی‌شده‌ای از آن فایل تولید نخواهد شد. اگر هم یک level و هم stop درخواست شوند، می‌توان آن‌ها را با کاما به هم متصل کرد؛ به عنوان مثال -W error,stop.

file
از فایل ورودی داده‌شده می‌خواند. اگر چندین فایل مشخص شده باشند، به ترتیب داده‌شده پردازش می‌شوند. در صورت مشخص نشدن، mandoc از ورودی استاندارد می‌خواند.

گزینه‌های -fhklw نیز پشتیبانی می‌شوند و در man(1) مستند شده‌اند. در حالت‌های -f و -k -، ابزار mandoc همچنین از گزینه‌های -CMmOSs که در راهنمای apropos(1) توضیح داده شده‌اند پشتیبانی می‌کند. گزینه‌های -fkl مانعة‌الجمع هستند و یکدیگر را لغو می‌کنند.

از -T ascii برای اجبار به خروجی متن با کدگذاری نویسه‌های ۷-بیتی ASCII مستندشده در صفحهٔ راهنمای ascii(7) ، صرف‌نظر از locale(1) تنظیم‌شده در محیط استفاده کنید.

سبک قلم‌ها با استفاده از نویسه‌های پس‌بر (back-spaced) اعمال می‌شود، به‌طوری که نویسهٔ زیرخط‌دار ‘c’ به‌صورت ‘_\[bs]c’ نمایش داده می‌شود، که در آن ‘\[bs]’ نویسهٔ پس‌بر با شماره ۸ است. نویسه‌های پررنگ به‌صورت ‘c\[bs]c’ نمایش داده می‌شوند. این نشانه‌گذاری معمولاً توسط صفحه‌بند یا ul(1) به دنباله‌های ترمینال مناسب تبدیل می‌شود. برای حذف نشانه‌گذاری، خروجی را به col(1) -b هدایت کنید.

نویسه‌های ویژه‌ای که در mandoc_char(7) مستند شده‌اند، با بهترین تقریب ممکن به معادل ASCII نمایش داده می‌شوند. به‌ویژه، گیومه‌های تکی باز و بسته (‘single quotes’) به ترتیب با نویسه‌های شماره 0x60 و 0x27 نمایش داده می‌شوند که با تمام استانداردهای ASCII از ۱۹۶۵ تا آخرین بازنگری (۲۰۱۲) مطابقت دارد و با روش سنتی قالب‌بندهای roff(7) در نمایش گیومه‌های تکی در خروجی ASCII همخوانی دارد. این نمایش صحیح ASCII ممکن است با قلم‌های مدرن سازگار با یونیکد عجیب به نظر برسد؛ زیرا برخلاف ASCII، یونیکد از نقطهٔ کد U+0060 فقط برای اکسان گراو استفاده می‌کند و هرگز برای گیومهٔ باز به‌کار نمی‌رود.

آرگومان‌های -O زیر پذیرفته می‌شوند:

=indent
حاشیهٔ چپ برای متن عادی به‌جای پنج فاصلهٔ پیش‌فرض در mdoc(7) و هفت فاصله در man(7) ، روی indent نویسهٔ خالی تنظیم می‌شود. افزایش این مقدار توصیه نمی‌شود؛ ممکن است منجر به افت کیفیت قالب‌بندی شود، برای نمونه سرریز خطوط یا شکستگی‌های نامناسب در خط. هنگامی که خروجی به صفحه‌بندی در یک ترمینال با پهنای کمتر از ۶۶ ستون هدایت می‌شود، مقدار پیش‌فرض به سه ستون کاهش می‌یابد.
فایل‌های ورودی man(7) را به سبک خروجی mdoc(7) قالب‌بندی می‌کند. این کار نام سیستم‌عامل را به‌جای عنوان صفحه در سمت راست خط پاورقی چاپ می‌کند، و متضمن -O indent=5 است. یک کاربرد مفید آن بررسی این است که آیا خروجی -T man مشابه منبع mdoc(7) که از آن تولید شده قالب‌بندی می‌شود یا خیر.
[=term]
اگر صفحهٔ راهنمای قالب‌بندی‌شده در یک صفحه‌بند باز شود، به‌جای نمایش صفحهٔ راهنما از ابتدا، به تعریف term پرش می‌کند. اگر هیچ term مشخص نشده باشد، از اولین آرگومان خط فرمان که شمارهٔ section نیست مجدداً استفاده می‌شود. اگر آن آرگومان در قالب key=val مربوط به apropos(1) باشد، به‌جای کل آرگومان فقط val استفاده می‌شود. این ویژگی برای دستورهایی مانند ‘man -akO tag Ic=ulimit’ برای جستجوی یک کلیدواژه و پرش مستقیم به تعریف آن در صفحات راهنمای منطبق مفید است.
=width
پهنای خروجی به‌جای مقدار پیش‌فرض ۷۸ روی width تنظیم می‌شود. هنگامی که خروجی به صفحه‌بندی در ترمینالی با پهنای کمتر از ۷۹ ستون ارسال می‌شود، مقدار پیش‌فرض به یکی کمتر از پهنای ترمینال کاهش می‌یابد. در هر حال، خطوطی که در حالت پیش‌فرض (literal) خارج می‌شوند هرگز شکسته نمی‌شوند و ممکن است از پهنای خروجی فراتر روند.

خروجی تولیدشده توسط -T html با استفاده از تگ‌های خودبسته اختیاری با HTML5 مطابقت دارد. سبک‌های پیش‌فرض فقط از CSS1 استفاده می‌کنند. معادلاتی که از بلوک‌های eqn(7) تولید می‌شوند از MathML استفاده می‌کنند.

فایل /usr/share/misc/mandoc.css کلاس‌های شیوه‌نامه موجود برای سفارشی‌سازی خروجی را مستند می‌کند. اگر شیوه‌نامه‌ای با -O style مشخص نشود، -T html به‌طور پیش‌فرض خروجی ساده‌ای (از طریق یک شیوه‌نامهٔ تعبیه‌شده) تولید می‌کند که در هر مرورگر وب گرافیکی یا متنی قابل خواندن است.

نویسه‌های غیر ASCII به‌صورت ارجاعات نویسهٔ شانزده‌شانزدهی یونیکد نمایش داده می‌شوند.

آرگومان‌های -O زیر پذیرفته می‌شوند:

اعلامیهٔ <!DOCTYPE> و عنصرهای <html>، <head> و <body> را حذف کرده و فقط زیردرخت درون عنصر <body> را تولید می‌کند. آرگومان style نادیده گرفته خواهد شد. این ویژگی هنگام گنجاندن محتوای راهنما در اسناد موجود مفید است.
=fmt
رشتهٔ fmt ، برای مثال ../src/%I.html ، به عنوان الگویی برای فایل‌های سرایند پیوند داده‌شده (معمولاً از طریق ماکروی In) استفاده می‌شود. نمونه‌های ‘%I’ با نام فایل include جایگزین می‌شوند. حالت پیش‌فرض، عدم ارائهٔ پیوند است.
=fmt[;fmt]
رشتهٔ fmt ، برای مثال ../html%S/%N.%S.html ، به عنوان الگویی برای راهنماهای پیوند داده‌شده (معمولاً از طریق ماکروی Xr) استفاده می‌شود. نمونه‌های ‘%N’ و ‘%S’ به ترتیب با نام و بخش راهنمای پیوند داده‌شده جایگزین می‌شوند. اگر بخشی گنجانده نشده باشد، بخش ۱ فرض می‌شود. حالت پیش‌فرض عدم ارائهٔ پیوند است. اگر دو الگو ارائه شود و فایل %N.%S در دایرکتوری جاری موجود باشد، الگوی اول استفاده می‌شود؛ در غیر این صورت، الگوی دوم به کار می‌رود.
=style.css
فایل style.css برای شیوه‌نامهٔ خارجی استفاده می‌شود. این باید یک URI معتبر مطلق یا نسبی باشد.
[=term]
نحو و معناشناسی مشابه با خروجی ASCII. این مورد با ارسال یک URI با طرح file:// که به یک شناسهٔ بخش ختم می‌شود به صفحه‌بند پیاده‌سازی شده است، نه ارسال صرفاً یک نام فایل. هنگام استفاده از این آرگومان، از صفحه‌بندی استفاده کنید که از چنین URIهایی پشتیبانی می‌کند، به عنوان مثال:
MANPAGER='lynx -force_html' man -T html -O tag=MANPAGER man
MANPAGER='w3m -T text/html' man -T html -O tag=toc mandoc

در نتیجه، برای خروجی HTML، این آرگومان با more(1) یا less(1) کار نمی‌کند. برای نمونه، ‘MANPAGER=less man -T html -O tag=toc mandoc’ کار نمی‌کند زیرا less(1) از URIهای file:// پشتیبانی نمی‌کند.

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

به‌طور پیش‌فرض، mandoc به‌صورت خودکار خروجی UTF-8 یا ASCII را بر اساس locale(1) جاری انتخاب می‌کند. اگر هر یک از متغیرهای محیطی LC_ALL ، LC_CTYPE یا LANG تنظیم شده باشند و اولین متغیری که تنظیم شده، کدگذاری نویسهٔ UTF-8 را انتخاب کند، خروجی UTF-8 تولید می‌شود؛ در غیر این صورت، به خروجی ASCII بازمی‌گردد. این حالت خروجی را می‌توان صراحتاً با -T locale نیز انتخاب کرد.

از -T man برای ترجمهٔ ورودی mdoc(7) به قالب خروجی man(7) استفاده کنید. این برای توزیع منابع صفحات راهنما به سیستم‌های قدیمی که فاقد قالب‌بندهای mdoc(7) هستند مفید است. کدهای تعبیه‌شدهٔ eqn(7) و tbl(7) پشتیبانی نمی‌شوند.

اگر قالب ورودی یک فایل man(7) باشد، ورودی در خروجی رونوشت می‌شود. تجزیه‌کننده نیز اجرا می‌شود، و مثل همیشه، سطح -W مشخص می‌کند که کدام خطاها (DIAGNOSTICS) پیش از رونوشت ورودی به خروجی نمایش داده شوند.

از -T markdown برای ترجمهٔ ورودی mdoc(7) به قالب markdown مطابق با مشخصات سال ۲۰۰۴ جان گروبر استفاده کنید. خروجی همچنین تقریباً با مشخصات CommonMark مطابقت دارد.

مجموعه نویسه‌های مورد استفاده برای خروجی markdown برابر با ASCII است. نویسه‌های غیر ASCII به‌صورت موجودیت‌های HTML کدگذاری می‌شوند. از آنجا که این کار در زمینه‌های قلم لفظی (literal) ممکن نیست، زیرا آن‌ها به‌صورت کد درون‌خطی و بلوک‌های کد در خروجی markdown نمایش داده می‌شوند، نویسه‌های غیر ASCII در این زمینه‌ها به تقریب‌های ASCII نویسه‌گردانی می‌شوند.

مارک‌داون یک زبان نشانه‌گذاری بسیار ضعیف است، بنابراین تمام نشانه‌گذاری‌های معنایی از بین می‌روند و حتی بخشی از نشانه‌گذاری‌های نمایشی نیز ممکن است از دست بروند. از این گزینه به عنوان یک مرحلهٔ میانی برای تبدیل به HTML استفاده نکنید؛ به‌جای آن، مستقیماً از -T html استفاده کنید.

زبان‌های ورودی man(7) ، tbl(7) و eqn(7) توسط حالت خروجی -T markdown پشتیبانی نمی‌شوند.

خروجی PDF-1.1 را می‌توان با -T pdf تولید کرد. برای آرگومان‌های -O و پیش‌فرض‌ها، به خروجی PostScript مراجعه کنید.

صفحات PostScript "Adobe-3.0" سطح ۲ را می‌توان با -T ps تولید کرد. صفحات خروجی به‌طور پیش‌فرض در اندازهٔ letter هستند و با خانوادهٔ قلم Times با اندازهٔ ۱۱ پوینت رندر می‌شوند. حاشیه‌ها به‌صورت ۱/۹ طول و عرض صفحه محاسبه می‌شوند. ارتفاع خط 1.4m است.

نویسه‌های ویژه مانند خروجی ASCII نمایش داده می‌شوند.

آرگومان‌های -O زیر پذیرفته می‌شوند:

=name
نام اندازهٔ کاغذ (name) می‌تواند یکی از موارد a3 ، a4 ، a5 ، legal یا letter باشد. همچنین می‌توانید ابعاد را به‌صورت دستی به شکل NNxNN ، عرض در ارتفاع بر حسب میلی‌متر مشخص کنید. در صورت مواجهه با یک مقدار ناشناخته، از letter استفاده می‌شود.

از -T utf8 برای اجبار به خروجی متنی با کدگذاری نویسهٔ چندبایتی UTF-8، صرف‌نظر از تنظیمات locale(1) در محیط، استفاده کنید. برای اطلاعات مربوط به سبک قلم‌ها و آرگومان‌های -O به خروجی ASCII مراجعه کنید.

در سیستم‌های عاملی که فاقد پشتیبانی از locale یا نویسه‌های پهن هستند، و سیستم‌هایی که در آن‌ها نمایش داخلی نویسه‌ها UCS-4 نیست، mandoc همواره به خروجی ASCII بازمی‌گردد.

از -T tree برای نمایش یک بازنمایی قابل خواندن برای انسان از درخت نحو استفاده کنید. این گزینه برای اشکال‌زدایی کد منبع صفحات راهنما مفید است. قالب دقیق ممکن است تغییر کند، بنابراین برای آن تجزیه‌کننده ننویسید.

پاراگراف اول داده‌های فرادادهٔ یافت‌شده در پیش‌درآمد mdoc(7) ، خط TH در man(7) ، یا مقادیر جایگزین استفاده‌شده را نمایش می‌دهد.

در تخلیهٔ درخت (tree dump)، هر خط خروجی یک گره درخت نحو را نشان می‌دهد. گره‌های فرزند نسبت به گره والد خود دارای تورفتگی هستند. ستون‌ها عبارتند از:

  1. برای گره‌های ماکرو، نام ماکرو؛ برای گره‌های متنی و tbl(7) ، محتوا. قالب ویژه‌ای برای گره‌های eqn(7) وجود دارد.
  2. نوع گره (text، elem، block، head، body، body-end، tail، tbl، eqn).
  3. پرچم‌ها:
    • یک پرانتز باز اگر گره یک جداکنندهٔ بازکننده باشد.
    • یک ستاره اگر گره خط ورودی جدیدی را آغاز کند.
    • شمارهٔ خط ورودی (شروع از یک).
    • یک دو نقطه.
    • شمارهٔ ستون ورودی (شروع از یک).
    • یک پرانتز بسته اگر گره یک جداکنندهٔ پایان‌بخش باشد.
    • یک نقطه اگر گره به یک جمله پایان دهد.
    • عبارت BROKEN اگر گره، بلوکی باشد که توسط بلوک دیگری شکسته شده است.
    • عبارت NOSRC اگر گره در فایل ورودی نباشد، بلکه به‌طور خودکار از ماکروها تولید شده باشد.
    • عبارت NOPRT اگر قرار نباشد گره برای هیچ قالب خروجی‌ای، خروجی تولید کند.

آرگومان -O زیر پذیرفته می‌شود:

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

کدگذاری نویسهٔ locale(1). هنگامی که خروجی Locale انتخاب شده باشد، تصمیم می‌گیرد که از قالب خروجی ASCII استفاده شود یا UTF-8. این متغیر هرگز بر تفسیر فایل‌های ورودی تأثیری ندارد.
هر مقدار غیرخالی متغیر محیطی MANPAGER به‌جای برنامهٔ استاندارد صفحه‌بندی، یعنی less(1) استفاده می‌شود؛ برای جزئیات به man(1) مراجعه کنید. تنها در صورتی استفاده می‌شود که -a یا -l مشخص شده باشد.
برنامهٔ صفحه‌بندی را در زمانی که MANPAGER تعریف نشده باشد مشخص می‌کند. اگر نه PAGER و نه MANPAGER تعریف نشده باشند، از less(1) استفاده می‌شود. تنها در صورتی استفاده می‌شود که -a یا -l مشخص شده باشد.

ابزار mandoc با یکی از مقادیر زیر خارج می‌شود که توسط سطح پیام (level) مرتبط با گزینهٔ -W کنترل می‌شود:

0
هیچ نقض قراردادی در سیستم پایه، پیشنهادهای نگارشی، هشدار یا خطایی رخ نداده است، یا موارد رخ‌داده نادیده گرفته شدند زیرا پایین‌تر از level درخواستی بودند.
1
حداقل یک مورد نقض قرارداد سیستم پایه یا پیشنهاد نگارشی رخ داده است، اما بدون هشدار یا خطا، و -W base یا -W style مشخص شده بود.
2
حداقل یک هشدار رخ داده است، اما خطایی رخ نداده، و -W warning یا یک level پایین‌تر درخواست شده بود.
3
حداقل یک خطای تجزیه رخ داده است، اما با هیچ ویژگی پشتیبانی‌نشده‌ای مواجه نشد، و -W error یا یک level پایین‌تر درخواست شده بود.
4
حداقل با یک ویژگی پشتیبانی‌نشده مواجه شد، و -W unsupp یا یک level پایین‌تر درخواست شده بود.
5
آرگومان‌های نامعتبر خط فرمان مشخص شده‌اند. هیچ فایل ورودی خوانده نشده است.
6
یک خطای سیستم‌عامل رخ داده است، به عنوان مثال اتمام حافظه، توصیف‌گرهای فایل یا مدخل‌های جدول فرآیندها. چنین خطاهایی ممکن است باعث خروج فوری mandoc شوند، احتمالاً در میانهٔ تجزیه یا قالب‌بندی یک فایل.

توجه داشته باشید که انتخاب حالت خروجی -T lint متضمن -W all است.

برای صفحه‌بندی صفحات راهنما در ترمینال:

$ mandoc -l mandoc.1 man.1 apropos.1 makewhatis.8

برای تولید صفحات راهنمای HTML با /usr/share/misc/mandoc.css به عنوان شیوه‌نامه:

$ mandoc -T html -O style=/usr/share/misc/mandoc.css mdoc.7 > mdoc.7.html

برای بررسی یک مجموعهٔ بزرگ از صفحات راهنما:

$ mandoc -T lint `find /usr/src -name \*\.[1-9]`

برای تولید یک سری از صفحات راهنمای PostScript برای کاغذ A4:

$ mandoc -T ps -O paper=a4 mdoc.7 man.7 > manuals.ps

تبدیل یک راهنمای مدرن mdoc(7) به قالب قدیمی‌تر man(7) ، جهت استفاده در سیستم‌هایی که فاقد تجزیه‌کنندهٔ mdoc(7) هستند:

$ mandoc -T man foo.mdoc > foo.man

پیام‌های نمایش‌داده‌شده توسط mandoc از این قالب پیروی می‌کنند:

mandoc: file:line:column: level: message: macro arguments (os)

سه بخش اول، نام file ، شمارهٔ line و شمارهٔ column فایل ورودی را که پیام در آن فعال شده است مشخص می‌کنند. شماره‌های خط و ستون از ۱ شروع می‌شوند. هر دو برای پیام‌هایی که به یک فایل ورودی به‌طور کلی اشاره دارند حذف می‌شوند. همهٔ رشته‌های level و message در ادامه توضیح داده شده‌اند. نام macro ایجادکنندهٔ پیام و arguments آن در جایی که بی‌معنی باشند حذف می‌شوند. مشخص‌کنندهٔ سیستم‌عامل (os) برای پیام‌هایی که مربوط به همهٔ سیستم‌های عامل هستند حذف می‌شود. پیام‌های مهلک دربارهٔ آرگومان‌های نامعتبر خط فرمان یا خطاهای سیستم‌عامل، برای نمونه زمانی که حافظه تمام شده است، ممکن است بخش‌های file و level را نیز حذف کنند.

سطوح پیام دارای معانی زیر هستند:

یک خطای سیستم‌عامل رخ داده است. الزاماً مشکلی در فایل‌های ورودی وجود ندارد. با این وجود ممکن است خروجی ناقص یا از دست رفته باشد.
آرگومان‌های نامعتبر خط فرمان مشخص شده‌اند. هیچ فایل ورودی خوانده نشده و خروجی تولید نمی‌شود.
یک فایل ورودی از ویژگی‌های سطح پایین و پشتیبانی‌نشدهٔ roff(7) استفاده می‌کند. خروجی ممکن است ناقص و/یا بدقالب‌بندی‌شده باشد، بنابراین استفاده از GNU troff به‌جای mandoc برای پردازش فایل ترجیح داده می‌شود.
نشان‌دهندهٔ خطر از دست رفتن اطلاعات یا قالب‌بندی به شدت ناقص است که در بیشتر موارد به دلیل خطاهای نحوی جدی ایجاد می‌شود.
نشان‌دهندهٔ این احتمال است که اطلاعات نمایش‌داده‌شده یا قالب‌بندی آن ممکن است به شکل جزئی با قصد نویسنده مغایرت داشته باشد. علاوه بر این، خطاهای نحوی حداقل به عنوان هشدار دسته‌بندی می‌شوند، حتی اگر معمولاً باعث خرابی قالب‌بندی نشوند.
یک فایل ورودی از سبک مشکوک یا نامناسب استفاده می‌کند. این یک ایراد نحوی نیست، و احتمالاً نه قالب‌بندی و نه قابلیت انتقال به خطر نمی‌افتند. در حالی که دقت زیادی به خرج داده می‌شود تا در سطوح پیام بالاتر از موارد مثبت کاذب جلوگیری شود، سطح style تلاش می‌کند احتمال نادیده ماندن مسائل را کاهش دهد، بنابراین ممکن است گاهی پیشنهادهای نادرست ارائه دهد. لطفاً از قضاوت درست خود برای تصمیم‌گیری در مورد اینکه آیا یک پیشنهاد خاص style واقعاً تغییر در فایل ورودی را توجیه می‌کند یا خیر، استفاده کنید.
قراردادی که در سیستم پایهٔ یک سیستم‌عامل خاص استفاده می‌شود، رعایت نشده است. این‌ها اشتباهات نشانه‌گذاری نیستند، و نه کیفیت قالب‌بندی و نه قابلیت حمل در خطر نیستند. پیام‌های سطح base با برچسب شهودی‌ترِ سطحِ style چاپ می‌شوند.

پیام‌های سطوح base ، style ، warning ، error و unsupp پنهان هستند مگر اینکه سطح آن‌ها، یا سطحی پایین‌تر، با استفاده از گزینهٔ -W یا حالت خروجی -T lint درخواست شده باشد.

همان‌طور که در ادامه اشاره شده است، تمام بررسی‌های base و برخی از بررسی‌های style تنها در صورتی انجام می‌شوند که یک نام سیستم‌عامل خاص در آرگومان‌های گزینهٔ خط فرمان -W -، ماکروی Os ، گزینهٔ خط فرمان -Ios یا در صورت عدم وجود هیچ‌یک، در مقدار بازگشتی تابع uname(3) وجود داشته باشد.

(mdoc, NetBSD) ماکروی Dd از جایگزینی کلیدواژهٔ CVS Mdocdate استفاده می‌کند که توسط سیستم پایهٔ NetBSD پشتیبانی نمی‌شود. در عوض استفاده از قالب مرسوم “Month dd, yyyy” را در نظر بگیرید.
(mdoc, OpenBSD) ماکروی Dd از جایگزینی کلیدواژهٔ CVS Mdocdate استفاده نمی‌کند، اما استفاده از آن در سیستم پایهٔ OpenBSD به‌طور سنتی مورد انتظار است.
(mdoc, OpenBSD, NetBSD) آرگومان سوم ماکروی Dt با هیچ‌یک از معماری‌هایی که این سیستم‌عامل روی آن‌ها اجرا می‌شود مطابقت ندارد.
(mdoc, OpenBSD, NetBSD) ماکروی Os دارای آرگومان است. در سیستم پایه، این ماکرو طبق سنت خالی رها می‌شود.
(OpenBSD, NetBSD) صفحهٔ راهنما فاقد خط توضیحی با شناسهٔ RCS تولیدشده توسط جایگزینی کلیدواژهٔ CVS OpenBSD یا NetBSD است که طبق سنت در این سیستم‌های عامل استفاده می‌شود.

(mdoc) ماکروی Dd از قالب تاریخ قدیمی man(7) به شکل “yyyy-dd-mm” استفاده می‌کند. در عوض استفاده از قالب تاریخ مرسوم mdoc(7) به شکل “Month dd, yyyy” را در نظر بگیرید.
: ...
(mdoc, man) ماکروی Dd یا TH یک نام اختصاری ماه یا شمارهٔ روز با صفر اولیه ارائه می‌دهد. در خروجی قالب‌بندی‌شده، نام ماه به‌طور کامل نوشته شده و صفر اولیه حذف می‌شود.
(mdoc, man) عنوان همچنان همان‌طور که در ماکروی Dt یا TH داده شده استفاده می‌شود.
یک صفحهٔ راهنما شامل دو رونوشت از شناسهٔ RCS برای یک سیستم‌عامل است. حذف نمونهٔ بعدی و انتقال اولین مورد به بالای صفحه را در نظر بگیرید.
(mdoc) تطبیق فازی رشته نشان داد که آرگومان یک ماکروی Sh مشابه، اما نه کاملاً یکسان با نام یک بخش استاندارد است.
(roff) آرگومان‌های ماکرو را می‌توان در نویسه‌های نقل‌قول دوگانه محصور کرد تا نیازی به گریز دادن نویسه‌های فاصله و نام‌های ماکرو در آرگومان نباشد. گیومهٔ پایانی آخرین آرگومان یک ماکرو را می‌توان حذف کرد. با این حال، حذف آن توصیه نمی‌شود زیرا خوانایی کد را دشوارتر می‌کند.
(mdoc) یک ماکروی Bt ، Tn یا Ud یافت شد. به‌سادگی آن را حذف کنید؛ هیچ کاربرد مفیدی ندارد.
(mdoc) رشته‌ای در متن ساده یا در یک ماکروی Bx یافت شد که می‌تواند با استفاده از Ox ، Nx ، Fx یا Dx نمایش داده شود.
(mdoc, NetBSD) موارد Er در فهرست Bl ترتیب الفبایی ندارند.
(mdoc, NetBSD) یک فهرست Bl شامل دو مدخل متوالی It است که یک شمارهٔ Er یکسان را توصیف می‌کنند.
(mdoc) یک ماکروی Xr به صفحهٔ راهنمایی ارجاع می‌دهد که پیدا نشد. هنگام اجرا با -W base ، جستجو به سیستم پایه محدود می‌شود، به‌طور پیش‌فرض به /usr/share/man:/usr/X11R6/man. این مسیر را می‌توان در زمان کامپایل با استفاده از ماکروی پیش‌پردازندهٔ MANPATH_BASE پیکربندی کرد. هنگام اجرا با -W style ، جستجو در امتداد کل مسیر جستجو طبق توضیحات صفحهٔ راهنمای man(1) انجام می‌شود، با رعایت گزینه‌های خط فرمان -m و -M -، متغیر محیطی MANPATH و فایل man.conf(5) و بازگشت به مسیر پیش‌فرض /usr/share/man:/usr/X11R6/man:/usr/local/man ، که در زمان کامپایل با استفاده از ماکروی پیش‌پردازندهٔ MANPATH_DEFAULT نیز قابل پیکربندی است.
(mdoc) آخرین آرگومان یک ماکروی Ex ، Fo ، Nd ، Nm ، Os ، Sh ، Ss ، St یا Sx به یک جداکنندهٔ پایانی ختم می‌شود. این معمولاً نگارش بدی است و اغلب نشان‌دهندهٔ غلط املایی است. به احتمال زیاد می‌توان جداکننده را حذف کرد.
(mdoc) آخرین آرگومان ماکرویی که از آرگومان‌های جداکنندهٔ پایانی پشتیبانی می‌کند، طولانی‌تر از یک بایت است و به یک جداکنندهٔ پایانی ختم می‌شود. درج یک فاصله را در نظر بگیرید تا جداکننده به یک آرگومان جداگانه تبدیل شود، و بدین ترتیب از دامنهٔ ماکرو خارج شود.
(man) درخواست fi رخ داده در حالی که سند هنوز در حالت پر کردن است، یا پیش‌تر به حالت پر کردن بازگشته است. این هیچ اثری ندارد.
(man) درخواست nf رخ داده در حالی که سند پیش‌تر به حالت بدون پر کردن تغییر کرده و هنوز به حالت پر کردن بازنگشته است. این هیچ اثری ندارد.
شکستن خط متن ورودی را در یکی از نویسه‌های فاصله قبل از ستون ۸۰ در نظر بگیرید.
(mdoc) اگرچه دستگاه خروجی ASCII خط تیرهٔ پیوسته (em-dash) را به‌صورت "--" نمایش می‌دهد، اما این روش مناسبی برای نوشتن آن در فایل ورودی نیست زیرا در تمام دستگاه‌های خروجی دیگر ظاهر نامناسبی پیدا می‌کند.
(mdoc) کلمه‌ای که به دنبال آن یک جفت پرانتز خالی قرار دارد در یک خط متن دیده شده است. استفاده از ماکروی Fn یا Xr را در نظر بگیرید.
(mdoc, man, roff) فاصله‌های خالی در پایان خطوط ورودی تقریباً هرگز اهمیت معنایی ندارند — اما در موارد نادری که اهمیت داشته باشند، هنگام بازبینی و نگهداری اسناد بسیار گیج‌کننده خواهند بود.
(roff) خطوط توضیحات با یک نقطه، یک ممیز وارونه و یک نویسهٔ نقل‌قول دوگانه شروع می‌شوند. ابزار mandoc خط را حتی بدون ممیز وارونه به عنوان خط توضیحات در نظر می‌گیرد، اما حذف ممیز وارونه ممکن است با سایر ابزارها سازگار نباشد.

(mdoc) یک ماکروی Dt هیچ آرگومانی ندارد، یا هیچ ماکروی Dt پیش از اولین ماکروی غیر مقدماتی وجود ندارد.
(man) هیچ ماکروی TH وجود ندارد، یا آرگومانی ندارد.
(mdoc, man) یک ماکروی Dt یا TH فاقد آرگومان اجباری بخش است.
(mdoc) شمارهٔ بخش در یک خط Dt نامعتبر است، اما همچنان استفاده می‌شود.
(mdoc, man) نام فایل ورودیِ در حال پردازش مشخص است و پسوند نام فایل آن با یک رقم غیر صفر شروع می‌شود، اما ماکروی Dt یا TH شامل آرگومان section است که با رقم غیر صفر متفاوتی شروع می‌شود. آرگومان section به همان صورتی که داده شده استفاده می‌شود. بررسی اینکه آیا نام فایل یا آرگومان نیاز به اصلاح دارند را در نظر بگیرید.
(mdoc, man) سند به عنوان mdoc(7) تجزیه شده و فاقد ماکروی Dd است، یا ماکروی Dd هیچ آرگومانی ندارد یا فقط آرگومان‌های خالی دارد؛ یا سند به عنوان man(7) تجزیه شده و فاقد ماکروی TH است، یا ماکروی TH کمتر از سه آرگومان دارد یا آرگومان سوم آن خالی است.
(mdoc, man) تاریخ ارائه‌شده در ماکروی Dd یا TH از قالب مرسوم پیروی نمی‌کند.
(mdoc, man) تاریخ داده‌شده در ماکروی Dd یا TH بیش از یک روز جلوتر از زمان فعلی سیستم time(3) است.
(mdoc) سیستم پیش‌فرض یا فعلی در این مورد نشان داده نمی‌شود.
(mdoc) یک ماکروی Dd یا Os پس از ماکرویی غیر از ماکروهای مقدمه رخ می‌دهد، اما همچنان اعمال می‌شود.
(mdoc) ماکروهای مقدمه با ترتیب سنتی Dd ، Dt ، Os ارائه نشده‌اند. هر سه ماکرو حتی زمانی که با ترتیب متفاوتی ارائه شوند اعمال می‌گردند.

(roff) گنجاندن فایل‌ها تنها زمانی کار می‌کند که برنامهٔ تجزیه‌کننده با دایرکتوری کاری جاریِ صحیح اجرا شود.
(mdoc, man) بدنهٔ سند شامل هیچ متن یا ماکرویی نیست. یک سند خالی متشکل از تنها یک خط سرایند و یک خط پاورقی نمایش داده می‌شود.
(mdoc, man) برخی ماکروها یا متن‌ها پیش از اولین سرآیند بخش Sh یا SH قرار گرفته‌اند. ماکروها و متن‌های خطاکار تجزیه شده و در بالاترین سطح درخت نحو، خارج از هر بلوک بخشی اضافه می‌شوند.
(mdoc) آرگومان اولین ماکروی Sh برابر با ‘NAME’ نیست. این ممکن است makewhatis(8) و apropos(1) را دچار سردرگمی کند.
(mdoc) بخش NAME شامل هیچ ماکروی فرزند Nm پیش از اولین ماکروی Nd نیست.
(mdoc) بخش NAME فاقد ماکروی اجباری فرزند Nd است.
(mdoc) بخش NAME شامل یک ماکروی فرزند Nd است، اما محتوای دیگری پس از آن آمده است.
(mdoc) بخش NAME شامل متن ساده یا ماکروهایی به غیر از Nm و Nd است.
(mdoc) بخش NAME شامل یک ماکروی Nm است که نه اولین مورد است و نه کاما پیش از آن آمده است.
(mdoc) ماکروی Nd فاقد آرگومان لازم است. خط عنوان صفحهٔ راهنما پس از خط تیره به پایان می‌رسد.
(mdoc) یک ماکروی Nd خارج از بخش NAME ظاهر شده است. آرگومان‌ها به هر حال چاپ می‌شوند و متن بعدی برای apropos(1) استفاده می‌شود، اما هیچ‌یک از این رفتارها قابل انتقال نیستند.
(mdoc) یک بخش استاندارد بعد از بخش دیگری که معمولاً پیش از آن قرار می‌گیرد، واقع شده است. همهٔ عناوین بخش‌ها همان‌طور که داده شده‌اند استفاده می‌شوند، و ترتیب بخش‌ها تغییر نمی‌کند.
(mdoc) یک عنوان بخش استاندارد بیش از یک بار ظاهر شده است.
(mdoc) یک سرآیند بخش استاندارد در بخشی از راهنما ظاهر شده که معمولاً در آنجا کاربردی ندارد.
(mdoc) یک ماکروی Xr به نام و بخشی اشاره دارد که با بخش صفحهٔ راهنمای فعلی و نام ذکرشده در ماکروی Nm در بخش NAME یا SYNOPSIS، یا در ماکروی Fn یا Fo در SYNOPSIS مطابقت دارد. استفاده از Nm یا Fn به‌جای Xr را در نظر بگیرید.
(mdoc) در بخش SEE ALSO، یک ماکروی Xr با شمارهٔ بخش پایین‌تر پس از ماکرویی با شمارهٔ بالاتر آمده است، یا دو ماکروی Xr که به یک بخش اشاره دارند ترتیب الفبایی ندارند.
(mdoc) در بخش SEE ALSO، نشانه‌گذاری بین دو ماکروی Xr چیزی به جز یک کامای تنها است، یا بعد از آخرین ماکروی Xr نشانه‌گذاری اضافی وجود دارد.
(mdoc) یک بخش AUTHORS فاقد ماکروهای An ، یا شامل ماکروهای خالی است. احتمالاً نام‌های نویسندگانی وجود دارد که فاقد نشانه‌گذاری هستند.

(mdoc) برای جایگزین‌ها به راهنمای mdoc(7) مراجعه کنید.
(mdoc) نام ماکرویی که قابل فراخوانی نیست در یک خط ماکرو ظاهر شده است. به‌صورت کلمه‌به‌کلمه چاپ می‌شود. اگر هدف فراخوانی آن است، آن را به خط ورودی خودش منتقل کنید؛ در غیر این صورت با قرار دادن ‘\&’ در ابتدای آن، آن را بگریزانید.
در اسناد mdoc(7) ، این وضعیت در این موارد رخ می‌دهد:
  • در ابتدا و انتهای بخش‌ها و زیربخش‌ها
  • دقیقاً پیش از فهرست‌ها و نماهای غیر فشرده
  • در انتهای موارد در فهرست‌های غیر ستونی و غیر فشرده
  • و برای چندین ماکروی پاراگراف متوالی.
در اسناد man(7) ، این وضعیت در این موارد رخ می‌دهد:
  • برای ماکروهای خالیِ P ، PP و LP
  • برای ماکروهای IP که نه آرگومان سرآیند دارند و نه بدنه
  • برای br یا sp دقیقاً پس از SH یا SS
(mdoc) یک مورد در یک فهرست Bl شامل یک ماکروی پاراگراف پایانی است. ماکروی پاراگراف به بعد از انتهای فهرست منتقل می‌شود.
(mdoc) یک خط ورودی با یک ماکروی Ns شروع می‌شود، یا آرگومان بعدی بعد از ماکروی Ns یک جداکنندهٔ پایانی تنها است. ماکرو نادیده گرفته می‌شود.
(mdoc) اگر دو بلوک با یکدیگر همپوشانی دارند، یکی باید کاملاً دیگری را در بر بگیرد. در غیر این صورت، خروجی تولیدشده در هر قالب خروجی احتمالاً عجیب به نظر خواهد رسید، و رندر در قالب‌های خروجی مبتنی بر SGML احتمالاً کاملاً نادرست خواهد بود زیرا چنین زبان‌هایی به هیچ وجه از بلوک‌های بد تو در تو پشتیبانی نمی‌کنند. نمونه‌های معمول از بلوک‌های بد تو در تو عبارتند از "Ao Bo Ac Bc" و "Ao Bq Ac". در این مثال‌ها، Ac به ترتیب باعث شکستن Bo و Bq می‌شود.
(mdoc) یک نمای Bd ، D1 یا Dl به‌صورت تو در تو درون نمای Bd دیگری قرار گرفته است. این کار در mandoc کار می‌کند، اما در اکثر پیاده‌سازی‌های دیگر با شکست مواجه می‌شود.
(mdoc) یک بلوک فهرست Bl پیش از اولین ماکروی It شامل متن یا ماکرو است. فرزندان خطاکار به پیش از آغاز فهرست منتقل می‌شوند.
درون یک فهرست Bl -column -، ماکروی Ta به عنوان اولین ماکرو در یک خط ظاهر شده است که رفتاری غیر قابل حمل است.
(man) هنگام تجزیهٔ دامنهٔ خط بعدی ماکروی قبلی، ماکروی دیگری پیدا می‌شود که ماکروی قبلی را پیش از موعد خاتمه می‌دهد. ماکروی قطع‌شدهٔ قبلی از درخت تجزیه حذف می‌شود.

(roff, eqn) نام ماکرو از درخواست تعریف ماکرو جا افتاده است، یا یک عبارت کنترلی یا کلیدواژهٔ عملیاتی در eqn(7) فاقد آرگومان لازم است.
(roff) یک درخواست شرطی تنها زمانی مفید است که یکی از موارد زیر در همان خط ورودی منطقی به دنبال آن بیاید:
  • کلیدواژهٔ ‘\{’ برای باز کردن یک دامنهٔ چندخطی.
  • یک درخواست یا ماکرو یا مقداری متن، که منجر به یک دامنهٔ تک‌خطی می‌شود.
  • پایان فوری خط منطقی بدون هرگونه فاصلهٔ خالی، که منجر به دامنهٔ خط بعدی می‌شود.
در اینجا، یک درخواست شرطی فقط با فاصله‌های انتهایی همراه شده است و محتوای دیگری در خط ورودی منطقی آن وجود ندارد. توجه داشته باشید که فرقی نمی‌کند خط ورودی منطقی با نویسهٔ ادامهٔ خط ‘\’ به چندین خط ورودی فیزیکی تقسیم شده باشد یا خیر. این یکی از موارد نادری است که در آن فاصلهٔ خالی انتهایی از نظر نحوی اهمیت دارد. درخواست شرطی دامنه‌ای را کنترل می‌کند که تنها شامل فاصله‌های خالی است، بنابراین بعید است که تأثیر قابل توجهی داشته باشد، مگر اینکه یک بندِ بعدیِ el را کنترل کند.
(mdoc) ماکروی مشخص‌شده هیچ آرگومانی ندارد و بنابراین اثری نخواهد داشت.
(mdoc, man) یک بلوک Bd ، Bk ، Bl ، D1 ، Dl ، MT ، RS یا UR در بدنهٔ خود شامل هیچ چیزی نیست و خروجی تولید نخواهد کرد.
(mdoc) پهنای مورد نیاز بعد از -offset یا -width در Bd یا Bl جا افتاده است.
(mdoc) ماکروی Bd بدون نوع نمای مورد نیاز فراخوانی شده است.
(mdoc) در یک ماکروی Bl ، حداقل یک آرگومان دیگر قبل از آرگومان نوع آمده است. ابزار mandoc با هر ترتیبی از آرگومان‌ها کار می‌کند، اما برخی از پیاده‌سازی‌های دیگر mdoc(7) چنین قابلیتی ندارند.
(mdoc) هر ماکروی Bl که آرگومان -tag دارد، به -width نیز نیاز دارد.
(mdoc) ماکروی Ex -std بدون آرگومان فراخوانی شده در حالی که پیش از آن Nm با یک آرگومان فراخوانی نشده است.
(mdoc) ماکروی Fo بدون آرگومان فراخوانی شده است. هیچ نام تابعی چاپ نمی‌شود.
(mdoc) در یک فهرست -diag -، -hang -، -inset -، -ohang یا -tag از نوع Bl ، یک ماکروی It فاقد آرگومان لازم است. سرآیند مورد خالی گذاشته می‌شود.
(mdoc) در یک فهرست -bullet -، -dash -، -enum یا -hyphen از نوع Bl ، یک بلوک It خالی است. یک مورد فهرست خالی نشان داده می‌شود.
(mdoc) یک ماکروی It در یک فهرست Bd -column هیچ آرگومانی ندارد. در حالی که mandoc از متن یا ماکروهای خط بعدی (در صورت وجود) برای سلول استفاده می‌کند، قالب‌بندهای دیگر ممکن است فهرست را نادرست قالب‌بندی کنند.
(mdoc) یک ماکروی Bf هیچ آرگومانی ندارد. به قلم پیش‌فرض تغییر وضعیت می‌دهد.
(mdoc) آرگومان Bf نامعتبر است. به‌جای آن از قلم پیش‌فرض استفاده می‌شود.
(mdoc) یک ماکروی Pf بدون آرگومان است، یا فقط یک آرگومان دارد و هیچ ماکرویی در همان خط ورودی به دنبال آن نمی‌آید. این کار هدف آن را خنثی می‌کند؛ به‌ویژه، ایجاد فاصله قبل از متن یا ماکروهای موجود در خط ورودی بعدی سرکوب نمی‌شود.
(mdoc) یک ماکروی Rs بلافاصله با یک ماکروی Re در خط ورودی بعدی دنبال شده است. چنین بلوک خالی هیچ خروجی تولید نمی‌کند.
(mdoc) یک ماکروی Xr فاقد آرگومان دوم خود، یعنی شمارهٔ بخش است. آرگومان اول، یعنی نام، چاپ می‌شود اما بدون پرانتزهای متعاقب آن.
(mdoc) یک ماکروی Ex یا Rv فاقد آرگومان الزامی -std است. ابزار mandoc حتی زمانی که مشخص نشده باشد، -std را فرض می‌کند، اما ممکن است پیاده‌سازی‌های دیگر چنین نکنند.
(man) ماکروی OP بدون هیچ آرگومانی فراخوانی شده است. یک جفت قلاب خالی نمایش داده می‌شود.
(man) ماکروی MT یا UR بدون هیچ آرگومانی فراخوانی شده است. یک جفت علامت کوچکتر/بزرگترِ خالی نمایش داده می‌شود.
(eqn) یک علامت زیروبم یا یک عملگر دوتایی پیدا شده است، اما چیزی در سمت چپ آن وجود ندارد. یک جعبهٔ خالی درج می‌شود.

(mdoc) یک ماکروی Bd یا Bl دارای بیش از یک آرگومان -compact -، بیش از یک -offset یا بیش از یک -width است. تمام نمونه‌های این آرگومان‌ها به جز آخرین مورد نادیده گرفته می‌شوند.
(mdoc) یک ماکروی An دارای بیش از یک آرگومان -split یا -nosplit است. تمام موارد این آرگومان‌ها به جز اولین مورد نادیده گرفته می‌شوند.
(mdoc) یک ماکروی Bd بیش از یک آرگومان نوع دارد؛ اولین مورد استفاده می‌شود.
(mdoc) یک ماکروی Bl بیش از یک آرگومان نوع دارد؛ اولین مورد استفاده می‌شود.
(mdoc) یک فهرست -column -، -diag -، -ohang -، -inset یا -item از نوع Bl دارای آرگومان -width است. این هیچ اثری ندارد.
در یک خط از یک فهرست Bl -column -، تعداد نویسه‌های تب یا ماکروهای Ta کمتر از تعداد مورد انتظار از خط سرآیند فهرست است یا بیش از یک واحد از تعداد مورد انتظار فراتر رفته است. سلول‌های ناموجود خالی می‌مانند، و تمام سلول‌های فراتر از تعداد ستون‌ها در یک تک سلول ترکیب می‌شوند.
(mdoc) یک ماکروی At آرگومان نامعتبر دارد. به‌صورت کلمه‌به‌کلمه با پیشوند "AT&T UNIX " استفاده می‌شود.
(mdoc) یک آرگومان از ماکروی Fa یا Fn شامل یک کاما است؛ احتمالاً باید به دو آرگومان تقسیم شود.
(mdoc) اولین آرگومان یک ماکروی Fc یا Fn شامل پرانتز باز یا بسته است؛ احتمالاً این اشتباه است زیرا پرانتزها به‌طور خودکار اضافه می‌شوند.
(mdoc, not on OpenBSD) یک ماکروی Lb دارای آرگومان نام ناشناخته است و به‌صورت "library “name”" نمایش داده می‌شود.
(mdoc) یک بلوک Rs شامل متن ساده یا ماکروهای غیر % است. محتوای نامعتبر در درخت نحو باقی می‌ماند. قالب‌بندی ممکن است ناقص باشد.
(mdoc) یک ماکروی Sm آرگومانی به غیر از on یا off دارد. آرگومان نامعتبر از ماکرو خارج می‌شود که باعث می‌شود ماکرو خالی مانده و حالت فاصله‌گذاری را تغییر دهد.
(roff) آرگومان دوم یک درخواست char شامل بیش از یک توالی گریز قلم است. قلم اشتباه ممکن است پس از استفاده از نویسه فعال بماند.
(man, tbl) یک درخواست ft در roff(7) یا یک اصلاح‌کنندهٔ طرح‌بندی f در tbl(7) دارای آرگومان font ناشناخته است.
(roff) یک درخواست tr شامل تعداد فردی از نویسه‌ها است. آخرین نویسه به نویسهٔ فاصله نگاشت می‌شود.

(mdoc) معنای خطوط ورودی خالی تنها در حالت بدون پر کردن به‌خوبی تعریف شده است: در حالت پر کردن، شکستگی خطوطِ متن ورودی نباید معنایی داشته باشد. با این حال، برای سازگاری با groff، خطوط خالی در حالت پر کردن مانند درخواست‌های sp قالب‌بندی می‌شوند. برای ایجاد شکستگی پاراگراف، به‌جای خط خالی از Pp استفاده کنید.
(mdoc, man) معنای نویسه‌های تب تنها در حالت بدون پر کردن به‌خوبی تعریف شده است: در حالت پر کردن، فاصله‌ها نباید در خطوط ورودی متن معنایی داشته باشند. به عنوان یک انتخاب وابسته به پیاده‌سازی، نویسه‌های تب در خطوط متنی در هر صورت به قالب‌بندها منتقل می‌شوند. با توجه به اینکه متنِ قبل از نویسهٔ تب پر خواهد شد، پیش‌بینی اینکه تب به کدام موقعیت پرشِ تب پیشروی خواهد کرد دشوار است.
(mdoc) یک جملهٔ جدید در میانهٔ یک خط متنی شروع می‌شود. آن را در یک خط ورودی جدید شروع کنید تا به قالب‌بندها کمک کند فاصلهٔ مناسبی ایجاد کنند.
(roff) یک توالی گریز دارای جداکنندهٔ آغازین نامعتبر برای آرگومان است، فاقد جداکنندهٔ پایانی آرگومان است، آرگومان قالب نامعتبر دارد، یا یک توالی گریز نویسه با نام نامعتبر است. اگر آرگومان ناقص باشد، \* و \n به یک رشتهٔ خالی منبسط می‌شوند، \B به رقم ‘0’ و \w به طول آرگومان ناقص بسط می‌یابد. همهٔ توالی‌های گریز نامعتبر دیگر نادیده گرفته می‌شوند.
(roff) در یک توالی گریز، اولین نویسه دقیقاً پس از ممیز وارونهٔ ابتدایی نامعتبر است. آن نویسه به‌صورت لفظی چاپ می‌شود که معادل نادیده گرفتن ممیز وارونه است.
(roff) اگر رشته‌ای بدون تعریف قبلی استفاده شود، مقدار آن به‌طور ضمنی روی رشتهٔ خالی تنظیم می‌شود. با این حال، تعریف صریح رشته‌ها قبل از استفاده، کد را خواناتر نگه می‌دارد.

(tbl) اولین سلول در یک خط طرح‌بندی جدول یک گسترش افقی است (‘s’). داده‌های ارائه‌شده برای این سلول نادیده گرفته شده و چیزی در سلول چاپ نمی‌شود.
(tbl) اولین خط از مشخصات طرح‌بندی جدول یک گسترش عمودی را درخواست می‌کند (‘^’). داده‌های ارائه‌شده برای این سلول نادیده گرفته شده و چیزی در سلول چاپ نمی‌شود.
(tbl) مشخصات طرح‌بندی جدول شامل بیش از دو خط عمودی متوالی است. یک خط عمودی دوگانه چاپ می‌شود و خطوط اضافی دور ریخته می‌شوند.

(tbl) خط گزینه‌های جدول حاوی نویسه‌ای به غیر از حرف، فاصله یا کاما در جایی است که انتظار می‌رود نام گزینه شروع شود. نویسه نادیده گرفته می‌شود.
(tbl) خط گزینه‌های جدول شامل رشته‌ای از حروف است که با هیچ نام گزینهٔ شناخته‌شده‌ای مطابقت ندارد. کلمه نادیده گرفته می‌شود.
(tbl) یک گزینهٔ جدول که نیاز به آرگومان دارد با پرانتز باز دنبال نشده است، یا پرانتز باز بلافاصله با پرانتز بسته دنبال شده است. گزینه نادیده گرفته می‌شود.
(tbl) آرگومان گزینهٔ جدول شامل تعداد نویسه‌های نامعتبر است. هم گزینه و هم آرگومان نادیده گرفته می‌شوند.
(tbl) مشخصات طرح‌بندی جدول کاملاً خالی است و صفر خط و صفر ستون را مشخص می‌کند. به عنوان پیش‌فرض جایگزین، یک تک ستون تراز چپ استفاده می‌شود.
(tbl) مشخصات طرح‌بندی جدول شامل نویسه‌ای است که نه می‌تواند به عنوان کلید طرح‌بندی و نه به عنوان اصلاح‌کنندهٔ طرح‌بندی تفسیر شود، یا یک اصلاح‌کننده قبل از اولین کلید آمده است. نویسهٔ نامعتبر دور ریخته می‌شود.
(tbl) مشخصات طرح‌بندی جدول شامل پرانتز باز است، اما پرانتز بستهٔ منطبق ندارد. بقیهٔ خط ورودی، شروع از پرانتز، اثری ندارد.
(tbl) یک اصلاح‌کنندهٔ فاصله‌گذاری در طرح‌بندی جدول به‌طور نامعقولی بزرگ است. به‌جای آن از فاصله‌گذاری پیش‌فرض 3n استفاده می‌شود.
(tbl) یک جدول شامل هیچ سلول داده‌ای نیست. احتمالاً خروجی تولید نخواهد کرد.
(tbl) یک سلول جدول به عنوان گسترش افقی (‘s’) یا گسترش عمودی (‘^’) در طرح‌بندی جدول علامت‌گذاری شده است، اما حاوی داده است. داده نادیده گرفته می‌شود.
(tbl) یک خط داده شامل سلول‌های بیشتری نسبت به خط طرح‌بندی متناظر است. داده‌های موجود در سلول‌های اضافی نادیده گرفته می‌شوند.
(tbl) یک بلوک داده با T{ باز شده، اما هرگز با T} منطبق بسته نشده است. خطوط دادهٔ باقی‌مانده از جدول همگی در یک سلول قرار می‌گیرند و هر سلول باقی‌مانده خالی می‌ماند.

(mdoc) یکی از ماکروهای مقدمه بیش از یک بار رخ داده است. آخرین مورد، همهٔ موارد قبلی را بازنویسی می‌کند.
(mdoc) ماکروی Dt بعد از اولین ماکروی غیر مقدماتی ظاهر شده است. قالب‌بندهای سنتی نمی‌توانند این مورد را مدیریت کنند زیرا سرآیند صفحه را قبل از تجزیهٔ بدنهٔ سند می‌نویسند. اگرچه این محدودیت فنی در مورد mandoc صدق نمی‌کند، معناشناسی سنتی حفظ می‌شود. ماکروی دیرهنگام به همراه آرگومان‌هایش دور ریخته می‌شود.
(roff) محدودیت‌های صریح بازگشتی برای قابلیت‌های زیر پیاده‌سازی شده‌اند تا از حلقه‌های نامتناهی جلوگیری شود:
  • بسط توالی‌های گریز تو در تو از جمله بسط رشته‌ها و ثبات‌های عددی،
  • بسط ماکروهای تعریف‌شده توسط کاربر تو در تو،
  • و گنجاندن فایل با so.
هنگامی که به این محدودیت برخورد می‌شود، خروجی نادرست خواهد بود و معمولاً بخشی از محتوا از دست می‌رود، اما تجزیه‌کننده می‌تواند ادامه دهد.
(mdoc, man, roff) فایل ورودی شامل بایتی است که نویسهٔ قابل چاپ ascii(7) نیست. پیام به شمارهٔ نویسه اشاره می‌کند. بایت خطاکار با یک علامت سوال (‘?’) جایگزین می‌شود. ویرایش فایل ورودی برای جایگزینی بایت با برگردان ASCII نویسهٔ مورد نظر را در نظر بگیرید.
(mdoc, man, roff) اولین شناسه در خط درخواست یا ماکرو نه به عنوان درخواست roff(7) ، نه به عنوان ماکروی تعریف‌شده توسط کاربر، و نه به عنوان ماکروی mdoc(7) یا man(7) شناخته نشده است. ممکن است اشتباه تایپ شده باشد یا پشتیبانی نشود. درخواست یا ماکرو به همراه آرگومان‌هایش دور ریخته می‌شود.
(roff) یک درخواست shift یا return خارج از هرگونه تعریف ماکرو رخ داده است و اثری ندارد.
(roff) یک فایل ورودی تلاش کرده دستوری در شل اجرا کند یا فایلی خارجی را بخواند یا بنویسد. چنین تلاش‌هایی به دلایل امنیتی رد می‌شوند.
(mdoc, eqn) یک ماکروی It خارج از هرگونه فهرست Bl رخ داده است، یا یک جداکنندهٔ above در eqn(7) خارج از یک توده رخ داده است. آن ماکرو یا جداکننده به همراه آرگومان‌هایش دور ریخته می‌شود.
(mdoc) یک ماکروی Ta خارج از هرگونه بلوک Bl -column رخ داده است. به همراه آرگومان‌هایش دور ریخته می‌شود.
(mdoc, man, eqn, tbl, roff) عناصر نحوی مختلف فقط می‌توانند برای بستن صریح بلوک‌هایی استفاده شوند که پیش‌تر باز شده‌اند. یک ماکروی بستن بلوک در mdoc(7) ، یک ماکروی ME ، RE یا UE در man(7) ، یک جداکنندهٔ راست یا آکوالاد بسته در eqn(7) ، یا پایان یک معادله، جدول، یا درخواست شرطی roff(7) مشاهده شده در حالی که هیچ بلوک منطبقی باز نیست. درخواست یا ماکروی خطاکار دور ریخته می‌شود.
(man) ماکروی RE با یک آرگومان فراخوانی شده است، اما کمتر از تعداد مشخص‌شده بلوک RS باز است. ماکروی RE دور ریخته می‌شود.
(mdoc, tbl) ماکروهای مختلف mdoc(7) و همچنین جدول‌ها نیاز به بستن صریح توسط ماکروهای اختصاصی دارند. بلوکی که از تو در تویی نامعتبر پشتیبانی نمی‌کند، پیش از بسته شدن کامل همهٔ فرزندانش به پایان می‌رسد. گره‌های فرزندِ باز به‌طور ضمنی بسته می‌شوند.
(mdoc, man, eqn, tbl, roff) در پایان سند، یک بلوک صریح mdoc(7) ، یک دامنهٔ خط بعدی در man(7) یا بلوک MT ، RS یا UR ، یک معادله، جدول، یا یک بلوک شرطی یا نادیده‌گیری roff(7) همچنان باز است. بلوک باز به‌طور ضمنی بسته می‌شود.
(roff) شناسه‌های ماکرو، رشته و ثبات از نویسه‌های ASCII قابل چاپ و غیر فاصله تشکیل شده‌اند. توالی‌های گریز و نویسه‌ها و رشته‌هایی که با آن‌ها بیان می‌شوند نمی‌توانند بخشی از یک نام را تشکیل دهند. اولین آرگومان یک درخواست am ، as ، de ، ds ، nr یا rr ، یا هر آرگومان یک درخواست rm ، یا نام یک درخواست یا ماکروی تعریف‌شده توسط کاربر که فراخوانی می‌شود، با یک توالی گریز خاتمه می‌یابد. در موارد as ، ds و nr ، درخواست هیچ اثری ندارد. در موارد am ، de ، rr و rm ، آنچه تا این نقطه تجزیه شده به عنوان آرگومان‌های درخواست استفاده می‌شود و بقیهٔ خط ورودی از جمله توالی گریز دور ریخته می‌شود. هنگام تجزیه برای نام یک درخواست یا ماکروی تعریف‌شده توسط کاربر برای فراخوانی، فقط توالی گریز دور ریخته می‌شود. نویسه‌های پیش از آن به عنوان نام درخواست یا ماکرو استفاده می‌شوند و نویسه‌های پس از آن به عنوان آرگومان‌های درخواست یا ماکرو به کار می‌روند.
(roff) توالی گریز \$ خارج از هرگونه تعریف ماکرو رخ داده و به یک رشتهٔ خالی بسط می‌یابد.
(roff) آرگومان توالی گریز \$ یک رقم نیست؛ توالی گریز به رشتهٔ خالی بسط می‌یابد.
(mdoc) به دلایل امنیتی، ماکروی Bd از آرگومان -file پشتیبانی نمی‌کند. با درخواست درج یک فایل حساس، یک سند مخرب ممکن است کاربر دارای امتیازات بالا را فریب دهد تا ناخواسته فایل را روی صفحه نمایش دهد و محتوای آن را برای اطرافیان آشکار کند. این آرگومان و نام فایل به دنبال آن نادیده گرفته می‌شوند.
(mdoc) یک ماکروی بلوک Bd هیچ آرگومانی ندارد. بلوک دور ریخته می‌شود و محتوای بلوک در هر حالتی که قبل از بلوک فعال بوده نمایش داده می‌شود.
(mdoc) یک ماکروی Bl نوع فهرست را مشخص نکرده است.
(roff) آرگومان یک درخواست ce یک عدد نیست.
(roff) اولین آرگومان یک درخواست char نه یک نویسهٔ ASCII منفرد است و نه یک توالی گریز تک‌نویسه‌ای. درخواست به همراه تمام آرگومان‌هایش نادیده گرفته می‌شود.
(mdoc) اولین فراخوانی Nm ، یا هر فراخوانی در بخش NAME، فاقد آرگومان لازم است.
(mdoc) ماکروی Os بدون آرگومان فراخوانی شده و فراخوانی سیستمی uname(3) شکست خورده است. به عنوان راه حل، mandoc می‌تواند با -DOSNAME="\"string\"" کامپایل شود.
(mdoc) یک ماکروی St دارای آرگومان ناشناخته است و دور ریخته می‌شود.
(roff, eqn) یک درخواست it یا عبارت size یا gsize در eqn(7) دارای آرگومان غیر عددی یا منفی است یا اصلاً آرگومانی ندارد. درخواست یا عبارت نامعتبر نادیده گرفته می‌شود.
(roff) آرگومان یک درخواست shift بزرگتر از تعداد آرگومان‌های ماکرویی است که در حال حاضر اجرا می‌شود. همهٔ آرگومان‌های ماکرو حذف شده و \n(.$ روی صفر تنظیم می‌شود.
(roff) به دلایل امنیتی، mandoc درخواست‌های گنجاندن فایل با so را تنها با مسیرهای نسبی و فقط بدون صعود به دایرکتوری والد مجاز می‌داند. با درخواست درج یک فایل حساس، یک سند مخرب ممکن است کاربر دارای امتیازات بالا را فریب دهد تا ناخواسته فایل را روی صفحه نمایش دهد و محتوای آن را برای اطرافیان فاش کند. mandoc تنها مسیری را نشان می‌دهد که پس از so ظاهر می‌شود.
(roff) پاسخ به یک درخواست so نیازمند خواندن یک فایل خارجی است، اما فایل باز نشد. mandoc تنها مسیری را نشان می‌دهد که پس از so ظاهر می‌شود.
(mdoc, man, eqn, roff) ماکروی Bt ، Ed ، Ef ، Ek ، El ، Lp ، Pp ، Re ، Rs یا Ud در mdoc(7) ، یک ماکروی It در فهرستی که از سرآیند برای موارد پشتیبانی نمی‌کند، ماکروی LP ، P یا PP در man(7) ، ماکروی EQ یا EN در eqn(7) ، یا یک درخواست br ، fi یا nf در roff(7) یا درخواست بستن بلوک ‘..’ با حداقل یک آرگومان فراخوانی شده است. همهٔ آرگومان‌ها نادیده گرفته می‌شوند.
(mdoc, man, roff) یک ماکرو یا درخواست با آرگومان‌های بیش از حد فراخوانی شده است:
  • MT ، PD ، RS ، UR ، ft یا sp با بیش از یک آرگومان
  • با یک آرگومان دیگر بعد از -split یا -nosplit
  • با بیش از یک آرگومان یا با یک آرگومان غیر عدد صحیح
  • یا درخواستی از خانوادهٔ de با بیش از دو آرگومان
  • با بیش از سه آرگومان
  • با بیش از پنج آرگومان
  • Bk یا Bl با آرگومان‌های نامعتبر
آرگومان‌های اضافی نادیده گرفته می‌شوند.

(mdoc, man) در حال حاضر، mandoc نمی‌تواند فایل‌های ورودی بزرگتر از محدودیت دلخواه خود یعنی 2^31 بایت (۲ گیگابایت) را پردازش کند. از آنجا که صفحات راهنمای مفید همواره کوچک هستند، این امر در عمل مشکلی ایجاد نمی‌کند. تجزیه به محض تشخیص این وضعیت متوقف می‌شود.
(roff) یک نویسهٔ کنترلی ASCII که توسط سایر پیاده‌سازی‌های roff(7) پشتیبانی می‌شود اما توسط mandoc پشتیبانی نمی‌شود در یک فایل ورودی پیدا شد. با یک علامت سوال جایگزین می‌شود.
(roff) یک فایل ورودی شامل یک توالی گریز است که توسط GNU troff یا Heirloom troff پشتیبانی می‌شود اما در mandoc پشتیبانی نمی‌شود، و احتمال دارد که این امر باعث از دست رفتن اطلاعات یا قالب‌بندی بسیار ناقص شود.
(roff) یک فایل ورودی شامل یک درخواست roff(7) است که توسط GNU troff یا Heirloom troff پشتیبانی می‌شود اما در mandoc پشتیبانی نمی‌شود، و احتمال دارد که این امر باعث از دست رفتن اطلاعات یا قالب‌بندی بسیار ناقص شود.
(eqn, tbl) خط گزینه‌های یک جدول جداکننده‌های معادله را تعریف می‌کند. هر کد منبع معادله که درون جدول قرار دارد به‌صورت قالب‌بندی‌نشده چاپ خواهد شد.
(tbl) مشخصات طرح‌بندی جدول شامل یک اصلاح‌کنندهٔ ‘m’ است. اصلاح‌کننده دور ریخته می‌شود.
(tbl, mdoc, man) یک جدول حاوی فراخوانی یک ماکروی mdoc(7) یا man(7) یا یک ماکروی تعریف‌نشده است. ماکرو نادیده گرفته می‌شود، و آرگومان‌های آن مانند یک خط متن در نظر گرفته می‌شوند.
(mdoc, tbl) یک فایل ورودی شامل ماکروی TS است. این پیام تنها در حالت خروجی -T man تولید می‌شود که در آن ورودی‌های tbl(7) پشتیبانی نمی‌شوند.
(mdoc, eqn) یک فایل ورودی شامل ماکروی EQ است. این پیام تنها در حالت خروجی -T man تولید می‌شود که در آن ورودی‌های eqn(7) پشتیبانی نمی‌شوند.

آرگومان به دنبال یکی از گزینه‌های خط فرمان -IKMmOTW نامعتبر است، یا یک file داده‌شده به عنوان آرگومان خط فرمان باز نمی‌شود.
گزینهٔ خط فرمان -I دو بار مشخص شده است.
یک آرگومان برای گزینهٔ -O دارای مقدار است اما مقداری نمی‌پذیرد.
یک آرگومان برای گزینهٔ -O مقداری ندارد اما نیازمند آن است.
یک آرگومان برای گزینهٔ indent یا width از -O دارای مقدار نامعتبر است.
یک گزینهٔ -O یکسان بیش از یک بار مشخص شده است.
گزینهٔ -O tag مشخص شده است اما برچسب در هیچ‌یک از صفحات راهنمای نمایش‌داده‌شده پیدا نشد.
(man) گزینهٔ -T markdown مشخص شده است اما یک فایل ورودی از زبان man(7) استفاده می‌کند. هیچ خروجی برای آن فایل ورودی تولید نمی‌شود.

apropos(1), man(1), eqn(7), man(7), mandoc_char(7), mdoc(7), roff(7), tbl(7)

ابزار mandoc نخستین بار در OpenBSD 4.8 ظاهر شد. گزینهٔ -I در OpenBSD 5.2 و گزینه‌های -aCcfhKklMSsw در OpenBSD 5.7 پدیدار شدند.

ابزار mandoc توسط Kristaps Dzonsons <kristaps@bsd.lv> نوشته شده است و توسط Ingo Schwarze <schwarze@openbsd.org> نگهداری می‌شود.

August 14, 2021 Linux 6.12.107+deb13-amd64