تالار گفتگوی پارسیلاتک
ابزارهای جانبی => نمایهساز MakeIndex => نويسنده: فرشاد ترابی در اكتبر 04, 2014, 09:47:28 am
-
با سلام خدمت دوستان گرامی
به عکس پیوست دقت کنید. دوتا مقاله در یک صفحه وجود داره که خود صفحه به جای شمارهی صفحه دارای یک کد هست که در بالا سمت راست دورش را با رنگ سبز مشخص کردم.
همچنین به ازای هر مقاله یک شمارنده به کد بالا اضافه میشه که آنها را نیز با رنگ قرمز مشخص کردم.
حالا سوال این است. من میخواهم برای این مجله نمایه تولید کنم (کلام مجله انگلیسی است و نمایه را با MakeIndex تولید میکنم). اما چون مقاله شماره صفحه نداره،
میخواهم که به جای شماره صفحه کدهای قرمز رنگ در نمایه ظاهر بشه. خودم فکر کردم اگر دستور \thepage را عوض کنم میشه این کار را انجام بدم. اما در فایل
کمینه که ساختم این اتفاق نمیفته. دوستان لطفا راهنمایی کنید.
با تشکر
-
تا اینجاش رو پیش رفتم که باید نحوه نگارش صفحه در فایل را عوض کرد که ظاهرا با بسته imakeidx براحتی مطابق فایل پیوست میشه این کار را انجام داد.
اما ظاهرا MakeIndex فقط روی اعداد مثبت عمل میکنه و بنابراین هنگامی که فایل MakeIndex را پردازش میکنیم آنچه که در فایل .idx پیوست مشاهده میشه
به صورت درستی پردازش نشده و فایل .ind مطابق آنچه که پیوست شده، یک فایل اشتباه هست. راه حل هم این است که با xindy این مسأله حل بشه.
اگر دوستان میتوانند در مورد xindy کمک کنند ممنون میشوم چون روشی که در این صفحه (http://tex.stackexchange.com/questions/180141/how-to-make-index-entries-refer-to-section-numbers-and-or-figure-table-numbers) بیان شده را متوجه نمیشوم.
-
دوتا مقاله در یک صفحه وجود داره که خود صفحه به جای شمارهی صفحه دارای یک کد هست که در بالا سمت راست دورش را با رنگ سبز مشخص کردم.
آیا منظور شما اینه که مثلاً صفحه اول A1 است، صفحه دوم A2 و بصورت کلی صفحه kام Ak?
میخواهم که به جای شماره صفحه کدهای قرمز رنگ در نمایه ظاهر بشه. خودم فکر کردم اگر دستور \thepage را عوض کنم میشه این کار را انجام بدم. اما در فایل
کمینه که ساختم این اتفاق نمیفته. دوستان لطفا راهنمایی کنید.
اگر فهم من از ماره صفحه در سوالی که کردم درست باشد، شما نمیخواهید شماره صفحه در نمایه ظاهر شود بله میخواهید شماره مقاله در نمایه ظاهر شود مثلاً اگر مقالهاولی در نمایه بود روبرویش میخواهید A3.1 باشه، درسته؟ در اینصورت باید تعریف دستور \index را عوض کنید و یا دستور جدیدی تعریف کنید. احتمالاً نیاز باشه که یک استایل جدید makeindex یا xindy هم بنویسید.
-
نمونه زیر را ساختم که برای من مشکلی ندارد:
\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}
در این نمونه من از makeindex استفاده کردم.
فرضیات من در این نمونه:
۱) تعداد دو مقاله یا بیشتر (هر تعداد که صفحه جا داشته باشد) در یک صفحه ظاهر میشود.
۲) شماره مقاله در هر صفحه reset میشود.
-
در نمونهای که فرستادم، اگر \index تکراری در دو سه جا باشد، فقط \index اولی چاپ خواهد شد. متأسفانه makeindex به قدری باز نیست که بتوان همه چیز را تغییر داد. اما با xindy میشه. کافی است یک فایل به نام myarticle.xdy با محتویات زیر ایجاد کنید:
(define-location-class "myarticle-numbers" ("ALPHA" "arabic-numbers" :sep "." "arabic-numbers"))
کد بالا برای زیندی تعریف میکنه که شماره مقاله از یک A ، یک عدد، نقطه و یک عدد تشکیل شده است. این باعث میشه تا زیندی شمارهها رو بفهمه و خطا نده. برای گرفتن فایل .ind هم دستور زیر رو اجرا باید کنید:
xindy -L english -C utf8 -M texindy -M page-ranges -M myarticle filename.idx
-
جناب آقای کارنپهلو
با تشکر از شما مشکل من حل شد. البته به علت کسالت شخصی مدتی طول کشید تا از زحمات شما تشکر کنم. امیدوارم هرکجا که هستید همواره سلامت باشید.
-
امیدوارم هر چه زودتر سلامتی خود را بدست بیاورید.
-
ممنون از شما
یک سوال دیگر هم در این زمینه داشتم. الان تگهایی که در مقاله وجود داره به سه فرمت هست یعنی
1. بعضیها دقیقا مشابه با آن چیزی هستند که شما درست کردید یعنی A1.1 الی آخر
2. بعضیها دارای دو حرف هستند یعنی Th.1 و Th.2 و الی آخری
3. بعضیها دارای حروف بیشتر هستند یعنی Poster.1 و Poster.2 و الی آخر
وقتی از دستور فوق در زیندی استفاده میشه، کلا فقط حالت اول را مرتب میکند. برای آنکه هر سه حالت شامل بشه باید چکار کرد؟
-
در نمونهای که من فرستادم شماره مقاله میتوانست A2.1 باشد. با مثال شما آیا شماره مقاله Th2.1 و Poster2.1 میتواند باشد؟ ترتیب دقیق شمارهگذاری چگونه است؟
-
اگر محتوای فایل myarticly.xdy رو به کد زیر تغییر بدهید نباید مشکلی داشته باشید. البته امیدوارم نظور شما رو اشتباه متوجه نشدم باشم:
(define-location-class "myarticle-numbers-i" ("ALPHA" "arabic-numbers" :sep "." "arabic-numbers"))
(define-location-class "myarticle-numbers-ii" ("ALPHA" :sep "." "arabic-numbers"))
-
این سه نوع هستند
Type 1: A1.1, A1.2, A1.3 .... B1.1, B1.2, B1.3 .... B2.1, B2.2 ....
Type 2: Th1.1, Th1.2, Th1.3 .... We1.1, We1.2 ....We2.1, We.2, ...
Type 3: Poster.1, Poster.2, Poster.3 ....
در حال حاضر نوع 1 کاملا پوشش داده میشه چون از قانون پیروی میکنه. یعنی یک حرف یک عدد یک نقطه و یک عدد.
اما اگر دو حرف یا بیشتر پشت سرهم باشه قاطی میکنه. سعی کردم دوتا قانون تعریف کنم ولی هیچ تغییری انجام نداد.
اگر یک راهنمایی کوچک بفرمایید که هر قسمت این خط زیندی چه مفهومی داره و گزینههاش را از کجا میشه مطالعه کرد و یاد گرفت ممنون میشم.
-
http://www.xindy.org/doc/tutorial-3.html
-
ممنون از راهنمایی شما
من متوجه شدم که باید از define-alphabet برای تعریف تگها و شمارنده استفاده کنم. امروز از کنفرانس با من تماس گرفتند و گفتند که شکل تگها عوض شده و
به دو صورت در آمده
1. سه حرف و یک عدد مثل ThD1.1 و الی آخر
2. فقط کمله Poster به صورت Poster.1 و الی آخر
من با توجه به لینکی که شما دادید فرمت فایل پیوست را نوشتم، از آنجا که بعد از Poster قرار نیست عددی باشد، در تعریف "digits" یک "" هم قرار دادم اما عمل نمیکنه
از آنجا که وقت کمی داشتم، به فکرم رسید که کلا بیخیال عدد چهارم در فرمت بالا بشم و تمامی حالات ممکنه را دستی بنویسم که در فایل هم مشاهده میشود.
این روش اگرچه جواب میدهد و مشکل من را در این مدت کوتاه حل میکند اما راه اصولی نیست. چطور میشه به زیندی فهموند که بعد از "tags" مکنه یک عدد باشه
و ممکنه نباشه؟
برای بررسی کل فایل idx به همراه xdy را ارسال کردم.
-
چطور میشه به زیندی فهموند که بعد از "tags" مکنه یک عدد باشه
و ممکنه نباشه؟.
دو تا location-class تعریف میکنید: یکی با عدد و دیگری بدون عدد.
-
بله درست شد. فقط میشه توضیح بدید که چرا در "digits" حرف تهی یا "" نمیتونه وجود داشته باشه؟ به همین علت که تهی هست؟
-
بله درست شد. فقط میشه توضیح بدید که چرا در "digits" حرف تهی یا "" نمیتونه وجود داشته باشه؟ به همین علت که تهی هست؟
دقیقاً. تنها جایی که شما میتونید از "" استفاده کنید برای :sep است (جداکننده). "" به عنوان الفبا معنایی ندارد.