اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
Close Sidebar
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

محبوب‌ترین برچسب‌ها

رفع خطا جدول مراجع xepersian ریاضی‌نویسی شکل فونت فهرست مطالب شماره‌گذاری bidi منابع پانویس بیب‌تک tikz parsilatex تک‌لایو بیمر اسلاید زی‌پرشین پاورقی bibtex سربرگ نماد رسم شکل فرمول‌نویسی قالب ارجاع‌دهی biditexmaker هدر ویرایشگر beamer واژه‌نامه اندازه فونت texstudio عنوان فصل ماتریس اعمال نشدن تغییرات در پی‌دی‌اف رسم جدول bidipresentation شماره صفحه حاشیه رنگ عنوان شکل اسلاید فارسی محیط قضیه گراف مکان شکل tikzpicture حروف‌چینی کد شماره فصل enumerate tabriz_thesis نمایه align زیرنویس شکل کادر itemize فهرست اشکال الگوریتم listings عدم اجرا نیم‌فاصله متن لاتین و فارسی بسته فاصله بین خطوط قالب پایان‌نامه فرمول نصب تک‌لایو فارسی‌تک hyperref شماره فرمول glossaries کپشن نمودار خروجی لاتک حروف‌چینی چندستونی فونت فارسی و انگلیسی ماکرونویسی biditools شماره پاورقی پیوست‌ سوال امتحانی فاصله‌گذاری فرمول چندضابطه‌ای subfigure extrafootnotefeatures biditufte-book header texmaker pdf tex longtable تصویر شمارنده خطا texlive2015 زیرنویس رسم نمودار شماره‌گذاری صفحات پایان نامه دیاگرام فهرست جداول میک‌تک texlive2016 تنظیم جدول آکولاد kashida texworks caption اندیس اعداد فارسی lollipop iust-thesis multicol فصل‌نویسی شعر سوال چهارگزینه‌ای بولد تورفتگی فاصله عمودی xindy چپ‌چینی اوبونتو میکروسافت ورد قاب geometry texlive fancyhdr وسط‌چینی تک لایو 2015 عنوان بخش شماره گذاری به‌روزرسانی بسته aimc46 صفر توخالی فرمول طولانی pgfplots بیرون‌زدگی xelatex کاما tcolorbox پوستر فاصله سطرها نوشتافت شکست خط tex-programming فونت اعداد قرآن tabriz-thesis ایتالیک winedt جستجوی معکوس فلش جایابی تصویر قالب کتاب پاراگراف‌بندی بازیابی اطلاعات هایپرلینک فهرست نمادها شمارنده فصل font محیط ریاضی رسم کادر جداکننده جدول طولانی فهرست تصاویر شماره‌گذاری فرمول algorithm2e فونت بولد proof equation bidipoem eps جدول افقی عکس به‌روزرسانی پانویس چندستونی کمک مالی فاصله خطوط حروف‌چینی شعر زیرشکل minipage قلم پانویس پاراگرافی ltrfootnote پیوست computeautoilg متن فارسی و انگلیسی فرمول چندخطی neveshtuft غلط‌گیری املایی تک‌پارسی پیکان لاتکس tabular baselineskip شماره قسمت قسمت عنوان جدول
8 نفر آنلاین
0 عضو و 8 مهمان در سایت حاضرند
بازدید امروز: 37511
بازدید دیروز: 51339
بازدید کل: 26024601

چرا ترتیب الفبایی کلمات نمایه‌شده در صورت استفاده از کاما به هم می‌خوره؟

+1 رای
3,767 بازدید

کد پایین رو ببینین:

\documentclass{book}
\usepackage{makeidx}
\makeindex
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
مقداری متن...

\index{احمد، وحید}
\index{احمدی، وحید}

\printindex
\end{document}

اگه این کد رو با اسم simple-index.tex ذخیره کنم و دستور

xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges simple-index.idx

رو روش اجرا کنم، خروجی
enter image description here
رو می‌گیرم. همون‌طور که می‌بینین، ترتیب حروف، درست رعایت نشده؛ اما اگه کامای وسط دستورهای \index‍‍‍‍‍ رو حذف کنم، ترتیب، درست می‌شه. این یه باگه؟ چطور می‌شه درستش کرد؟

فایل‌های پیوست
سوال شده اسفند 20, 1399 توسط وحید دامن‌افشان (6,499 امتیاز)
ویرایش پاسخ من را برای یک راه موقت بدون کامپایل سورس با Perl ببین.
این پرسش رو ببینید: http://qa.parsilatex.com/36408

3 پاسخ

+1 رای
 
بهترین پاسخ

این مشکل در نسخه 0.8 بسته xindy-persian حل شده. برای اطلاعات بیشتر این پرسش را ببینید.

من دسترسی به کامپیوتر ندارم بنابراین راهنمایی که می‌کنم فقط براساس پرسش خودت و اطلاعاتی هست که دادی. توی فایلهای زیندی یک فایل هست که پسوندش آخرش pl هست که فایل سورس هست توی این فایل باید یک قسمتی به نام special وجود داشته باشه احتمالا کامای پارسی از لیست کاراکترهای موجود در اینجا جا افتاده کافیه اضافه کنی و این فایل سورس رو با Perl کامپایل کنی. اینکه تا حالا بعد از بیشتر از ۱۰ سال این مشکل گزارش نشده عجیبه.

به جز راهی که گفتم یک راه موقت میتونه این باشه که یک فایل به نام mypunct.xdy درست کنی که حاوی تنها یک سطر هست

(sort-rule "،" "")

موقع استفاده از زیندی باید از این استایل جدید هم استفاده کنی

xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges -M mypunct simple-index.idx
پاسخ داده شده فروردین 6, 1400 توسط وفا (24,609 امتیاز)
ویرایش شده فروردین 14, 1400 توسط وفا
درود
برای راحتی، فایل‌های مربوطه اینجاست
C:\texlive\20XX\texmf-dist\xindy\modules\lang\persian

نقطه‌ویرگول «؛» هم اضافه بشه خوبه به‌نظرم
ویرایش پاسخ من را برای یک راه موقت بدون کامپایل سورس با Perl ببین.
بسیار عالی
سپاس
@وفا: ممنونم. درست شد.
این مشکل رو کجا گزارش کنم تا توی به‌روزرسانی بعدی درست بشه؟
این پرسش رو ببینید: http://qa.parsilatex.com/36408
+1 رای

سلام
همون‌طور که توی پیام‌هام اشاره کردم، مشکل از ویرگول فارسی است که به‌نظرم می‌بایست در تعریف فایل‌های مربوط به persian-variant بازنگری بشه؛ شایدم اشتباه می‌کنم.
ولی راه ساده‌تر برای رفع مشکل، اینه که در دستور \index، به‌جای ویرگول فارسی، از کامای انگلیسی استفاده بشه. هم ترتیب درست می‌شه و هم اینکه در خروجی، همون ویرگول فارسی ظاهر خواهد شد.

\documentclass{book}

\usepackage{makeidx}
\makeindex

\usepackage{xepersian}
\settextfont{Yas}

\begin{document}
مقداری متن

\index{احمد, وحید}
\index{احمدی, وحید}
\index{احمدب, وحید}

\printindex
\end{document}

خروجی:

برای دیدن عکس با کیفیت بالا، در یک تب جدید باز کنین.

enter image description here

ویرایش:

اگه سندتون نوشته شده و امکان تغییر ویرگول به کاما سخته، می‌تونین آخرین اجرا رو به‌صورت زیر داشته باشین:

1. xelatex
2. change idx file (virgool to comma with Replace tool in notepad or every text editor)
3. xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges *.idx
4. xelatex
پاسخ داده شده فروردین 4, 1400 توسط بهمن میرزاخانی (3,248 امتیاز)
ویرایش شده فروردین 4, 1400 توسط بهمن میرزاخانی
ممنون. این مشکل یکی از دوستامه که کتابش رو نوشته و همه نمایه‌هاش، اسامی اشخاصه و حالا با این مشکل روبرو شده. سخته که بخواد تک‌تک صفحات رو باز کنه و کاماهای فارسی رو به انگلیسی تغییر بده.
راه ساده‌تری هم داره.
بعد از اینکه یه بار با xelatex اجرا کردن، برن فایل با پسوند idx رو باز کنن و با یک replace ساده، همۀ ویرگول‌های فارسی رو به کاما تبدیل کنن و بعد، اون دستور زیندی رو اجرا کنن و بعد بازم xelatex و...

درواقع اجرای آخرشون بایستی به اون صورت باشه. یعنی

xelatex
change idx file (virgool to comma)
xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges *.idx
xelatex
به راحتی می‌شه با regex کاماهای فارسی رو به انگلیسی تغییر داد.
برای مثال تو ویرایشگر TeXworks کافیه
(index\{.+)،(.+\})
رو با
\1,\2
عوض کنید.
حتماً گزینه Regular expression رو تیک بزنید.
می‌تونید همه فایل‌های مربوط رو باز کنید و تیک Replace in all open files رو هم بزنید تا همه با هم اصلاح بشن.
0 رای

سلام
این بسته makeidx خیلی وقته قدیمی هست و ناسازگار با فارسی، عربی و ...
پیشنهاد می‌کنم از xindy که خیلی بروزتره استفاده کنی کلا برای این کارها.

از بس این باگ و ... لاتک یا TeX اذیت‌مون میکنه اصلا نمیرم سمتش ببینم چی به چیه.
مثلا میایم ۳۰ تا section پشت سر هم میزنیم. از حاشیه صفحه میزنه بیرون و میره پایین صفحه غیب میشه.
لاتک و TeX و هر چی هم میخاد تقصیرش باشه، دیگه خسته مون کرد این باگهاش.
دیگه روم نمیشه بگم به کسی لاتک از ورد بیل‌گیتس بهتره!
گیت بزرگ ورد بیل [گیت]س! رو ول کردیم رفتیم از سوراخ کوچک ته سوزنی باگ‌های رفع نشوی لاتک میخاین خودمونو رد کنیم با بارمون!....

بخاطر اینا دنبال حل مشکلم با یک بسته دیگه میرم تا پیدا کردن پرتغال فروش در دنیای TeX که میگه:

NO WARANTY

\documentclass{book}
\usepackage[index,style=indexgroup]{glossaries}
\usepackage{xepersian}
\settextfont{Yas}
\makeindex

\newglossaryentry{احمدب، وحید}{name={احمدب، وحید},sort={ا},description={احمدب، وحید}}

\newglossaryentry{احمدی، وحید}{name={احمدی، وحید},sort={ا},description={احمدی، وحید}}
\begin{document}
مقداری متن \ldots{}

\index{احمدب،  وحید}
\index{احمدی، وحید}

\printindex
\end{document}

ممکنه استفاده‌ی من در تعریف new... درست نباشه. خودت بررسی کن راهنمای بسته چی نوشته.
اما فعلا خروجیش درسته.

enter image description here

دستور زیندی هم این بود که اجرا گرفتم:

xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges %.idx
  • و جسارت نشه یک پیشنهاد. (تا سوال برای کاربران آینده قابل فهم‌تر باشه.)
    مثال‌هایی که میذاریم بهتره مثلا ساده باشه.
    مثلا احمد و احمدی رو یک کاربر تازه‌کار مثل من! تشخیص نمیده کدومش باید اولش باشه.
    ولی مثلا احمدب و احمدص و احمدی ساده‌تره.

موفقتر باشی.

پاسخ داده شده فروردین 3, 1400 توسط هادی صفی‌اقدم (7,570 امتیاز)
ویرایش شده فروردین 3, 1400 توسط هادی صفی‌اقدم
سلام
مشکل همچنان باقیست.
من یه بار فایل‌های مربوط به persian-variant رو نگا می‌کردم، از ویرگول در بعضی جاها استفاده شده که به‌نظرم نباید استفاده می‌شد.
یه راهش می‌تونه این باشه که ترتیب ویرگول رو بندازیم بعد از حروف؛ نمی‌دونم امکان‌پذیر باشه یا نه!
هادی جان فرض کن من یه کتاب تاریخی نوشتم که نمایه‌هام، اسامی اشخاصه. با روش تو باید واسه مثلاً ۵۰۰ تا اسمم، ۵۰۰ تا دستور newglossaryentry بزنم؟! منطقی نیست.
@ وحید دامن افشان
میتونی یک دستور تعریف کنی که هر جا index کردی یک کلمه رو، اون newglossaryentry رو هم قبلش تولید کنه.
و ممکنه راهنمیا بسته‌ زیندی و ... رو ببینین، راه ساده‌تری باشه. من با این بسته زیاد کار نکرده‌ام.
@بهمن میرزاخانی
سلام. مشکل رو میشه بیشتر توضیح بدین بیزحمت؟
@هادی صفی اقدم
برای اسامی احمد و احمدی، همچنان ترتیب درست نیست.
البته ناگفته نماند که برای اسامی احمدب و احمدی، روش آقای دامن‌افشان هم درست کار می‌کنه! یعنی در خروجی، هیچ تفاوتی بین روش شما و روش آقای دامن‌افشان نیست.
یه نگاهی به این فایل‌ها بندازین. من فکر می‌کنم اینجا ترتیب حروف و ویرگول رو می‌شه اصلاح کرد.
https://github.com/persiantex/xindy-persian
...