تالار گفتگوی پارسیلاتک
لاتک LATEX => حروفچینی مستندات => نويسنده: ابوالفضل دیانت در سپتامبر 08, 2014, 09:59:49 am
-
با سلام
هنگامی که با بسته glossaries و xepersian نوشتاری را تهییه می کنم با چهار نوع نمایه سروکار دارم.
الف) نمایه معمولی:
\index{شبکه}
ب) نمایه انگلیسی:
\index{Hello World}
که البته نمایه انگلیسی باید در بین \lr{} باشد.
\index{\lr{Hello World}}
ج و د) نمایههایی که به صورت یک واژه و یا اختصار با بسته glossaries تعریف شده است، و می خواهیم فقط در index، برچسب آن ها داده شود، و خود نمایه در متن چاپ شود.
با استفاده از نکته ای که در پیوند
مشکل تولید نمایه با بسته glossaries (http://www.parsilatex.com/forum/SMF/index.php?topic=5835.msg29651#msg29651)
بیان شد، من دستور index را به گونه ای overwrite کردم که بتوان بدون این که دستور جدیدی تعریف کرد همه این چهار نوع را با index درست کنیم.
\let\oldindex\index
\renewcommand{\index}[1]{
\ifthenelse{\equal{\glsentrytype{#1}}{english}}
{\expandafter\oldindex\expandafter{\glsentrytext{#1}}}
{ \ifthenelse{\equal{\glsentrytype{#1}}{acronym}}
{\expandafter\oldindex\expandafter{\glsentrytext{#1}}}
{\oldindex{#1}}
}
}
اما دو مشکل:
۱) با استفاده از این تعریف دیگر نمایه های به صورت :
\index{\lr{Hello World}}
با خطا مواجه می شوند.
۲) ویرگول نمایه های اختصارات در سمت راست کلمه قرار داده می شود که این یعنی کلمه انگلیسی از سمت درستی چاپ نشده است.
مثال نمونه اتچ شده است.
باتشکر
-
مشکل اول مشکل expansion هست که درست انجام نمیدهی. اگر به جای \lr هر دستر دیگری قرار بدهی، همین خطا رو میگیری (برای امتحان به جای \lr دستور \textbf بگذار). مشکل دوم را هم قبلاً بهت توضیح دادهام.