اگر شما هم این را با خودتان میگفتید (؟) کارهای زیر را انجام بدهید:
۱. به شاخهی زیر بروید (منظور از $$، پوشهی نصب فارسیتک است).
۲. تغییرات را ذخیره کنید (البته همیشه یک نسخه از فایل مبدا را نگهداری کنید).
۳. در قسمت start، به Run بروید و MO را اجرا کنید. بعد به قسمت TeX Formats رفته و روی فرمت FarsiTeX کلیک کنید و کلید Build را فشار دهید.
با این کار تغییرات دلخواه در فرمت فارسیتک اعمال میشود.
شاید این مطلب برای بعضیها که فارسی را روی miktex 2.5 و بالاتر نصب کردهاند، بهدرد بخور نباشد؛ اما شاید
برای آنها که miktex 2.4 را دارند، باشد!
وقتی که برای اولین بار farsitex 1.0 روی miktex 2.4 ارایه شد، خیلیها (منجمله خودم) فکر کردیم که فارسیتک، در ویندوز نقص دارد. اما مشکل آن بهخاطر کامپایلرش (etex) بود. در نشانی زیر، فایل زیپی را قرار دادهام که حاوی کامپایلر etex مربوط به miktex 2.0 است. این فایل را در دایرکتوریای که فارسیتک را در آن نصب کردهاید، unzip کنید. اگر هم دایرکتوری نصب فارسیتک، با miktex یکی است، در موقع unzip باید فایلها replace بشوند.
با این کار، مشکل فارسیتک در miktex 2.4 حل میشود (هر چند فکر میکنم هیچ کس حالا از 2.4 استفاده نکند!).
قبلاً دستور \stackrel را برای قرار دادن یک متن در بالای علائم ریاضی مانند مساوی، فلش و ... معرفی کردم اما بنا بر نیاز یکی از دوستان این پست به عکس این مطلب میپردازد یعنی قرار دادن یک متن در زیر علامت ریاضی.
ابتدا \undertext را به صورت زیر تعریف کنید:
>\def\undertext#1#2{\mathrel{\mathop{#2}\limits_{#1}}}
سپس در محیطهای ریاضی برای قرار دادن یک متن در زیر یک علامت به شکل زیر از این دستور استفاده کنید:
>\undertext{Text}{Symbol}
Text همان متن مورد نظر است.
Symbol همان علامت مورد نظر است. مانند = ، \to و ...
توجه: این دستور با تغییر تنها یک کاراکتر در تعریف دستور \stackrel بدست آمده است پس تمام خصوصیاتش مانند دستور \stackrel است. پس متن مورد نظر کوچکتر از علامت ریاضی است. اگر تاکید دارید که متن و علامت هم اندازه باشند، دستور را به صورت زیر تغییر دهید:
>\def\undertext#1#2{\mathrel{\mathop{#2}\limits_{\mbox{#1}}}}
البته اگر از FarsiTeX 1.0 Pre 1 استفاده نمیکنید، باید به جای mbox\ از farmbox\ استفاده کنید.
در پست قبلی با برخی دستورهای فایل ffancyhe.sty که برای تولید پاصفحه و سرصفحه استفاده میشود، آشنا شدیم. اما متاسفانه سبک صفحه fancy به طور پیشفرض درست نیست. چون حتی در سبک oldbook نیز شماره صفحه در تمام صفحهها، در پایین برگه چاپ میشود در حالیکه رسم بر آن است که شماره نیز در بالای صفحه باشد.
برای این دسته از دوستان کمی تغییرات انجام دادم تا شماره صفحات نیز به بالای صفحه منتقل شود. با استفاده از کدهای زیر در مقدمه سند میتوانید تغییرات لازم را اعمال کنید:
>\makeatletter
>\rhead{\ifodd\c@page\rm\thepage\else\sl\leftmark\fi}
>\lhead{\ifodd\c@page\sl\leftmark\else\rm\thepage\fi}
>\cfoot{}
>\makeatother
توجه: این تغییرات را تنها برای سبکهایی مثل oldbook به کار ببرید که twoside هستند و برای oldreport و oldarticle که twoside نیستند به کار نبرید! اگر میخواهید در oldreport نیز شماره صفحه به بالای صفحه منتقل شود، در قسمت نظرات بگویید که کدهای را در اختیارتان قرار دهم.
این بسته رو از اینجا می توانید دانلود کنید. (این بسته را در قسمت پیوند های روزانه هم برای دانلود گذاشته ام) طریقه ی نصب در این بسته توضیح داده شده است.
ان شا الله این کارها برای فارسی تک ادامه داشته باشد...![]()
کاربرانی که در فارسی تک به تایپ فرمولهای ریاضی پرداختهاند، میدانند که وقتی شما از دستور 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}
خروجی به صورت زیر است:

در ضمن حل کلی این مشکل نیاز به بررسی تمام کدهای مربوط به محیط tabular و دستور footnote\ دارد. پس تا بررسی کامل این کدها، از این روش استفاده کنید.![]()
یکی از راههایی که با آن می توانید مشکل پانویس (footnote) را در محیط tabular حل کنید، استفاده از روش زیر است.
در ابتدا باید بر اساس نیاز خود تعدادی شمارنده تعریف کنید. این تعداد برابر بیشترین پانویس استفاده شده در کلیه جدولهای سند شماست. این مقدار معمولاً بین 1 تا 3 است. پس ما حداکثر معمول را در نظر می گیریم و 3 شمارنده تعریف می کنیم. برای این کار، کدهای زیر را در بین ...documentstyle\ و {begin{document\ قرار دهید:
>\newcounter{foottemp1}
>\newcounter{foottemp2}
>\newcounter{foottemp3}
حال در هر کجای جدول که می خواهید پانویس قرار دهید، دو دستور زیر را در حالت خط انگلیسی تایپ کنید (تایپ آنها در حالت خط فارسی مشکلی ایجاد نمی کند و نوشتن اسن دستورات در حالت خط انگلیسی راحت تر است):
>\footnotemark
>\setcounter{footnote temp counter}{\value{footnote}}
footnote temp counter یکی از شمارنده هایی است که قبلاً برای این کار تعریف شده است. برای مثال چون من شمارنده های foottemp1 و foottemp2 و foottemp3 را تعریف کرده ام، در اینجا از یکی از همین شمارنده ها استفاده می کنم.
اکنون در بعد از دستور پایان محیط tabular یعنی دستور {end{tabular\ دستور زیر را تایپ کنید:
>\footnotetext[\value{footnote temp counter}]{your footnote text}
footnote temp counter یکی از همان شمارنده هایی است که قبلاً تعریف کرده اید و در محیط جدول آنرا تعریف کرده اید.
yout footnote text متن پانویس شما برای همان کلمه مورد نظر است.
توجه کنید که برای هر پانویسی که در جدول به کار برده اید باید این دستور را به کار برید. (به مثال مراجعه کنید)
به خاطر اینکه هیچ یک از دستورات به کار برده شده را نمی دانید و توضیحی در مورد عملکرد آنها در این پست داده نشده است، مطلب این پست تا حدودی مبهم است. برای رفع ابهامات موجود لطفاً به مثال مراجعه کنید. در پست های بعدی به توضیح تمام دستورات به کار رفته در این پست پرداخته می شود.
مثال را از اینجا دریافت نمایید.
تولید خروجی مستقیم pdf
سلام. حتما می دونید که هدف نهایی از به کار بردن فارسی تک تولید خروجی pdf از اون هست. برا همین شماها تا حالا میومدین از پروسه ی روبرو استفاده می کردین: ftx--->dvi--->ps--->pdf . اما با روشی که الان بهتون می گم می تونین مراحل dvi و ps رو حذف کنین.
برای این کار ابتدا به دایرکتوری localtexmf/miktex/bin رفته و روی فایل goftex.bat کلیک راست کنید و خط آخرش رو به عبارت pdfetex "&fapdftex" %2 تغییر بدین. از این به بعد هنگام Run کردن فارسی تک به جای فایل dvi ، فایل pdf خواهید داشت. ولی یه چیزی رو دقت داشته باشین، اگه می خواین از این تغییری که من گفتم استفاده کنین و هنگام عکس گذاشتن هم به مشکل بر نخورین، حتما برای عکس گذاشتن از روش جدیدش یعنی از ماکروی fgraphix.sty استفاده کنین.
حل یک باگ در فارسی تک
اگه دقت کرده باشین، وقتی می خواین در فارسی تک جدید از دستور \part استفاده کنین، یه کلمات نامفهوم به جای عبارتی مثل "بخش" تو خروجی ظاهر میشه. برای حل این مشکل به دایرکتوری localtexmf\tex\farsitex\base\persian رفته و فایل fcaption.ftx رو باز کنین و حالا عبارت
\partname\DeclareRobustBiSomethingName{بخش} رو اضافه کنین. حالا ترکیب کلید Ctrl+F7 رو فشار بدین.
سخنی با شما کاربران عزیز
کفگیر مطالب من به ته دیگ خورده. از طرفی فارسی تک واقعا باگ زیاد داره. ما واقعا نیروی متخصص در زمینه ی LaTeX (شخصی مثل آقای واحدی و بقیه گردانندگان این وبلاگ(نه بنده!)) کم داریم. از شما عزیزان عاجزانه! تقاضا داریم که اگه خودتون متخصص هستید و یا افراد متخصصی رو میشناسید که وقت و حوصله ی کافی برای مشکلات فارسی تک دارن به ما معرفی کنید تا اونا هم به جمع گردانندگان این وبلاگ یا همکاران این وبلاگ بپیوندن. چون اگه یه نفر بخواد با فارسی تک یه کتاب یا مقاله ی تز بنویسه واقعا بعضی جاها فارسی تک کفر آدم رو بالا میاره!
من به شخصه قبول دارم که حمل کردن فارسی تک به LaTeX2e شاید خیلی دشوار و حتی غیر ضروری باشه و به جای حمل کردن فارسی تک به LaTeX2e بهتره که همین فارسی تک فعلی رو تا حد امکان کم باگ کنیم. البته بعضی از باگها هستند که با وجود LaTeX2.09 هرگز رفع نمیشن. نمونش همین bold کردن علایم بزرگی مثل سیگما و انتگرال در حالت ریاضی و اساسا علت ارتقا دادن LaTeX2.09 به LaTeX2e هم وجود چنین باگهایی بوده. البته معادلهای دیگه ای هستن که خیلی بهتر از فارسی تک نوشته شدن مثل TeX پارسی و با LaTeX2e هم سازگارن.
دیگه از این بعد روال کار این طوری باشه که باگهای فارسی تک مطرح بشن و افراد متخصص هم کم فروشی نکنن و اگه می دونن راه حل باگ رو بگن. منتظر نظرات شما به این پست می مونم.
موفق باشید...
زیرنویس در محیط جدول
دوست خوبمون آمیر آقا با زیرنویس در محیط tabular مشکل داشتن.
جالبه که بدونید این مشکل تنها متعلق به فارسی تک نیست و از latex بهش به ارث رسیده و حتی در latex2e هم رفع نشده.
بااستفاده از محیط minipage میشه این مشکل رو حل کرد.
\begin{minipage}{\linewidth}
\begin{center}
\begin{tabular}{|l|l|}\hline
1&2\footnote{زیرنویس}\\ \hline
3&4\\ \hline
\end{tabular}
\end{center}
\end{minipage}
تنها میمونه شمارنده زیرنویس ها که به این شکله a,b,c,… و برای تغیر دادنش پکیج هایی نیازه که کار کمی مشکل میشه. اینم از خروجیش :

\input{threeparttable.sty}
\english
\begin{center}
\begin{threeparttable}
\caption[Example of a threeparttable
environment]{\bf{PostScript Type 1 fonts}}
\begin{tabular}{@{}|l|l|@{}}\hline
Courier\tnote{1} & cour, courb, courbi, couri \\ \hline
Charter\tnote{2} & bchb, bchi, bchr, bchri \\\hline
Nimbus\tnote{3} & unmr, unmrs\\ \hline
URW Antiqua\tnote{3} & uaqrrc\\ \hline
URW Grotesk\tnote{3} & ugqp\\ \hline
Utopia\tnote{4}& putb, putbi, putr, putri\\ \hline
\end{tabular}
\begin{tablenotes}
\item[1] Donated by IBM.
\item[2] Donated by Bitstream.
\item[3] Donated by URW GmbH.
\item[4] Donated by Adobe.
\end{tablenotes}
\end{threeparttable}
\end{center}
اینم از خروجیش :

اول از همه یه چیزو بگم. از این به بعد آموزش های من برای نسخه ی farsitex1.0pre1 هست. لااقل این جوری شاید مجبور بشین که این نسخه رو نصب کنین. یه patch هم برای این نسخه ی فارسی تک تو قسمت پیوندهای روزانه گذاشتم که دانلود کنین. از اینجا هم می تونین بگیرینش. این patch رو به دایرکتوری localtexmf\miktex\bin کپی کنین. یعنی فایلهای patch رو باید با قدیمیاش replace کنید.
1- معادلات محیط equation با شماره بندی شماره فرمول- شماره بخش- شماره فصل، با این شرط که در هر بخش شمارهreset بشه:
برای این کار در مقدمه ی پرونده تون دستور زیر رو تایپ کنین:
\makeatletter
\@addtoreset{equation}{section}
\renewcommand{\theequation}{\thesection\digitsdash\arabic{equation}}
\makeatother
2- سیاه کردن فرمول ریاضی در همه حالات(متاسفانه برای اندیس یا نمای لاتین و همچنین برای علایمی مثل سیگمای بزرگ، انتگرال و ... کار نمیکنه.)
برای اینکار اگه تو محیط $$ (و هر محیط ریاضی دیگه) می خواین فرمولتون سیاه بشه از دستور \boldmath باید استفاده کنین. دو مثال می زنم و خروجیش رو هم نشون می دم:
ورودی:
\boldmath $\cos 2\theta=\cos^2{\theta}-\sin^2{\theta}$
خروجی:
ورودی:
\begin{equation}
\mbox{$\boldmath \displaystyle\sum^{\infty}_{i=1}\frac{1}{i^2}=\frac{\pi^2}{6}$}\qquad v^2-v^{2}_{0}=2a\Delta x
\end{equation}
خروجی:
3- یه مطلب متفرقه:
تو فارسی تک نسخه جدید اگه یه } یا ] باز کنین خود به خود دو تا باز میشه! این خاصیت جدید گاهی وقتا برای من آزار دهنده بود، اگه برای شما هم هست، کاری که میگمو انجام بدین تا بیشتر از این مورد آزار واقع نشین!:
به دایرکتوری localtexmf\miktex\bin برین و فایل options.ftc رو با نوت پد باز کنین و در خط
pair_brackets_and_braces: yes
عبارت yes رو به no تغییر بدین.
موفق باشید...
راه حل مشکل tabular
بعضی از کاربران farsitex1.0pre1 با کشیدن جدول مشکل دارن. یکیش من بودم. بسیار عجیبه و علتش رو هم نمی دونم. اینکه چرا MiKTeX2.4 بعضی اوقات فارسی تک رو به عنوان فرمتی از LaTeX که می تونه جدول درست کنه قبول نداره، سوالیه که برام بی جواب مونده. ولی با یک تلنگر به MiKTeX2.4 این مشکل حل میشه. این تلنگر رو من با دستورای زیر برای تولید جدول (به جای استفاده از دستورات معمول تولید جدول در farsitex1.0pre1 ) به MiKTeX2.4 زدم:( مثلا یه جدول 2*2)
\english
\begin{tabular}{|c|c|}
\hline \hbox{یه کلمه ی فارسی} & \hbox{یه کلمه ی فارسی} \\
\hline \hbox{یه کلمه ی فارسی} & \hbox{یه کلمه ی فارسی} \\
\hline
\end{tabular}
جالب اینجاست که بعد از زدن این ترفند دیگه فارسی تک به روش معمولی یعنی به روش زیر هم جدول بی نقص تولید کرد!:
{|و|و|{{tabular}begin\
\\ یه کلمه & یه کلمه hline\
\\ یه کلمه & یه کلمه hline\
hline\
{tabular}end\
و باز جالب تر اینکه وقتی farsitex1.0pre1 رو uninstall و دوباره نصب کردم، باز هم مشکل جدول حل شده بود(به روش معمولی)!
راه حل مشکل نمایه ساز
دوست گرامیم آقای مصطفی واحدی(از اعضای پروژه ی فارسی تک) این مشکل رو حل کرده که با هم می خونیم:
اول این فایل رو دانلود کنین. بعدش فایل دانلود شده رو به یه جای دلخواه (نه دایرکتوری فارسی تک) unzip کنین و فایل dos2unix.exe رو به دایرکتوری localtexmf\miktex\bin کپی کنین. حالا رو fmakeidx.bat کلیک راست کرده و گزینه ی Edit رو انتخاب کنین و محتوای فایل رو به زیر تغییر بدین:
@echo off
%3
cd %1
echo Farsi Make Index will now be executed.
dos2unix -c 7bit %2.idx
fmakeidx.exe %2.idx
و مشکل نمایه ساز هم حل شد.
موفق باشید ...
یکی از مشکلات کاربران فارسی تک نسخه ی جدید اینه که اونا نمی تونن خودشون فایل جدیدی بسازن. ولی می تونن فایلای قبلی فارسی تک رو به قول معروف view کنن. این مشکل از اونجا ناشی میشه که در source فایل goftex.bat یه اشتباهی رخ داده source .فایل مزبور اینه:
@echo off
%3
cd %1
ftx2tex %2
etex "&farsitex" %2
و راه حل این مشکل اینه که در خط سوم عبارت ftx. باید اضافه بشه. یعنی خط سوم به صورت زیر تغییر باید بکنه:
ftx2tex %2.ftx
برای انجام این تغییرات به دایرکتوری localtexmf/miktex/bin برین و رو فایل goftex.bat کلیک راست کرده و گزینه ی Edit رو انتخاب کنین. حالا کارای گفته شده رو انجام بدین.
فعلا...
