کاربرانی که در فارسی تک به تایپ فرمولهای ریاضی پرداختهاند، میدانند که وقتی شما از دستور lim\ در محیطهای ریاضی استفاده کنید، زیر وند آن به جای اینکه در زیر کلمه lim نوشته شود، در سمت راست پایین این کلمه قرار میگیرد. این مشکل در محیطهای ریاضی که با $$ شروع میشوند اتفاق نمیافتد.
قبل از تعریف مجدد دستور lim\ باید تصمیم بگیرید که عبارت قرار گرفته در جلوی دستور lim\ به چه صورت باشد. وقتی شما از دستور frac\ در در بین دو $ استفاده میکنید، اندازه فونت مورد استفاده برای صورت و مخرج کسر تغییر میکند و کوچکتر میشود. اما اگر از همین دستور در بین دو $$ استفاده کنید، دیگر این تغییر اندازه انجام نمیگیرد! پس قبل از تعریف مجدد دستور باید تصمیم بگیرید که دستور lim\ به کدام سبک عمل کند. (هر دو روش در این پست گفته میشود.)(البته قبلاً راهی توسط خودم برای رفع این مشکل ارائه شده بود ولی تعریف دوباره دستور lim\ راحتترین راه ممکن است.)
تعریف مجدد دستور lim\ (حالت اول):
برای این حالت دستور lim\ را چنان تعریف میکنیم که اگر دستور frac\ بعد از دستور lim\ استفاده شود، تغییر اندازه فونت اعمال شود. من استفاده از همین حالت را پیشنهاد میکنم. چون فرمولهایی که در بین دو $ قرار میگیرند، اکثراً در بین مطالب فارسی استفاده میشوند و عدم اعمال تغییر اندازه فونت سبب زشت شدن متن تایپ شده میشود. شما میتوانید دستور lim\ را به همین حالت تعریف کنید و در مواقعی که نیاز دارید این دستور مانند حالت دوم عمل کند، از دستور displaystyle\ در قبل از دستور lim\ استفاده کنید.
برای حالت اول lim\ را به صورت زیر تعریف کنید:(کدهای حالت اول از کدهای حالت دوم بیشتر است.)
\makeatletter
\let\@oldlim=\lim
\def\@subscript_#1{\@ifnextchar ^ {\@subsuperscript_{#1}}{\bgroup\displaystyle\@oldlim_{#1}\egroup}}
\def\@superscript^#1{\@ifnextchar _ {\@supersubscript^{#1}}{\bgroup\displaystyle\@oldlim^{#1}\egroup}}
\def\@subsuperscript_#1^#2{\bgroup\displaystyle\@oldlim_{#1}^{#2}\egroup}
\def\@supersubscript^#1_#2{\bgroup\displaystyle\@oldlim^{#1}_{#2}\egroup}
\def\lim{\@ifnextchar _ {\@subscript}{\@ifnextchar ^ {\@superscript}{\bgroup\displaystyle\@oldlim\egroup}}}
استفاده از این همه کد به علت مشکلهایی است که خود LaTeX (یا TeX) ایجاد میکند.
تمام دستورهای مورد استفاده در این کد، قبلاً در وبلاگ معرفی شدهاند(به جز یک مورد). با این حال من از تشریح کد خودداری میکنم. (در صورت نیاز تشریح کد در قسمت نظرات مطرح کنید یا با ایمیل به من اطلاع دهید.)
مثال:
کدهای زیر را در یک سند فارسیتک تایپ کنید:
>\documentstyle[farsi]{article}
>\begin{document}
>$\lim_{x\to\infty}\frac{1}{x}$\par
>\makeatletter
>\let\@oldlim=\lim
>\def\@subscript_#1{\@ifnextchar ^ {\@subsuperscript_{#1}}{\bgroup\displaystyle\@oldlim_{#1}\egroup}}
>\def\@superscript^#1{\@ifnextchar _ {\@supersubscript^{#1}}{\bgroup\displaystyle\@oldlim^{#1}\egroup}}
>\def\@subsuperscript_#1^#2{\bgroup\displaystyle\@oldlim_{#1}^{#2}\egroup}
>\def\@supersubscript^#1_#2{\bgroup\displaystyle\@oldlim^{#1}_{#2}\egroup}
>\def\lim{\@ifnextchar _ {\@subscript}{\@ifnextchar ^ {\@superscript}{\bgroup\displaystyle\@oldlim\egroup}}}
>$\lim_{x\to\infty}\frac{1}{x}$
>\end{document}
خروجی به صورت زیر است:

تعریف مجدد دستور lim\ (حالت دوم):
برای این حالت دستور lim\ را چنان تعریف میکنیم که اگر دستور frac\ بعد از دستور lim\ قرار گیرد، تغییرات اندازه فونت برا صورت و مخرج آن اعمال نشود.
این تعریف مجدد به صورت زیر است:
\makeatletter
\let\@oldlim=\lim
\def\lim{\displaystyle\@oldlim}
مثال:
کدهای زیر را در محیط ویرایشگر فارسیتک تایپ کنید:
>\documentstyle[farsi]{article}
>\begin{document}
>$\lim_{x\to\infty}\frac{1}{x}$\par
>\makeatletter
>\let\@oldlim=\lim
>\def\lim{\displaystyle\@oldlim}
>$\lim_{x\to\infty}\frac{1}{x}$
>\end{document}
خروجی به صورت زیر است:

