.if t .ds LX L\h'-0.36m'\v'-0.15v'\s-2A\s+2\h'-0.15m'\v'0.15v'T\h'-0.1667m'\v'0.20v'E\v'-0.20v'\h'-0.125m'X .if n .ds LX LaTeX .if t .ds TX T\h'-0.1667m'\v'0.20v'E\v'-0.20v'\h'-0.125m'X .if n .ds TX TeX .ds Ts T\s-2RAN\s+2S\s-2CRIPT\s+2 .if t .ds Uc \fIU\h'-0.12m'C\v'0.27m'\h'-.23m'S\h'-0.11m'F\v'-0.27m'\fP .if n .ds Uc UCSF .ds Et \f(boE\h'-0.1667m'\v'-0.20v'T\v'0.20v'\h'-0.125m'T\fP .TH MAKEINDEX 1 "12 November 2014" "TeX Live" "TeX Live" .\"===================================================================== .SH "نام (NAME)" makeindex \- قالب‌بندی و ساخت نمایه‌های الفبایی برای TeX یا troff .SH "خلاصه دستور (SYNOPSIS)" .B makeindex .RB [ \-c ] .RB [ \-g ] .RB [ \-i ] .RB [ \-l ] .RB [ \-o .IR ind ] .RB [ \-p .IR num ] .RB [ \-q ] .RB [ \-r ] .RB [ \-s .IR sfile ] .RB [ \-t .IR log ] .RB [ \-L ] .RB [ \-T ] .RI [ idx0 .I idx1 .IR idx2 .\|.\|.] .\"===================================================================== .SH "توضیحات (DESCRIPTION)" برنامه .I makeindex یک سازنده نمایه سلسله‌مراتبی با کاربرد عمومی است؛ این برنامه یک یا چند فایل ورودی (که اغلب توسط یک قالب‌بندی‌کننده متن مانند \*(TX .RI ( tex (1L)) یا .IR troff (1) تولید شده‌اند) را دریافت می‌کند، مدخل‌ها را مرتب می‌سازد، و یک فایل خروجی تولید می‌نماید که قابل قالب‌بندی است. نمایه می‌تواند تا سه سطح (۰، ۱ و ۲) از تو در تویی زیرمدخل‌ها را داشته باشد. نحوه نشانه‌گذاری کلمات برای نمایه‌سازی در سند اصلی، وابسته به قالب‌بندی‌کننده مورد استفاده است؛ .I makeindex فرآیند انتخاب این کلمات را خودکار .I نمی‌کند. از آنجا که نمایه خروجی سلسله‌مراتبی است، .I makeindex می‌تواند مکمل سیستم .IR make.index (1L) مبتنی بر .IR awk (1) اثر بنتلی و کرنیهان تلقی شود که مختص .IR troff (1) بوده، نمایه‌های غیرسلسله‌مراتبی تولید می‌کند و ساختار نحوی بسیار ساده‌تری را برای تعیین مدخل‌های نمایه به کار می‌گیرد. برای مشاهده نمونه‌های استفاده همراه با .I troff و .IR \*(TX ، بخش \s-2مثال‌ها (EXAMPLES)\s+2 در ادامه را ببینید. .LP قالب فایل‌های ورودی و خروجی در یک فایل شیوه‌نامه مشخص می‌شود؛ به‌طور پیش‌فرض، فرض می‌شود ورودی یک فایل با پسوند .I \&.idx است، همان‌گونه که توسط \*(LX تولید می‌شود. .LP مگر در صورت تعیین صریح، نام پایه اولین فایل ورودی .RI ( idx0 ) برای تعیین نام فایل‌های دیگر استفاده می‌شود. برای هر نام فایل ورودی مشخص‌شده، فایلی با همان نام جستجو می‌شود. اگر این فایل پیدا نشود و نام فایل پسوندی نداشته باشد، پسوند .I \&.idx افزوده می‌شود. اگر هیچ فایلی با این نام یافت نشود، .I makeindex متوقف می‌شود. .LP اگر دقیقاً یک فایل ورودی داده شده باشد و هیچ فایل شیوه‌نامه صریحی با استفاده از .BR \-s مشخص نشده باشد، .I makeindex از فایلی با پسوند .I \&.mst به عنوان فایل شیوه‌نامه پیش‌فرض (در صورت وجود) استفاده می‌کند. .LP برای نکات مهم در رابطه با چگونگی انتخاب کلیدواژه‌های نمایه، سند لمپورت که در ادامه به آن ارجاع داده شده را ببینید. به عنوان موضوعی مجزا از انتخاب کلیدواژه‌های نمایه، یک سازوکار روش‌مند برای قرار دادن اصطلاحات نمایه در سند در مقاله .IR "Index Preparation and Processing" که در ادامه ذکر شده، پیشنهاد گردیده است. .\"===================================================================== .SH "گزینه‌ها (OPTIONS)" .TP 10 .B \-c فشرده‌سازی فاصله‌های خالی میانی (نادیده گرفتن فاصله‌های خالی و تب‌ها در ابتدا و انتهای خط). به‌طور پیش‌فرض، فاصله‌های خالی در کلید نمایه حفظ می‌شوند. .TP 10 .B \-g به کار بردن ترتیب کلمات آلمانی در نمایه، مطابق با قواعد تعیین‌شده در DIN 5007. به‌طور پیش‌فرض، .I makeindex از ترتیب کلماتی استفاده می‌کند که در آن اولویت عبارت است از: نمادها، اعداد، حروف بزرگ، حروف کوچک. این ترتیب در چینش کلمات آلمانی بدین صورت است: نمادها، حروف کوچک، حروف بزرگ، اعداد. علاوه بر این، این گزینه .I makeindex را قادر می‌سازد تا در طول مرتب‌سازی مدخل‌ها، دستورهای آلمانی \*(TX شامل {"a, "o, "u و "s} را به صورت {ae, oe, ue و ss} تشخیص دهد. نویسه نقل‌قول باید در یک فایل شیوه‌نامه بازتعریف شود (برای مثال، بازتعریف نقل‌قول به صورت '+'). اگر نویسه نقل‌قول بازتعریف نشود، .I makeindex یک پیام خطا تولید کرده و متوقف می‌شود. .TP 10 .B \-i دریافت ورودی از .IR stdin . هنگامی که این گزینه مشخص شود و .B \-o تعیین نشده باشد، خروجی در .IR stdout نوشته می‌شود. .TP 10 .B \-l ترتیب حرف‌به‌حرف؛ به‌طور پیش‌فرض، از ترتیب کلمه‌به‌کلمه استفاده می‌شود (بخش \s-2مرتب‌سازی (ORDERING)\s+2 را ببینید). .TP 10 .BI \-o " ind" استفاده از .I ind به عنوان فایل نمایه خروجی. به‌طور پیش‌فرض، نام فایل با افزودن پسوند .I .ind به نام پایه اولین فایل ورودی .RI ( idx0 ) ساخته می‌شود. .TP 10 .BI \-p " num" تنظیم شماره صفحه شروع فایل نمایه خروجی بر روی .I num (کاربردی هنگامی که فایل نمایه باید به‌طور جداگانه قالب‌بندی شود). آرگومان .I num می‌تواند عددی یا یکی از موارد زیر باشد: .RS .TP 10 .I any صفحه شروع برابر است با شماره آخرین صفحه منبع به علاوه ۱. .TP .I odd صفحه شروع اولین صفحه فرد پس از شماره آخرین صفحه منبع است. .TP .I even صفحه شروع اولین صفحه زوج پس از شماره آخرین صفحه منبع است. .RE .IP آخرین صفحه منبع با جستجوی رو به عقب در فایل لاگ به دنبال اولین نمونه از عددی که در جفت براکت .RB ( [ .\|.\|. ] ) قرار دارد به دست می‌آید. اگر شماره صفحه‌ای وجود نداشته باشد یا فایل لاگ پیدا نشود، هیچ تلاشی برای تنظیم شماره صفحه شروع انجام نخواهد شد. نام فایل لاگ منبع با افزودن پسوند .I \&.log به نام پایه اولین فایل ورودی .RI ( idx0 ) تعیین می‌شود. .TP 10 .B \-q حالت بی‌صدا؛ هیچ پیامی به .IR stderr ارسال نمی‌شود. به‌طور پیش‌فرض، پیام‌های پیشرفت و خطا به .I stderr و همچنین به فایل گزارش (transcript) فرستاده می‌شوند. .TP 10 .B \-r غیرفعال کردن تشکیل ضمنی بازه صفحات؛ بازه‌های صفحات باید با استفاده از عملگرهای صریح بازه ایجاد شوند؛ بخش \s-2جلوه‌های ویژه (SPECIAL EFFECTS)\s+2 در ادامه را ببینید. به‌طور پیش‌فرض، سه یا چند صفحه متوالی به‌طور خودکار به صورت یک بازه خلاصه می‌شوند (مانند 1\(em5). .TP 10 .BI \-s " sty" استفاده از .I sty به عنوان فایل شیوه‌نامه (بدون پیش‌فرض). متغیر محیطی \s-2INDEXSTYLE\s+2 مسیری را مشخص می‌کند که فایل شیوه‌نامه باید در آن پیدا شود. .TP 10 .BI \-t " log" استفاده از .I log به عنوان فایل گزارش (transcript). به‌طور پیش‌فرض، نام فایل با افزودن پسوند .I .ilg به نام پایه اولین فایل ورودی .RI ( idx0 ) ساخته می‌شود. .TP 10 .BR \-L مرتب‌سازی بر اساس تنظیمات محلی (locale). در همه سیستم‌ها در دسترس نیست. .TP 10 .BR \-T پشتیبانی ویژه از اسناد تایلندی. در همه سیستم‌ها در دسترس نیست. .\"===================================================================== .SH "فایل شیوه‌نامه (STYLE FILE)" فایل شیوه‌نامه، .I makeindex را از قالب فایل‌های ورودی .I \&.idx و قالب مورد نظر برای فایل خروجی نهایی مطلع می‌سازد؛ نمونه‌هایی از آن در ادامه آمده است. این فایل می‌تواند در هر مکانی در مسیر تعریف‌شده توسط متغیر محیطی \s-2INDEXSTYLE\s+2 قرار گیرد. فایل شیوه‌نامه شامل فهرستی از جفت‌های .RI < specifier , " attribute" > است. دو نوع مشخص‌کننده وجود دارد: ورودی و خروجی. نیازی نیست جفت‌ها با ترتیب خاصی قرار گیرند. خطی که با «%» آغاز شود یک توضیح (کامنت) است. در فهرست زیر از مشخص‌کننده‌ها و آرگومان‌ها، یک رشته دلخواه است که با علامت نقل‌قول جفتی (".\|.\|.") محدود شده است، یک نویسه منفرد در میان علامت نقل‌قول تکی ('.\|.\|.') است، و یک عدد صحیح غیرمنفی است. حداکثر طول یک برابر ۲۰۴۸ است. یک بک‌اسلش یا علامت نقل‌قول صریح باید (با یک بک‌اسلش) اسکیپ شود. هر آنچه در فایل شیوه‌نامه مشخص نشود، یک مقدار پیش‌فرض دریافت خواهد کرد که در بالای ستون سمت راست نمایش داده شده است. .\"---------------------------------------------------------------------- .SS "مشخص‌کننده‌های شیوه ورودی (INPUT STYLE SPECIFIERS)" .TP 25 .BR actual " " \'@\' .RS نمادی که نشان می‌دهد مدخل بعدی باید در فایل خروجی ظاهر شود. .RE .TP .BR arg_close " " \'}\' .RS جداکننده پایانی برای آرگومان مدخل نمایه. .RE .TP .BR arg_open " " \'{\' .RS جداکننده ابتدایی برای آرگومان مدخل نمایه. .RE .TP .BR encap " " \'|\' .RS نمادی که نشان می‌دهد ادامه فهرست آرگومان‌ها باید به عنوان دستور دربرگیرنده برای شماره صفحه استفاده شود. .RE .TP .BR escape " " \'\\\\\' .RS نمادی که نویسه پس از خود را اسکیپ می‌کند، مگر اینکه نویسه پیش از آن .BR escape باشد. نکته: از .B quote برای اسکیپ کردن نویسه‌ای که بلافاصله پس از آن می‌آید استفاده می‌شود، اما اگر پیش از آن .BR escape آمده باشد، به عنوان یک نویسه معمولی تلقی می‌شود. این دو نماد .I باید از یکدیگر متمایز باشند. .RE .TP .BR keyword " " "\\\\indexentry" .RS دستوری که به .I makeindex اعلام می‌کند آرگومان آن یک مدخل نمایه است. .RE .TP .BR level " " \'!\' .RS جداکننده‌ای که نشان‌دهنده یک سطح جدید از زیرمجموعه است. .RE .TP .BR page_compositor " " "-" .RS جداکننده‌ای که بخش‌های یک شماره صفحه مرکب را از یکدیگر تفکیک می‌کند (بخش \s-2SPECIAL EFFECTS\s+2 در ادامه را ببینید). .RE .TP .BR quote " " \'"\' .RS نکته: از .B quote برای اسکیپ کردن نویسه‌ای که بلافاصله پس از آن می‌آید استفاده می‌شود، اما اگر پیش از آن .BR escape آمده باشد، به عنوان یک نویسه معمولی تلقی می‌شود. این دو نماد .I باید از یکدیگر متمایز باشند. .RE .TP .BR range_close " " \')\' .RS جداکننده پایانی که نشان‌دهنده پایان یک محدوده صریح از صفحات است. .RE .TP .BR range_open " " \'(\' .RS جداکننده ابتدایی که نشان‌دهنده آغاز یک محدوده صریح از صفحات است. .RE .\"--------------------------------------------------------------------- .SS "مشخص‌کننده‌های شیوه خروجی (OUTPUT STYLE SPECIFIERS)" .TP 25 .BR preamble " " "\\\\begin{theindex}\\n" .RS دیباچه فایل خروجی. .RE .TP .BR postamble " " "\\n\\n\\\\end{theindex}\\n" .RS پایان‌بخش فایل خروجی. .RE .TP .BR setpage_prefix " " "\\n \\\\setcounter{page}{" .RS پیشوند دستوری که شماره صفحه آغازین را تنظیم می‌کند. .RE .TP .BR setpage_suffix " " "}\\n" .RS پسوند دستوری که شماره صفحه آغازین را تنظیم می‌کند. .RE .TP .BR group_skip " " "\\n\\n \\\\indexspace\\n" .RS فاصله عمودی که پیش از آغاز یک گروه جدید درج می‌شود. .RE .TP .BR headings_flag " " 0 .RS پرچمی که نحوه برخورد با سرآیندهای گروه جدید را مشخص می‌کند؛ این سرآیندها پیش از یک گروه جدید (نمادها، اعداد و ۲۶ حرف الفبا) درج می‌شوند: مقادیر مثبت باعث می‌شوند یک حرف بزرگ بین پیشوند و پسوند درج شود، و مقادیر منفی باعث درج یک حرف کوچک می‌شوند (پیش‌فرض 0 است که هیچ سرآیندی تولید نمی‌کند). .RE .TP .BR heading_prefix " " "" .RS پیشوند سرآیند حرفی که پیش از آغاز یک حرف جدید درج می‌شود. .RE .TP .BR heading_suffix " " "" .RS پسوند سرآیند حرفی که هنگام آغاز یک حرف جدید درج می‌شود. .RE .TP .BR symhead_positive " " "Symbols" .RS سرآیند نمادها که در صورت مثبت بودن .B headings_flag درج می‌شود. .RE .TP .BR symhead_negative " " "symbols" .RS سرآیند نمادها که در صورت منفی بودن .B headings_flag درج می‌شود. .RE .TP .BR numhead_positive " " "Numbers" .RS سرآیند اعداد که در صورت مثبت بودن .B headings_flag درج می‌شود. .RE .TP .BR numhead_negative " " "numbers" .RS سرآیند اعداد که در صورت منفی بودن .B headings_flag درج می‌شود. .RE .TP .BR item_0 " " "\\n \\\\item " .RS دستوری که میان دو مدخل اصلی (سطح 0) درج می‌شود. .RE .TP .BR item_1 " " "\\n \\\\subitem " .RS دستوری که میان دو مدخل فرعی (سطح 1) درج می‌شود. .RE .TP .BR item_2 " " "\\n \\\\subsubitem " .RS دستوری که میان دو مدخل سطح 2 درج می‌شود. .RE .TP .B item_01 " " "\\n \\\\subitem " .RS دستوری که میان یک مدخل سطح 0 و یک مدخل سطح 1 درج می‌شود. .RE .TP .BR item_x1 " " "\\n \\\\subitem " .RS دستوری که میان یک مدخل سطح 0 و یک مدخل سطح 1 درج می‌شود، در حالتی که مدخل سطح 0 هیچ شماره صفحه مرتبطی نداشته باشد. .RE .TP .BR item_12 " " "\\n \\\\subsubitem " .RS دستوری که میان یک مدخل سطح 1 و یک مدخل سطح 2 درج می‌شود. .RE .TP .BR item_x2 " " "\\n \\\\subsubitem " .RS دستوری که میان یک مدخل سطح 1 و یک مدخل سطح 2 درج می‌شود، در حالتی که مدخل سطح 1 هیچ شماره صفحه مرتبطی نداشته باشد. .RE .TP .BR delim_0 " " ", " .RS جداکننده‌ای که بین یک کلید سطح 0 و نخستین شماره صفحه آن درج می‌شود (پیش‌فرض: کاما به همراه یک فاصله خالی). .RE .TP .BR delim_1 " " ", " .RS جداکننده‌ای که بین یک کلید سطح 1 و نخستین شماره صفحه آن درج می‌شود (پیش‌فرض: کاما به همراه یک فاصله خالی). .RE .TP .BR delim_2 " " ", " .RS جداکننده‌ای که بین یک کلید سطح 2 و نخستین شماره صفحه آن درج می‌شود (پیش‌فرض: کاما به همراه یک فاصله خالی). .RE .TP .BR delim_n " " ", " .RS جداکننده‌ای که میان دو شماره صفحه برای یک کلید یکسان در هر سطحی درج می‌شود (پیش‌فرض: کاما به همراه یک فاصله خالی). .RE .TP .BR delim_r " " "--" .RS جداکننده‌ای که بین شماره صفحه آغازین و پایانی یک بازه درج می‌شود. .RE .TP .BR delim_t " " "" .RS جداکننده‌ای که در انتهای فهرست شماره صفحات درج می‌شود. این جداکننده بر مدخل‌هایی که هیچ فهرست صفحه مرتبطی ندارند تاثیری ندارد. .RE .TP .BR encap_prefix " " "\\\\" .RS بخش نخست پیشوند برای دستوری که شماره صفحه را محصور (کپسوله) می‌کند. .RE .TP .BR encap_infix " " "{" .RS بخش دوم پیشوند برای دستوری که شماره صفحه را محصور (کپسوله) می‌کند. .RE .TP .BR encap_suffix " " "}". .RS پسوند برای دستوری که شماره صفحه را محصور (کپسوله) می‌کند. .RE .TP .BR page_precedence " " "rnaRA". .RS ترتیب اولویت نوع صفحه. حالت پیش‌فرض تعیین می‌کند: رومی کوچک، عددی/عربی، الفبایی کوچک، رومی بزرگ، الفبایی بزرگ. .RE .TP .BR line_max " " 72 .RS حداکثر طول یک سطر در خروجی که پس از آن سطر شکسته می‌شود. .RE .TP .BR indent_space " " "\\t\\t" .RS فاصله‌ای که در جلوی یک سطر شکسته‌شده درج می‌شود (پیش‌فرض: دو تب). .RE .TP .BR indent_length " " 16 .RS طول .B indent_space (پیش‌فرض: 16، معادل 2 تب). .RE .TP .BR suffix_2p " " "" .RS جداکننده‌ای برای جایگزینی جداکننده بازه و شماره صفحه دوم در یک فهرست دو صفحه‌ای. در صورت وجود، بر .BR delim_r اولویت خواهد داشت. مثال: "f.". .RE .TP .BR suffix_3p " " "" .RS جداکننده‌ای برای جایگزینی جداکننده بازه و شماره صفحه دوم در یک فهرست سه صفحه‌ای. در صورت وجود، بر .B delim_r و .BR suffix_mp اولویت خواهد داشت. مثال: "ff.". .RE .TP .BR suffix_mp " " "" .RS جداکننده‌ای برای جایگزینی جداکننده بازه و شماره صفحه دوم در یک فهرست چند صفحه‌ای (سه صفحه یا بیشتر). در صورت وجود، بر .BR delim_r اولویت خواهد داشت. مثال: "f.". .RE .\"===================================================================== .SH "مثال‌ها (EXAMPLES)" .\"--------------------------------------------------------------------- .SS "مثال \*(TX (\*(TX EXAMPLE)" مثال زیر یک فایل شیوه‌نامه به نام .IR book.ist را نشان می‌دهد که نمایه‌ای را برای کتاب تعریف می‌کند و می‌تواند مستقل از منبع اصلی قالب‌بندی شود: .LP .RS .nf \fCpreamble "\\\\documentstyle[12pt]{book} \\\\begin{document} \\\\begin{theindex} {\\\\small\\n" postamble "\\n\\n} \\\\end{theindex} \\\\end{document}\\n\fP" .fi .RE .LP با این فرض که سبک نگارش یک کتاب خاص نیازمند آن باشد که نمایه (و همچنین هر فصل) از یک شماره صفحه فرد آغاز شود، و نام فایل ورودی .IR foo.idx باشد، خط فرمان زیر خروجی را در فایل .IR footmp.ind تولید می‌کند: .LP .RS \fCmakeindex \-s book.ist \-o footmp.ind \-p odd foo\fP .RE .LP در اینجا از یک نام فایل خروجی غیرپیش‌فرض استفاده شده است تا از رونویسی خروجی خود کتاب جلوگیری شود (احتمالاً .IR foo.dvi که نام پیش‌فرض فایل خروجی نمایه می‌بود!). .\"--------------------------------------------------------------------- .SS "مثال TROFF (TROFF EXAMPLE)" یک نمونه فایل کنترلی برای ایجاد نمایه، که فرض می‌کنیم در فایل .IR sample.ist قرار دارد: .LP .RS .nf \&\fCkeyword "IX:" \&preamble \&".\\\\\\" start of index output \&\\".\\\\\\" enter two column mode \&.2C \&.SH \&.ce \&INDEX \&.XS \&INDEX \&.XE \&.R \&.ps 9p \&.vs 11p \&.sp \&.de I1 \&.ti 0.25i \&.. \&.de I2 \&.ti 0.5i \&.." \&postamble "\\n.\\\\\\" end of index output" \&setpage_prefix "\\n.nr % " \&setpage_suffix "" \&group_skip "\\n.sp 1.0" \&headings_flag 1 \&heading_prefix "\\n.IS\\n" \&heading_suffix "\\n.IE" \&item_0 "\\n.br\\n" \&item_1 "\\n.I1\\n" \&item_2 "\\n.I2\\n" \&item_01 "\\n.I1\\n" \&item_x1 "\\n.I1\\n" \&item_12 "\\n.I2\\n" \&item_x2 "\\n.I2\\n" \&delim_0 ", " \&delim_1 ", " \&delim_2 ", " \&delim_r "-" \&delim_t "." \&encap_prefix "\\\\fB" \&encap_infix "" \&encap_suffix "\\\\fP" \&indent_space "" \&indent_length 0\fP .fi .RE .LP بسته ماکروی محلی ممکن است نیاز به اصلاح داشته باشد، مانند این مثال از افزونه‌ای برای ماکروهای .B \-ms (توجه داشته باشید که در برخی سیستم‌ها، این ماکرو باید .I جایگزین ماکروی قبلی با همین نام شود): .LP .RS .nf \fC\&.\" IX - index words to stderr \&.de IX \&.ie '\\\\n(.z'' .tm IX: \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9 {\\\\n(PN} \&.el \\\\!.IX \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9 {\\\\n(PN} \&..\fP .fi .RE .LP (توجه داشته باشید که رشته {\fC\\\\n(PN\fP} با یک نویسه تب از بقیه خط جدا شده است. اگر بسته ماکروی محلی شما حاوی این افزونه نیست، کافی است این خطوط را در ابتدای فایل خود بگنجانید. در اینجا یک فایل ورودی ساده .IR troff (1) آورده شده است که فرض می‌کنیم نام آن .IR sample.txt است: .LP .RS .nf \fC\&This is a sample file to test the \\fImakeindex\\fP(1L) \&program, and see \&.IX {indexing!programs!C language} \&.IX {makeindex@\\fImakeindex\\fP(1L)} \&.bp \&.rs \&.IX {Knuth} \&.IX {typesetting!computer-aided} \&how well it functions in the \\fItroff\\fP(1) environment.\fP .fi .RE .LP توجه داشته باشید که مدخل‌های نمایه با ماکروی .B .IX مشخص می‌شوند، که باعث می‌شود متن مربوطه به همراه شماره صفحه جاری در .I stdout نوشته شود. .\"--------------------------------------------------------------------- .SS "ساخت فایل نمایه در شل بورن (CREATING THE INDEX FILE IN THE BOURNE SHELL)" برای ایجاد یک فایل ورودی برای .IR makeindex .B "در محیط شل بورن" دستور معادل زیر را در سیستم خود اجرا کنید: .LP .nf \fCpsroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp\fP .fi .LP برخی سیستم‌ها به جای .IR psroff به .I ditroff نیاز خواهند داشت. برای حذف پیام‌های خطای واقعی، .IR grep (1) را فراخوانی کنید: .LP .RS \fCgrep '^IX: ' sample.tmp > sample.idx\fP .RE .\"--------------------------------------------------------------------- .SS "ساخت فایل نمایه با \*(Uc رووف پیشرفته/\*(Ts (CREATING THE INDEX FILE USING \*(Uc ENHANCED TROFF/\*(Ts)" در \*(Uc Enhanced troff/\*(Ts، گزینه .B \-I از .IR psroff (1L) می‌تواند هم خروجی قالب‌بندی و هم یک فایل نمایه تولید کند: .LP .RS \fCpsroff -ms -I sample.inp -Tpsc sample.txt\fP .RE .LP اگر مایل به جلوگیری از تولید خروجی قالب‌بندی هستید: .RS .LP .nf \fCpsroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null\fP .fi .RE .\"--------------------------------------------------------------------- .SS "تکمیل نمایه (COMPLETING THE INDEX)" هر یک از روش‌های بالا، ورودی .I makeindex را در .IR sample.inp قرار می‌دهد. مرحله بعدی فراخوانی .IR makeindex است: .LP .RS \fCmakeindex -s sample.ist sample.idx\fP .RE .LP این کار خروجی آماده برای .IR troff (1) را در فایل .IR sample.ind باقی می‌گذارد. .\"===================================================================== .SH "ترتیب‌بندی (ORDERING)" به‌طور پیش‌فرض، .I makeindex حالت .IR "ترتیب کلمه‌ای (word ordering)" را در نظر می‌گیرد؛ اگر گزینه .B \-l فعال باشد، .I "ترتیب حرفی (letter ordering)" به کار می‌رود. در ترتیب کلمه‌ای، یک فاصله خالی بر هر حرف الفبا تقدم دارد، در حالی که در ترتیب حرفی، فاصله اصلاً به حساب نمی‌آید. این موضوع در مثال زیر نشان داده شده است: .LP .RS \fIword order letter order\fP .br sea lion seal .br seal sea lion .RE .LP اعداد همیشه به ترتیب عددی مرتب می‌شوند. برای مثال، .LP .RS 9 (nine), 123 .br 10 (ten), see Derek, Bo .RE .LP حروف ابتدا بدون در نظر گرفتن بزرگی و کوچکی مرتب می‌شوند؛ هنگامی که کلمات یکسان باشند، نسخه با حروف بزرگ بر همتای با حروف کوچک خود تقدم دارد. .LP نماد ویژه در اینجا به عنوان هر نویسه‌ای تعریف می‌شود که در اجتماع ارقام و حروف الفبای انگلیسی قرار ندارد. الگوهایی که با نمادهای ویژه شروع می‌شوند مقدم بر اعداد هستند، و اعداد نیز بر الگوهایی که با حروف شروع می‌شوند تقدم دارند. به عنوان یک حالت خاص، رشته‌ای که با یک رقم شروع می‌شود اما با غیرارقام ترکیب شده است، الگویی در نظر گرفته می‌شود که با یک نویسه ویژه شروع شده است. .\"===================================================================== .SH "جلوه‌های ویژه (SPECIAL EFFECTS)" مدخل‌هایی مانند .LP .RS .nf \fC\\indexentry{alpha}{1} \\indexentry{alpha!beta}{3} \\indexentry{alpha!beta!gamma}{10}\fP .fi .RE .LP در فایل ورودی، تبدیل خواهند شد به .LP .RS .nf \fC\\item alpha, 1 \0\0\0\\subitem beta, 3 \0\0\0\0\0\0\\subsubitem gamma, 10\fP .fi .RE .LP در فایل نمایه خروجی. توجه داشته باشید که نماد .B level (یعنی `!') در بالا برای تعیین مرز سطوح سلسله‌مراتبی استفاده شده است. .LP می‌توان با استفاده از عملگر .B actual (یعنی `@')، کاری کرد که یک مدخل به شکلی مشخص نمایش یابد. برای نمونه، .LP .RS \fC\\indexentry{alpha@{\\it alpha\\/}}{1}\fP .RE .LP پس از پردازش تبدیل خواهد شد به .LP .RS \fC\\item {\\it alpha\\/}, 1\fP .RE .LP الگوی پیش از `@' به عنوان کلید مرتب‌سازی به کار می‌رود، در حالی که الگوی پس از آن در فایل خروجی نوشته می‌شود. توجه کنید دو مورد از یک کلید یکسان، یکی با عملگر .B actual و دیگری بدون آن، به عنوان مدخل‌های .I متمایز در نظر گرفته می‌شوند. .LP فیلدهای item، subitem و subsubitem می‌توانند کلیدهای مرتب‌سازی مجزایی داشته باشند: .LP .RS .nf \fC\\indexentry{aa@{\\it aa\\/}!bb@{\\it bb\\/}!cc@{\\it cc\\/}}{1}\fP .fi .RE .LP این مورد تبدیل خواهد شد به .LP .RS .nf \fC\\item {\\it aa}, 1 \0\0\0\\subitem {\\it bb}, 3 \0\0\0\0\0\0\\subsubitem {\\it cc}, 10\fP .fi .RE .LP با استفاده از عملگر .B encap (یعنی `|') می‌توان شماره صفحه را در یک دستور مشخص کپسوله‌سازی کرد: .LP .RS \fC\\indexentry{alpha|bold}{1}\fP .RE .LP تبدیل خواهد شد به .LP .RS \fC\\item alpha, \\bold{1}\fP .RE .LP که در آن با تعریفی مناسب برای \*(TX، عبارت \fC\\bold{n}\fP به \fC{\\bf n}\fP بسط می‌یابد. در این مثال، سه ویژگی خروجی مرتبط با کپسوله‌سازی شماره صفحه، یعنی .BR encap_prefix ، .BR encap_infix و .BR encap_suffix ، به ترتیب متناظر با بک‌اسلش، آکولاد باز و آکولاد بسته هستند. این سازوکار امکان درج شماره صفحات با قلم‌های مختلف را فراهم می‌سازد. برای مثال، صفحه‌ای که تعریف یک کلیدواژه در آن آمده می‌تواند با یک قلم، محل یک مثال اصلی با قلمی دیگر و سایر موارد با قلم سومی چاپ شوند. .LP از عملگر .B encap همچنین می‌توان برای ایجاد ارجاع‌های متقابل در نمایه استفاده کرد: .LP .RS \fC\\indexentry{alpha|see{beta}}{1}\fP .RE .LP در فایل خروجی تبدیل خواهد شد به .LP .RS \fC\\item alpha, \\see{beta}{1}\fP .RE .LP که در آن .LP .RS \fC\\see{beta}{1}\fP .RE .LP بسط خواهد یافت به .LP .RS \fC{\\it see\\/} beta\fP .RE .LP توجه داشته باشید که در چنین ارجاع متقابلی، شماره صفحه حذف می‌شود. .LP یک جفت .B encap پیوسته با .B range_open (یعنی `|(') و .B range_close (یعنی `|)') یک محدوده صفحه صریح ایجاد می‌کند: .LP .RS .nf \fC\\indexentry{alpha|(}{1} \\indexentry{alpha|)}{5}\fP .fi .RE .LP تبدیل خواهد شد به .LP .RS \fC\\item alpha, 1\(em5\fP .RE .LP صفحات میانی که با کلید یکسانی نمایه‌سازی شده‌اند، به طور ضمنی در این محدوده ادغام خواهند شد. این ویژگی به‌ویژه زمانی مفید است که قرار باشد یک بخش کامل درباره موضوعی خاص نمایه شود، که در این حالت فقط کافی است عملگرهای باز و بسته کردن محدوده در ابتدا و انتهای بخش درج شوند. تشکیل محدوده صفحه صریح همچنین می‌تواند شامل یک دستور اضافی برای تعیین قلمی مشخص برای محدوده صفحه باشد: .LP .RS .nf \fC\\indexentry{alpha|(bold}{1} \\indexentry{alpha|)}{5}\fP .fi .RE .LP تبدیل خواهد شد به .LP .RS \fC\\item alpha, \\bold{1--5}\fP .RE .LP چندین مشکل احتمالی شایان ذکر است. نخست، مدخل‌هایی مانند .LP .RS .nf \fC\\indexentry{alpha|(}{1} \\indexentry{alpha|bold}{3} \\indexentry{alpha|)}{5}\fP .fi .RE .LP به این صورت تفسیر خواهند شد: .LP .RS \fC\\item alpha, \\bold{3}, 1--5\fP .RE .LP اما همراه با یک پیام هشدار در رونوشت (transcript) درباره مواجهه با یک کپسوله‌ساز صفحه ناسازگار. یک محدوده صریح که با یک شماره صفحه رومی آغاز شده و با عددی عربی پایان یابد نیز خطا به شمار می‌رود. در این حالت، (در صورت امکان) محدوده به دو زیرمحدوده تقسیم می‌شود، یکی به اعداد رومی و دیگری به اعداد عربی. برای مثال، .LP .RS .nf \fC\\indexentry{alpha|(}{i} \\indexentry{alpha}{iv} \\indexentry{alpha}{3} \\indexentry{alpha|)}{7}\fP .fi .RE .LP تبدیل خواهد شد به .LP .RS \fC\\item alpha, i--iv, 3--7\fP .RE .LP همراه با یک پیام هشدار در فایل رونوشت (transcript) مبنی بر تشکیل محدوده غیرمجاز. .LP تمام نمادهای ویژه‌ای که در این بخش به آن‌ها اشاره شد، می‌توانند با عملگر .B quote («"») اسکیپ شوند. بدین ترتیب .LP .RS \fC\\indexentry{alpha"@beta}{1}\fP .RE .LP در واقع به .LP .RS \fC\\item alpha@beta, 1\fP .RE .LP در نتیجه اجرای .IR makeindex تبدیل خواهد شد. قابلیت نقل‌قول عملگر .B quote در صورتی که بلافاصله پس از .B escape («\\») بیاید، از بین می‌رود. به عنوان مثال، .LP .RS \fC\\indexentry{f\\"ur}{1}\fP .RE .LP به .LP .RS \fC\\item f\\"ur, 1\fP .RE .LP تبدیل می‌شود که برای خانواده پردازشگرهای \*(TX نشان‌دهنده یک حرف «u» با نشان اوملاوت است. .LP شماره صفحه می‌تواند ترکیبی از یک یا چند فیلد باشد که با جداکننده مقید به .B page_compositor («-») از هم جدا شده‌اند؛ مانند II-12 برای صفحه ۱۲ از فصل II. شماره‌های صفحه می‌توانند تا ۱۰ فیلد داشته باشند. .PP از نگارش ۲.۱۱ برنامه .IR makeindex ، عملگر .B quote می‌تواند .I هر نویسه‌ای در محدوده ۱ .\|.\|. ۲۵۵ را اسکیپ کند. نویسه ۰ مستثنی است زیرا به صورت داخلی در کد منبع .I makeindex به عنوان پایان‌دهنده رشته استفاده می‌شود. با این تغییر، کلیدهای مرتب‌سازی را می‌توان برای تمامی نویسه‌های هشت‌بیتی به جز ۰ ایجاد کرد. ترتیب مرتب‌سازی به این صورت است: .RS .nf نویسه‌های نشانه‌گذاری (به ترتیب اسکی)، ارقام، نویسه‌های کنترلی (۱ .\|.\|. ۳۱)، فاصله (۳۲)، حروف (بدون در نظر گرفتن بزرگی و کوچکی)، نویسه‌های ۱۲۷ .\|.\|. ۲۵۵. .fi .RE در اینجا مثالی آورده شده است که نمایه‌سازی تمامی نویسه‌های اسکی چاپ‌پذیر به جز حروف و ارقام را با فرض قالب پیش‌فرض \*(TX نشان می‌دهد. برای سهولت، ارجاعات شماره صفحه همان مقادیر ترتیبی اسکی متناظر هستند. .RS .nf \fC\\indexentry{" @" (space)}{32} \\indexentry{"!@"! (exclamation point)}{33} \\indexentry{""@"" (quotation mark)}{34} \\indexentry{"#@"\\# (sharp sign)}{35} \\indexentry{"$@"\\$ (dollar sign)}{36} \\indexentry{"%@"\\% (percent sign)}{37} \\indexentry{"&@"\\& (ampersand)}{38} \\indexentry{"<@"$<$ (left angle bracket)}{60} \\indexentry{"=@"= (equals)}{61} \\indexentry{">@"$>$ (right angle bracket)}{62} \\indexentry{"?@"? (query)}{63} \\indexentry{"@@"@ (at sign)}{64} \\indexentry{"[@"[ (left square bracket)}{91} \\indexentry{"\\@"\\verb=\\= (backslash)}{92} \\indexentry{"]@"] (right square bracket)}{93} \\indexentry{"^@"\\verb=^= (caret)}{94} \\indexentry{"_@"\\verb=_= (underscore)}{95} \\indexentry{"`@"\\verb=~= (grave accent)}{96} \\indexentry{"{@"\\"{ (left brace)}{123} \\indexentry{"|@"\\verb="|= (vertical bar)}{124} \\indexentry{"}@"\\"} (right brace)}{125} \\indexentry{"~@"\\verb=~= (tilde)}{126}\fP .fi .RE نویسه‌های موجود در فیلدهای واقعی (actual) پس از نویسه «@» که برای \*(TX معنای ویژه‌ای دارند، باید به صورت دنباله‌های کنترلی یا نویسه‌های حالت ریاضی نشان داده شوند. به ویژه توجه داشته باشید که ورودی‌های مربوط به علامت at، آکولادهای چپ و راست، و خط عمودی چگونه کدگذاری شده‌اند. فایل نمایه خروجی تولید شده توسط .I makeindex برای این مثال به شکل زیر است: .RS .nf \fC\\begin{theindex} \\item ! (exclamation point), 33 \\item " (quotation mark), 34 \\item \\# (sharp sign), 35 \\item \\$ (dollar sign), 36 \\item \\% (percent sign), 37 \\item \\& (ampersand), 38 \\item $<$ (left angle bracket), 60 \\item = (equals), 61 \\item $>$ (right angle bracket), 62 \\item ? (query), 63 \\item @ (at sign), 64 \\item [ (left square bracket), 91 \\item \\verb=\\= (backslash), 92 \\item ] (right square bracket), 93 \\item \\verb=^= (caret), 94 \\item \\verb=_= (underscore), 95 \\item \\verb=~= (grave accent), 96 \\item \\{ (left brace), 123 \\item \\verb=|= (vertical bar), 124 \\item \\} (right brace), 125 \\item \\verb=~= (tilde), 126 \\indexspace \\item (space), 32 \\end{theindex}\fP .fi .RE .\"===================================================================== .SH "فایل‌ها (FILES)" .TP 2.2i .I makeindex فایل اجرایی .TP .I $TEXMFMAIN/tex/plain/makeindex/idxmac.tex فایل ماکروی \*(TX استفاده شده توسط .I makeindex .TP .I $TEXMFMAIN/tex/latex/base/makeidx.sty فایل ماکروی \*(TX استفاده شده توسط .I makeindex .\"===================================================================== .SH "همچنین ببینید (SEE ALSO)" ditroff(1L), latex(1L), make.index (1L), qsort(3), tex(1L), troff(1L) .LP .IR "\*(Uc Enhanced troff/\*(Ts \(em An Overview" , R. P. C. Rodgers and Conrad Huang, LSMB Technical Report 90-2, UCSF School of Pharmacy, San Francisco, 1990. .LP .IR "Index Preparation and Processing" , Pehong Chen and Michael A. Harrison, .IR "Software: Practice and Experience" , .BR 19 (9), 897\(en915, September 1988. .LP .IR "Automating Index Preparation" , Pehong Chen and Michael A. Harrison. Technical Report 87/347, Computer Science Division, University of California, Berkeley, 1987 (یک سند \*(LX ارائه شده همراه با .IR makeindex ). .LP .IR "MakeIndex: An Index Processor for \*(LX" , Leslie Lamport, February 1987 (یک سند \*(LX ارائه شده همراه با .IR makeindex ). .LP .IR "Tools for Printing Indices" , Jon L. Bentley and Brian W. Kernighan, .IR "Electronic Publishing \(em Origination, Dissemination, and Design" , 1(1), 3\(en18, June 1988 (همچنین در دسترس به صورت: Computing Science Technical Report No. 128, AT&T Bell Laboratories, Murray Hill, NJ 07974, 1986). .\"===================================================================== .SH "نویسنده (AUTHOR)" Pehong Chen, Chen & Harrison International Systems, Inc. Palo Alto, California, USA. .br صفحه راهنما به طور گسترده توسط Rick P. C. Rodgers از UCSF School of Pharmacy بازبینی و تصحیح شده و مثال‌های .IR troff (1) توسط او ایجاد گردیده‌اند. .\"===================================================================== .SH "سپاسگزاری‌ها (ACKNOWLEDGMENTS)" Leslie Lamport سهم بسزایی در طراحی MakeIndex داشت. Michael Harrison نظرات و پیشنهادات ارزشمندی ارائه کرد. Nelson Beebe نسخه پرتابل را بهبود بخشید و توزیع منبع را برای سال‌های متمادی برای گروه کاربران \*(TX نگهداری کرد. Andreas Brosig در ترتیب کلمات آلمانی مشارکت داشت. اصلاح ماکروهای .B \-ms از روش پیشنهادی Ravi Sethi از آزمایشگاه‌های AT&T Bell برگرفته شد. فایل‌های .I LOG و .I CONTRIB در توزیع کد منبع .I makeindex سایر مشارکت‌ها را ثبت کرده‌اند. .PP .I makeindex در حال حاضر به عنوان بخشی از توزیع \*(TX Live نگهداری می‌شود (https://tug.org/texlive)؛ لطفاً گزارش‌های اشکال را به tex-k@tug.org ارسال کنید.