ابزارهای جانبی > نمایهساز MakeIndex
تولید نمایه با یک کد خاص به جای شماره صفحه.
فرشاد ترابی:
با سلام خدمت دوستان گرامی
به عکس پیوست دقت کنید. دوتا مقاله در یک صفحه وجود داره که خود صفحه به جای شمارهی صفحه دارای یک کد هست که در بالا سمت راست دورش را با رنگ سبز مشخص کردم.
همچنین به ازای هر مقاله یک شمارنده به کد بالا اضافه میشه که آنها را نیز با رنگ قرمز مشخص کردم.
حالا سوال این است. من میخواهم برای این مجله نمایه تولید کنم (کلام مجله انگلیسی است و نمایه را با MakeIndex تولید میکنم). اما چون مقاله شماره صفحه نداره،
میخواهم که به جای شماره صفحه کدهای قرمز رنگ در نمایه ظاهر بشه. خودم فکر کردم اگر دستور \thepage را عوض کنم میشه این کار را انجام بدم. اما در فایل
کمینه که ساختم این اتفاق نمیفته. دوستان لطفا راهنمایی کنید.
با تشکر
فرشاد ترابی:
تا اینجاش رو پیش رفتم که باید نحوه نگارش صفحه در فایل را عوض کرد که ظاهرا با بسته imakeidx براحتی مطابق فایل پیوست میشه این کار را انجام داد.
اما ظاهرا MakeIndex فقط روی اعداد مثبت عمل میکنه و بنابراین هنگامی که فایل MakeIndex را پردازش میکنیم آنچه که در فایل .idx پیوست مشاهده میشه
به صورت درستی پردازش نشده و فایل .ind مطابق آنچه که پیوست شده، یک فایل اشتباه هست. راه حل هم این است که با xindy این مسأله حل بشه.
اگر دوستان میتوانند در مورد xindy کمک کنند ممنون میشوم چون روشی که در این صفحه بیان شده را متوجه نمیشوم.
vafa:
--- نقل قول از: فرشاد ترابی در اكتبر 04, 2014, 09:47:28 am --- دوتا مقاله در یک صفحه وجود داره که خود صفحه به جای شمارهی صفحه دارای یک کد هست که در بالا سمت راست دورش را با رنگ سبز مشخص کردم.
--- End quote ---
آیا منظور شما اینه که مثلاً صفحه اول A1 است، صفحه دوم A2 و بصورت کلی صفحه kام Ak?
--- نقل قول ---میخواهم که به جای شماره صفحه کدهای قرمز رنگ در نمایه ظاهر بشه. خودم فکر کردم اگر دستور \thepage را عوض کنم میشه این کار را انجام بدم. اما در فایل
کمینه که ساختم این اتفاق نمیفته. دوستان لطفا راهنمایی کنید.
--- End quote ---
اگر فهم من از ماره صفحه در سوالی که کردم درست باشد، شما نمیخواهید شماره صفحه در نمایه ظاهر شود بله میخواهید شماره مقاله در نمایه ظاهر شود مثلاً اگر مقالهاولی در نمایه بود روبرویش میخواهید A3.1 باشه، درسته؟ در اینصورت باید تعریف دستور \index را عوض کنید و یا دستور جدیدی تعریف کنید. احتمالاً نیاز باشه که یک استایل جدید makeindex یا xindy هم بنویسید.
vafa:
نمونه زیر را ساختم که برای من مشکلی ندارد:
--- کد: ---\documentclass{article}
\usepackage{zref-perpage}
\renewcommand*{\thepage}{A\arabic{page}}
\usepackage{makeidx}
\makeindex
\newcounter{myarticle}
\zmakeperpage{myarticle}
\renewcommand*{\themyarticle}{A\arabic{page}.\arabic{myarticle}}
\newenvironment{myarticle}{%
\refstepcounter{myarticle}
\textbf{Article Number \themyarticle}
}{}
\makeatletter
\def\@wrindex#1{%
\protected@write\@indexfile{}%
{\string\indexentry{#1}{\themyarticle}}%
\endgroup
\@esphack}
\makeatother
\begin{document}
\begin{myarticle}
This is the first article on the first page\index{About}
\end{myarticle}
\bigskip
\begin{myarticle}
This is the second article on the first page \index{test}
\end{myarticle}
\newpage
\begin{myarticle}
This is the first article on the second page\index{boat}
\end{myarticle}
\bigskip
\begin{myarticle}
This is the second article on the second page \index{golf}
\end{myarticle}
\newpage
\begin{myarticle}
This is the first article on the third page\index{zebra} \index{yard}
\end{myarticle}
\bigskip
\begin{myarticle}
This is the second article on the third page \index{xeroxes}\index{polynomial}
\end{myarticle}
\printindex
\end{document}
--- End code ---
در این نمونه من از makeindex استفاده کردم.
فرضیات من در این نمونه:
۱) تعداد دو مقاله یا بیشتر (هر تعداد که صفحه جا داشته باشد) در یک صفحه ظاهر میشود.
۲) شماره مقاله در هر صفحه reset میشود.
vafa:
در نمونهای که فرستادم، اگر \index تکراری در دو سه جا باشد، فقط \index اولی چاپ خواهد شد. متأسفانه makeindex به قدری باز نیست که بتوان همه چیز را تغییر داد. اما با xindy میشه. کافی است یک فایل به نام myarticle.xdy با محتویات زیر ایجاد کنید:
--- کد: ---(define-location-class "myarticle-numbers" ("ALPHA" "arabic-numbers" :sep "." "arabic-numbers"))
--- End code ---
کد بالا برای زیندی تعریف میکنه که شماره مقاله از یک A ، یک عدد، نقطه و یک عدد تشکیل شده است. این باعث میشه تا زیندی شمارهها رو بفهمه و خطا نده. برای گرفتن فایل .ind هم دستور زیر رو اجرا باید کنید:
--- کد: ---xindy -L english -C utf8 -M texindy -M page-ranges -M myarticle filename.idx
--- End code ---
کنترل
[0] صندوق پستی
[#] صفحه بعدی
Go to full version