در محیط latin ارقام متن با کاراکترهای لاتین حروفچینی میشوند اما ارقام بین $$ با کاراکترهای فارسی. بهتر نیست که همگی لاتین حروفچینی شوند؟ در حالت کلی آیا راه دیگری برای نوشتن ارقام لاتین در فرمول وجود دارد (با فرض \setdigitfont{a_persian_font})؟
نقل قول از: فرشاد عبداللهنیا در اکتبر 29, 2009, 10:51:39 قبل از ظهر
در محیط latin ارقام متن با کاراکترهای لاتین حروفچینی میشوند اما ارقام بین $$ با کاراکترهای فارسی. بهتر نیست که همگی لاتین حروفچینی شوند؟ در حالت کلی آیا راه دیگری برای نوشتن ارقام لاتین در فرمول وجود دارد (با فرض \setdigitfont{a_persian_font})؟
میتونی کد زیر رو در سرآغاز قرار بدی
\makeatletter
\newcommand\setLTRmain{\@RTL@footnotefalse\@RTLfalse\@RTLmainfalse\let\normalfont\latinfont\latinfont
\setdigitfont[ExternalLocation,BoldFont={lmroman10-bold},BoldItalicFont={lmroman10-bolditalic},ItalicFont={lmroman10-italic}]{lmroman10-regular}
\SetMathCode{`0}{\mathalpha}{OPERATORS}{"0030}
\SetMathCode{`1}{\mathalpha}{OPERATORS}{"0031}
\SetMathCode{`2}{\mathalpha}{OPERATORS}{"0032}
\SetMathCode{`3}{\mathalpha}{OPERATORS}{"0033}
\SetMathCode{`4}{\mathalpha}{OPERATORS}{"0034}
\SetMathCode{`5}{\mathalpha}{OPERATORS}{"0035}
\SetMathCode{`6}{\mathalpha}{OPERATORS}{"0036}
\SetMathCode{`7}{\mathalpha}{OPERATORS}{"0037}
\SetMathCode{`8}{\mathalpha}{OPERATORS}{"0038}
\SetMathCode{`9}{\mathalpha}{OPERATORS}{"0039}
\SetMathCharDef{\decimalseparator}{\mathpunct}{OPERATORS}{"002E}
}
\makeatother
و هروقت خواستی با فرمان
\setLTRmain
از آن استفاده کنی. مسلما اگر خواستی به اعداد فارسی برگردی باید دوباره قلم اعداد رو به فارسی تعریف کنی.
متأسفانه روشی که مدی پیشنهاد کرد راهحل خوبی نیست و بعد از دو سه بار عوض کردن محیط فارسی و لاتین و با استفاده از دستوری که مهدی تعریف کرده است با خطا مواجه خواهید شد. این کار بسیار سختی است از این جهت که لاتک بصورت استاندارد به شما اجازه نمیدهد که قلم ریاضی را بعد از \begin{document} عوض کنید. این مشکل (یعنی فارسی شدن و یا لاتین شدن اعداد در فرمولها با استفاده از دستورات بدوی \everymath و \everydisplay انجام شده است و در نسخه آزمایشی زیپرشین موجود میباشد یعنی هر موقع در محیط فارسی هستیم از عدد فارسی در فرمول و هر موقع در محیط لاتین هستیم از عدد لاتین در فرمول استفاده میشود. و دستوراتی هم برای عوض کردن رقم بصورت دستی در فرمول وجود دارد که الان اسم دقیقش را به خاطر ندارم. برای اطلاعات بیشتر آخرین نسخه زیپرشین را از repository دریافت کنید و فایل xepersian-mathsdigitspec.sty را نگاه کنید.
خلاصه: برای حل مشکلتان از آخرین نسخه زیپرشین و bidi در repository باید استفاده کنید.
من فکر کنم از آخرین نسخهای که روی CTAN هست (۵ سپتامبر) استفاده میکنم و این مشکل رو دارم. آیا منظورتون از repository جای دیگری است؟ تغییری در کد لازم نیست ایجاد کنم؟
نمیدونم. معمولاً نسخه آزمایشی رو از کجا دانلود میکنید.
برای آگاهی از آدرس و چگونگی دانلود نسخههای آزمایشی، به آخرین روشی که در اینجا (http://www.parsilatex.com/mediawiki/index.php?title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_%D8%A8%D9%87%E2%80%8C%D8%B1%D9%88%D8%B2%D8%B1%D8%B3%D8%A7%D9%86%DB%8C_%D8%B2%DB%8C%E2%80%8C%D9%BE%D8%B1%D8%B4%DB%8C%D9%86%86)توضیح داده شده است مراجعه نمایید.
مدیریت: تصحیح لینک ویکی